{"id":"CVE-2026-91167","summary":"Warpgate: Missing authorization check on `PUT /users/:id/roles/:role_id` allows any admin to bypass the `AccessRolesAssign` permission boundary","details":"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.","aliases":["GHSA-fjgc-484v-j6mf"],"modified":"2026-09-24T03:30:58.619383669Z","published":"2026-09-21T18:54:38.214Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-862"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91167.json"},"references":[{"type":"WEB","url":"https://github.com/warp-tech/warpgate/releases/tag/v0.28.4"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91167.json"},{"type":"ADVISORY","url":"https://github.com/warp-tech/warpgate/security/advisories/GHSA-fjgc-484v-j6mf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-91167"},{"type":"FIX","url":"https://github.com/warp-tech/warpgate/commit/c020900a9d85989e4280bd03184976bc33e2e61d"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/warp-tech/warpgate","events":[{"introduced":"0"},{"fixed":"c020900a9d85989e4280bd03184976bc33e2e61d"},{"fixed":"8e4c1dac18e4eda50ba18c78b22d9fe63c22aa7b"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"0.28.4"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["v0.28.3","v0.28.2","v0.28.1","chart-v0.0.8","v0.28.0","v0.28.0-beta.4","v0.28.0-beta.3","v0.28.0-beta.2","v0.27.5","v0.28.0-beta.1","v0.27.4","v0.27.3","v0.27.2","v0.27.1","chart-v0.0.7","v0.27.0","v0.27.0-beta.5","v0.27.0-beta.4","v0.27.0-beta.3","v0.27.0-beta.2","chart-v0.0.6","v0.27.0-beta.1","v0.26.0","v0.26.0-beta.1","v0.25.5","v0.25.4","v0.25.3","v0.25.2","v0.25.1","v0.25.0","v0.24.0","chart-v0.0.5","v0.23.4","v0.23.3","v0.23.2","v0.23.1","v0.23.0","chart-v0.0.4","0.22.0-dl","v0.22.0-beta.6","v0.22.0-beta.5","v0.22.0-beta.4","v0.22.0-beta.3","chart-v0.0.3","chart-v0.0.2","v0.22.0-beta.2","v0.22.0-beta.1","v0.21.1","v0.21.0","v0.20.2","v0.20.1","v0.20.0","v0.19.1","v0.19.0","v0.18.0","v0.17.0","v0.16.0","v0.15.0","v0.15.0-beta.2","v0.15.0-beta.1","v0.14.1","v0.14.0","v0.14.0-beta.3","v0.14.0-beta.2","v0.14.0-beta.1","v0.13.2","v0.13.1","v0.13.0","v0.13.0-beta.2","v0.13.0-beta.1","v0.12.0","v0.12.0-beta.2","v0.12.0-beta.1","v0.11.0","v0.10.2","v0.10.1","v0.10.0","v0.9.1","v0.9.0","v0.8.1","v0.8.0","v0.7.4","v0.7.3","v0.7.2","v0.7.1","v0.7.0","v0.6.6","v0.6.5","v0.6.4","v0.6.3","v0.6.2","v0.6.1","v0.5.0","v0.4.0","v0.3.0","v0.2.0","v0.2.2","v0.2.1","v0.1.1","v0.1.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-91167.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}