highCVSS 8.8Vulnerability

CVE-2026-73293

## Summary 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. ## Affected semaphoreui/semaphore v2.18.12 (current latest as of 2026-06-09) and `develop` HEAD. Confirmed live-exploitable on v2.18.12 (commit 8a4dcf0); the affected files are unchanged on `develop` with no fix commit since the tag. Earlier releases that ship PRO custom project roles are likely affected but were not tested. Requires the PRO build (custom project roles). The official `semaphoreui/semaphore` Docker image ships this feature active by default, with no subscription or configuration flag. Pure community builds without custom project roles are not affected: the role-creation endpoint returns 404 there. ## Root cause `ProjectMiddleware` reads the member's built-in role permissions, then calls `GetProjectOrGlobalRoleBySlug` and, when a role row shares the

Properties

severity
high
summary
Semaphore UI: Manager-to-owner privilege escalation via custom-role slug collision
epss_score
0.00401
cvss_score
8.8
ghsa_published
2026-09-03T19:23:42Z
source_url
https://github.com/advisories/GHSA-cxvf-gvfq-36w2
ghsa_updated
2026-09-03T19:23:44Z
ghsa_id
GHSA-cxvf-gvfq-36w2
cve_id
CVE-2026-73293
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
is_ghsa_only
false
epss_percentile
0.33278

Related Entities (5)

ENRICHED_BY (1)

[Source]FIRST EPSS

VULNERABLE_TO (1)

[Software]go/github.com/semaphoreui/semaphore

AFFECTS (1)

[Software]go/github.com/semaphoreui/semaphore

HAS_WEAKNESS (1)

[Weakness]Improper Privilege Management

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-73293 (CVSS 8.8) — Ninja Signal Threat Intelligence | Ninja Signal