Skip to main content

Warpgate EUVDEUVD-2026-84065

| CVE-2026-91167 MEDIUM
Missing Authorization (CWE-862)
2026-09-21 GitHub_M
6.0
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as limited administrator
  2. Delivery
    Identify user with existing revoked/expiring role grant
  3. Exploit
    Send PUT to users/:id/roles/:role_id endpoint
  4. Execution
    Clear revoked_at or extend expires_at
  5. Impact
    Reinstate or prolong privileged access grant

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated Warpgate limited administrator account holding any admin permission (PR:L) - this is not remote-unauthenticated. Deployment must use delegated/limited admin roles rather than a single full superadmin, otherwise the privilege boundary being crossed does not exist. Exploitation is further limited by a hard precondition: a UserRoleAssignment matching the targeted user and role must ALREADY exist (the endpoint returns not-found otherwise), so the attacker can only extend expires_at or clear revoked_at on pre-existing grants and cannot create net-new role assignments. Meaningful impact depends on a targeted assignment being one that was recently revoked or is set to expire. Affects Warpgate versions prior to 0.28.4 on Linux.

Impact

This is a genuine but constrained authorization flaw (CWE-862) - real, but a moderate rather than urgent priority. The vendor CVSS 4.0 vector (6.0, AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N) tells the real story: exploitation is network-reachable and low-complexity, but requires an already-authenticated limited administrator (PR:L) and, critically, an attack-requirement condition (AT:P) - a matching user/role assignment must already exist because the endpoint returns not-found for any user+role pair that has never been assigned. Impact is integrity-only (VI:H) with no confidentiality or availability effect: an attacker can only extend expires_at or clear revoked_at on a pre-existing grant, not mint arbitrary new access. Signals are consistent, not conflicting: no EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of active or automated exploitation - the fix commit ships only a test update, not a weaponizable exploit. The main caveat is the impact metric: the vendor rated integrity High, but because the change is limited to two lifecycle fields on an existing record, an independent read leans toward Low-to-Moderate integrity unless the reinstated grant is an administrative role. Net: a defense-in-depth privilege-boundary bug affecting only environments that already delegate limited-admin roles.

Exploit ScenarioDerived

An organization grants a helpdesk operator a Warpgate limited-admin role with some non-role-assignment permission. That operator sends PUT /@warpgate/admin/api/users/:id/roles/:role_id against a user whose elevated role was recently revoked (or is about to expire), clearing revoked_at or pushing out expires_at to silently reinstate/prolong that access. No public exploit code was identified; exploitation requires the target user/role assignment to already exist.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 21, 2026

Missing authorization in Warpgate's admin API allows an authenticated limited administrator who holds any single admin permission to extend an expiring role grant or reinstate a previously revoked one via PUT /@warpgate/admin/api/users/:id/roles/:role_id, bypassing the AdminPermission::AccessRolesAssign check that should gate role-assignment changes. Only Warpgate deployments prior to 0.28.4 on Linux that use delegated/limited admin roles are exposed, and exploitation has a hard precondition: a matching user-and-role assignment must already exist, so an attacker cannot mint a net-new grant and the impact is integrity-only (assessed CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N). This is a genuine but constrained privilege-boundary flaw rather than an urgent one, and no public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: 0.28.4 - upgrade Warpgate to 0.28.4 or later, which adds the missing admin.require(AdminPermission::AccessRolesAssign) check to api_update_user_role (see the release at https://github.com/warp-tech/warpgate/releases/tag/v0.28.4, commit https://github.com/warp-tech/warpgate/commit/c020900a9d85989e4280bd03184976bc33e2e61d, and advisory https://github.com/warp-tech/warpgate/security/advisories/GHSA-fjgc-484v-j6mf). If immediate upgrade is not possible, reduce exposure by auditing which accounts hold any admin permission and temporarily narrowing delegated admins to only those who are trusted, since the attack requires an authenticated limited-admin session; note that consolidating administration into a single superadmin account removes the privilege boundary the bug crosses but sacrifices least-privilege separation and audit granularity. Because exploitation requires a pre-existing user/role assignment, an interim compensating control is to review all UserRoleAssignment records for sensitive roles and permanently delete (rather than merely revoke) assignments that must not be reinstated, since the vulnerable endpoint can only clear revoked_at on an existing row and cannot recreate a deleted one - the trade-off is loss of revocation history for audit purposes. Additionally, monitor or alert on unexpected changes to expires_at or revoked_at values on privileged role assignments, and consider blocking the PUT /@warpgate/admin/api/users/:id/roles/:role_id route at a reverse proxy or restricting admin API reachability to trusted management networks, though this is a blunt control that will break legitimate delegated role management until the patch is applied.

Affected VersionsENISA

warpgate < 0.28.4

Affected Packages

euvd warpgate fix: 0.28.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Warpgate is an open-source SSH, HTTPS and MySQL bastion host for Linux that brokers access to internal targets and stores per-user role assignments with optional expiry (expires_at) and revocation (revoked_at) timestamps. The affected component is the admin HTTP API implemented in Rust under warpgate-admin/src/api/users.rs: the handler api_update_user_role, reached through AdminContext for PUT /@warpgate/admin/api/users/:id/roles/:role_id, mutated an existing UserRoleAssignment without calling admin.require(AdminPermission::AccessRolesAssign). This is a textbook CWE-862 (Missing Authorization) failure - the endpoint enforced authentication and reached an authorization context, but omitted the specific permission check required for role-grant administration, so any limited administrator holding an unrelated permission (for example user read or target management) inherited the ability to modify role assignment lifecycle fields. By changing expires_at the attacker can silently prolong a grant that was about to lapse, and by clearing revoked_at they can reactivate a grant that an administrator had explicitly withdrawn; both operations are integrity-only - no data is read, no new assignment is created, and the API returns not-found when no matching user/role pair exists. Warpgate identifies itself in CPE as cpe:2.3:a:warp-tech:warpgate (vendor warp-tech), and the fix in the upstream commit c020900a9d85989e4280bd03184976bc33e2e61d adds the missing admin.require(AdminPermission::AccessRolesAssign)? call while simultaneously tightening the test fixture in tests/test_api.py so the limited-admin role payload now carries permission="access_roles_assign" instead of None.

Know when Warpgate gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Network-reachable but requires a limited-admin account (PR:L) and a pre-existing role assignment (modeled as AC:H); integrity-only since it alters authorization grant lifecycle, with no confidentiality or availability effect.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 21, 2026 - 20:02 EUVD
CVE Published
Sep 21, 2026 - 18:54 cve.org
MEDIUM 6.0

DescriptionCVE.org

Warpgate is an open source SSH, HTTPS and MySQL bastion host for Linux. Prior to 0.28.4, PUT /@warpgate/admin/api/users/:id/roles/:role_id reaches api_update_user_role in warpgate-admin/src/api/users.rs through AdminContext but does not require AdminPermission::AccessRolesAssign. A limited administrator with any permission can update expires_at on an existing UserRoleAssignment and clear revoked_at, extending an expiring grant or reinstating a revoked grant. The endpoint cannot create a role assignment that never existed because it returns not found without a matching user and role pair. This issue is fixed in version 0.28.4.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
niche open-source SSH/HTTPS/MySQL bastion host, small self-hosted footprint
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2026-58491 CRITICAL POC
9.3 Sep 21

Stored cross-site scripting and open redirect in Warpgate's SSO endpoints (versions prior to 0.25.5) allow an unauthenti

CVE-2024-43410 HIGH POC
7.5 Aug 21

Russh is a Rust SSH client & server library. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,

CVE-2023-48712 HIGH
8.8 Nov 24

Warpgate is an open source SSH, HTTPS and MySQL bastion host for Linux. Rated high severity (CVSS 8.8), this vulnerabili

CVE-2023-37268 HIGH
8.8 Jul 14

Warpgate is an SSH, HTTPS and MySQL bastion host for Linux that doesn't need special client apps. Rated high severity (C

CVE-2023-43660 HIGH
8.1 Sep 27

Warpgate is a smart SSH, HTTPS and MySQL bastion host for Linux that doesn't need special client apps. Rated high severi

CVE-2026-63330 HIGH
7.7 Sep 21

Missing authorization checks on Warpgate's recording-stream WebSocket let any authenticated user with an ordinary accoun

CVE-2026-44347 MEDIUM
5.8 May 12

SSO login flow in Warpgate bastion host prior to 0.23.3 omits validation of the OAuth state parameter, enabling a cross-

CVE-2026-91166 MEDIUM
5.7 Sep 21

Host-key trust confusion in Warpgate's browser SSH client (warpgate-web-ssh) lets a malicious or compromised SSH jump ho

CVE-2026-63329 MEDIUM
4.9 Sep 21

Identity-header forwarding in the Warpgate SSH/HTTPS/MySQL bastion host prior to version 0.25.6 lets an authenticated us

CVE-2026-91164 MEDIUM
4.3 Sep 21

IP allow-list enforcement in Warpgate 0.23.0 through 0.27.2 is bypassed for HTTP API token authentication: when a user h

CVE-2026-91165 LOW
2.4 Sep 21

Markup injection in Warpgate's form_post SSO return interstitial (warpgate-protocol-http/src/api/sso_provider_list.rs) a

CVE-2025-54804 MEDIUM POC
6.5 Aug 05

Russh is a Rust SSH client & server library. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitabl

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy