Skip to main content

Semaphore UI CVE-2026-73294

| EUVDEUVD-2026-57320 CRITICAL
OS Command Injection (CWE-78)
2026-08-12 GitHub_M GHSA-xp7j-h7jc-4w8p
9.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain project Manager/Owner account
  2. Delivery
    Submit repository with git_url '--upload-pack=/tmp/evil.sh'
  3. Exploit
    git ls-remote parses value as option
  4. Execution
    Scheduled polling triggers execution
  5. Persist
    Arbitrary OS commands run as Semaphore process
  6. Impact
    Full server/host compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated account holding the project Manager or Owner role (PR:L); it is not exploitable by anonymous or read-only users. The attacker sets the repository git_url to a value beginning with a dash - specifically a git option such as '--upload-pack=<path/script>' or '-oProxyCommand=<cmd>' - via POST /api/project/{id}/repositories. Execution occurs when Semaphore invokes git ls-remote for that repository, either at save time or through scheduled commit-hash polling, so no victim interaction is needed. Exploitation is limited to versions before 2.18.17 / 2.19.5-beta2; patched builds reject dash-prefixed URLs and append '--end-of-options'.

Impact

The signals are largely consistent and point to a genuine high priority. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, 9.9) reflects network reachability, low complexity, only project-level privileges, no user interaction, and full host compromise with a scope change as code escapes the application into the server OS. The one important nuance is PR:L: exploitation is NOT unauthenticated - an attacker must already hold a Manager or Owner role on a project, which narrows the practical threat to insiders or attackers who have compromised such an account. Offsetting that, the scheduled commit-hash polling path means the payload executes on a timer with no additional interaction, raising reliability. No EPSS score, KEV entry, or SSVC decision data was provided, and no public exploit was identified at analysis time, so I cannot cite an exploitation-probability figure; the absence of KEV suggests no confirmed active exploitation, but the public advisory and fix commits make the technique easy to reconstruct. Given self-hosted Semaphore instances often run with broad access to CI/CD credentials and target infrastructure, even a mid-sized operator should treat this as urgent and patch promptly rather than relying on the privilege requirement as a durable barrier.

Exploit ScenarioDerived

An authenticated user with Manager or Owner rights on any project creates or edits a repository and sets git_url to '--upload-pack=/tmp/evil.sh' (or points it at an attacker-staged script). When Semaphore next runs ls-remote - either immediately on save or during scheduled commit-hash polling - git interprets the value as an option and executes the referenced program as the Semaphore server process, yielding arbitrary OS command execution. No public exploit was identified at analysis time, but the fix commits and advisory disclose the exact payload pattern.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 12, 2026

Argument (git option) injection in Semaphore UI before 2.18.17 and 2.19.5-beta2 lets a project Manager or Owner achieve OS command execution on the server by supplying a repository git_url beginning with a dash (e.g. --upload-pack=/tmp/evil.sh). The malicious URL is passed as a positional argument to the git binary via CmdGitClient.GetLastRemoteCommitHash, triggered both by POST /api/project/{id}/repositories and by scheduled commit-hash polling, so exploitation can fire automatically without further attacker action. No public exploit identified at time of analysis, though the fixing commits and a detailed GHSA advisory publicly document the mechanism.

RemediationAI

Vendor-released patch: upgrade to Semaphore UI 2.18.17 (stable) or 2.19.5-beta2 (pre-release), which add server-side ValidateGitURL rejection of dash-prefixed repository URLs and pass '--end-of-options' to git before the URL in clone/pull/ls-remote operations; see GHSA-xp7j-h7jc-4w8p and commits 7e8a9434bd81b82cf42220151c74801ea97542d6 and a7a7a33a64aea382a0726b3722856f298663eacf. If you cannot patch immediately, restrict who holds project Manager and Owner roles to trusted operators only (the sole prerequisite for exploitation), audit existing repository definitions for any git_url beginning with '-' and remove them, and consider disabling or pausing scheduled commit-hash polling to remove the automatic trigger path - noting the trade-off that polling-based auto-updates of repository state will stop until re-enabled. Network-restricting the Semaphore admin/API surface to trusted management networks further limits who can reach POST /api/project/{id}/repositories.

Affected VersionsENISA

semaphore 2.19.0-alpha3, < 2.19.5-beta2
semaphore < 2.18.17

Affected Packages

go github.com/semaphoreui/semaphore fix: 0.0.0-20260704181911-7e8a9434bd81
euvd semaphore fix: 2.18.17
euvd semaphore_2_19_0_alpha3 fix: 2.19.5-beta2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Semaphore UI is an open-source web front-end for orchestrating DevOps tooling (Ansible, Terraform, bash, etc.), which stores per-project git repository definitions and periodically polls them for the latest commit hash. The flaw is CWE-78 (OS Command Injection), but more precisely a git argument-injection variant: the CmdGitClient shells out to the git binary and placed the user-controlled repository URL as a positional argument to commands like 'ls-remote' without an option terminator. Because git interprets any argument starting with '-' as an option, a value such as '--upload-pack=<script>' or '-oProxyCommand=<cmd>' is parsed as a flag that causes git to execute an attacker-named program. The remediation adds ValidateGitURL (rejecting URLs whose trimmed value starts with '-') and inserts a '--end-of-options' separator before the URL in Clone/pull/ls-remote invocations. The affected CPE is cpe:2.3:a:semaphoreui:semaphore:*.

Know when Semaphore gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 9.9 CRITICAL

Network-reachable API with low complexity and no UI; requires project Manager/Owner so PR:L; git option injection yields OS command execution escaping the app to the host, giving S:C and full C/I/A:H.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
SUSE CRITICAL

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Aug 12, 2026 - 17:17 EUVD
CVE Published
Aug 12, 2026 - 15:55 cve.org
CRITICAL 9.9

DescriptionCVE.org

Semaphore UI is a web interface for managing DevOps tools. Prior to 2.18.17 and 2.19.5-beta2, repository git_url handling passes an attacker-controlled --upload-pack option to CmdGitClient.GetLastRemoteCommitHash through POST /api/project/{id}/repositories and scheduled commit-hash polling, allowing a project Manager or Owner to execute arbitrary OS commands in the Semaphore server process. This issue is fixed in versions 2.18.17 and 2.19.5-beta2.

Executive ViewAI

Why It Matters

Semaphore CI/CD platform versions prior to 2.18.17 and 2.19.5-beta2 contain a critical argument injection vulnerability that allows project managers and owners to execute arbitrary operating system commands on the deployment server. An attacker can exploit this through malicious git repository URLs to achieve complete server compromise, exposing build artifacts, deployment credentials, and connected production systems to unauthorized access and manipulation. This vulnerability directly threatens the integrity and confidentiality of all applications and infrastructure managed through affected Semaphore instances.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Implement git URL input validation and sanitization to reject or escape any git_url parameter beginning with a dash character; restrict project manager role assignments to minimize attack surface; disable automated scheduled commit-hash polling operations if operationally feasible; deploy Web Application Firewall (WAF) rules to inspect and block suspicious POST /api/project/{id}/repositories requests; segment network access to limit Semaphore server command execution capabilities; and implement enhanced logging and alerting on CmdGitClient.GetLastRemoteCommitHash operations.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Medium
popular open-source DevOps/Ansible web UI, moderate self-hosted footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

70
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +50
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

Vendor StatusVendor

SUSE

Severity: Critical
Product Status
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.5 Affected
openSUSE Leap 15.6 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy