Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as limited administrator
-
DeliveryIdentify user with existing revoked/expiring role grant
-
ExploitSend PUT to users/:id/roles/:role_id endpoint
-
ExecutionClear revoked_at or extend expires_at
-
ImpactReinstate 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Stored cross-site scripting and open redirect in Warpgate's SSO endpoints (versions prior to 0.25.5) allow an unauthenti
Russh is a Rust SSH client & server library. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,
Warpgate is an open source SSH, HTTPS and MySQL bastion host for Linux. Rated high severity (CVSS 8.8), this vulnerabili
Warpgate is an SSH, HTTPS and MySQL bastion host for Linux that doesn't need special client apps. Rated high severity (C
Warpgate is a smart SSH, HTTPS and MySQL bastion host for Linux that doesn't need special client apps. Rated high severi
Missing authorization checks on Warpgate's recording-stream WebSocket let any authenticated user with an ordinary accoun
SSO login flow in Warpgate bastion host prior to 0.23.3 omits validation of the OAuth state parameter, enabling a cross-
Host-key trust confusion in Warpgate's browser SSH client (warpgate-web-ssh) lets a malicious or compromised SSH jump ho
Identity-header forwarding in the Warpgate SSH/HTTPS/MySQL bastion host prior to version 0.25.6 lets an authenticated us
IP allow-list enforcement in Warpgate 0.23.0 through 0.27.2 is bypassed for HTTP API token authentication: when a user h
Markup injection in Warpgate's form_post SSO return interstitial (warpgate-protocol-http/src/api/sso_provider_list.rs) a
Russh is a Rust SSH client & server library. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitabl
EUVD-2026-84065
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB