ZeroHour

CVE-2026-91994

moderate

Missing Authorization in Semaphore UI Leaks Project Secrets to Low-Privilege Users

CVSS 4.0
7.1 high
EPSS
Published
()
Modified
AI analysis

Semaphore UI through version 2.19.12 fails to enforce project-level permission checks on GET and HEAD requests due to a flaw in the GetMustCanMiddleware, tracked as CVE-2026-91994 (CVSS 4.0: 7.1, CWE-862 missing authorization). An authenticated attacker holding a low-privilege role such as guest or task_runner can simply issue a GET request to the environment endpoint for any project, bypassing the authorization they should be subject to. This exposes all project environments, including plaintext secrets, credentials, and passwords, which often contain Ansible/SSH keys, API tokens, and infrastructure passwords in Semaphore deployments. Any organization self-hosting Semaphore UI at or below 2.19.12 with multi-user access (especially guest or task_runner accounts) is affected. No public proof-of-concept exists and the flaw is not in CISA's Known Exploited Vulnerabilities catalog, so exploitation status is none known.

What to do: Upgrade Semaphore UI to a release newer than 2.19.12 as soon as a fixed version is available. Until then, restrict network access to the Semaphore instance (VPN/allowlist), remove or suspend unnecessary guest and task_runner accounts, and audit access logs for GET/HEAD requests to environment endpoints made by low-privilege users. Rotate all secrets, credentials, and passwords stored in Semaphore project environments, since any low-privilege user may have already read them in plaintext.

Affected
Semaphore UIthrough 2.19.12 (all versions <= 2.19.12)
Estimated exposure
moderatelikely on the order of a few thousand internet-exposed self-hosted instances (10^3-10^4), plus an unknown number on internal networks — Semaphore UI is a self-hosted open-source DevOps automation tool; public scan engines and its self-hosting deployment pattern typically show low-thousands of internet-reachable instances, though total internal deployments are unknown.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Semaphore UI through 2.19.12 exempts GET and HEAD requests from project resource permission checks in GetMustCanMiddleware. Attackers with guest or task_runner roles can read all project environments including plaintext secrets, credentials, and passwords via GET requests to the environment endpoint.

Weakness
CWE-862
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.