CVE-2026-73293: Semaphore UI: Manager-to-owner privilege escalation via custom-role slug collision
Semaphore resolves a project member’s effective permissions in ProjectMiddleware by looking up a role row whose slug matches the member’s assigned role, and overwrites the built-in permission bitmask with that row’s value. A member holding the built-in manager role creates a custom project role through POST /api/project/{id}/roles, a route gated only by the CanManageProjectResources permission that manager already holds.
The role-creation validator does not reserve the built-in slug names (owner, manager, task_runner, guest) and sets no ceiling on the permission bits a caller may grant. A manager creates a role with slug manager carrying the full bitmask 15, including the two owner-only bits CanUpdateProject and CanManageProjectUsers that manager does not hold. The slug lookup that backs permission resolution ignores project scope, so this attacker-created row is returned on the next request and the manager’s effective permissions become owner-equivalent.
Result: a project manager escalates to full owner of the project with one authenticated request, then adds or removes members, changes project settings, deletes the project, or demotes the legitimate owner.
References
- github.com/advisories/GHSA-cxvf-gvfq-36w2
- github.com/semaphoreui/semaphore/commit/1c4bb65df114962134f8829d4a03667106a01a68
- github.com/semaphoreui/semaphore/commit/bb2a4e1f08c8023e618f8dd6eaca73554f2c33bb
- github.com/semaphoreui/semaphore/releases/tag/v2.18.19
- github.com/semaphoreui/semaphore/releases/tag/v2.19.5-beta5
- github.com/semaphoreui/semaphore/security/advisories/GHSA-cxvf-gvfq-36w2
- nvd.nist.gov/vuln/detail/CVE-2026-73293
Code Behaviors & Features
Detect and mitigate CVE-2026-73293 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →