Semaphore UI Privilege Escalation via Custom Role Slug Collision
Semaphore UI is vulnerable to a privilege escalation where a project manager can create a colliding custom role slug to assign themselves owner-level permissions, bypassing access controls.
CVE search metadata
CVE search record: CVE-2026-73293. Severity: high. CVSS: 8.8. EPSS: 0.40%. KEV: no. Product: Semaphore (< 0.0.0-20260705182501-bb2a4e1f08c8). Brief: Semaphore UI Privilege Escalation via Custom Role Slug Collision. Brief link: https://feed.craftedsignal.io/briefs/2026-09-semaphore-privilege-escalation/
Semaphore UI, a web-based automation platform, contains a critical privilege escalation vulnerability (CVE-2026-73293) in its custom project role management feature. A project member assigned the 'manager' role can escalate their privileges to those of a project owner by exploiting a slug collision vulnerability during the custom role creation process. The application's ProjectMiddleware incorrectly resolves effective permissions by prioritizing database role rows that match a user's assigned role slug. Because the API route POST /api/project/{id}/roles does not reserve built-in slug names (such as 'manager' or 'owner') or enforce a permission ceiling, a manager can create a custom role with the slug 'manager' and set the permission bitmask to the value of an owner. This flaw allows a malicious project manager to gain administrative control over the project, including the ability to change project settings, modify other project members, or demote the legitimate project owner.
Attack Chain
- The attacker is assigned the built-in 'manager' role within a target project.
- The attacker authenticates to the Semaphore UI and confirms their current restricted permission state via
GET /api/project/{id}/role. - The attacker crafts a
POSTrequest to/api/project/{id}/rolescontaining a JSON payload withslug: "manager"andpermissions: 15. - The application processes the request, creating a new role row in the database with the colliding slug 'manager' and the elevated permission bitmask.
- On the next API request, the
ProjectMiddlewareexecutesGetProjectOrGlobalRoleBySlug, which fetches the attacker-created role row. - The application overwrites the manager's effective permission bitmask with the elevated value from the database row.
- The attacker performs previously unauthorized actions, such as
PUT /api/project/{id}to modify project settings orPOST /api/project/{id}/usersto alter member access levels.
Impact
Successful exploitation allows a project manager to effectively act as a project owner. This results in complete control over project resources, unauthorized access to sensitive project settings, the ability to remove or demote other users, and the potential for project deletion. This vulnerability affects instances utilizing the PRO build of Semaphore UI where custom project roles are active.
Recommendation
Update Semaphore UI to version 0.0.0-20260705182501-bb2a4e1f08c8 or later to resolve CVE-2026-73293. For current deployments, monitor web server logs for POST requests to /api/project/*/roles from users with the 'manager' role that attempt to define reserved slugs such as 'manager', 'owner', 'task_runner', or 'guest'.
Immediate actions
Upgrade Semaphore UI to 0.0.0-20260705182501-bb2a4e1f08c8 or later.
Mitigations
Monitor web logs for POST /api/project/*/roles for unauthorized slug creation.
CVE-2026-73293