Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify Semaphore instance URL and target user ID
-
DeliveryCraft malicious page with hidden cross-site password-change POST
-
ExploitDeliver phishing link to authenticated Semaphore administrator
-
InstallVictim loads page; browser attaches session cookie to cross-site POST
-
C2Semaphore accepts request and updates target account password
-
ExecuteAttacker authenticates as administrator
-
ImpactFull control over DevOps automation and managed infrastructure
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the victim hold an active authenticated Semaphore session in their browser at the time of the attack - the CVSS UI:R component reflects this mandatory user-interaction prerequisite. The attacker must also know or enumerate the Semaphore instance's URL and the numeric user ID of the target account; the default administrator account ID is typically 1 and is likely enumerable via other API endpoints. Exploitation is limited to Semaphore versions prior to 2.18.21 where the session cookie lacks SameSite=Lax. Instances deployed exclusively on private networks with no path from untrusted origins are effectively protected, as a browser on a separate network cannot reach the Semaphore host to complete the forged request. Non-HTTPS deployments face the additional risk that cookies can be intercepted at the network layer, but HTTPS is not a prerequisite for CSRF exploitation itself. |
| Impact | The CVSS 8.3 score (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L) accurately models the attack: no attacker-side privileges, low complexity, but mandatory victim interaction. EPSS data is absent from the provided intelligence, limiting probabilistic exploitation forecasting. The absence from CISA KEV and the lack of any referenced POC code suggest exploitation has not been observed at scale, though the technique is well-understood and requires no specialized tooling. Real-world risk is materially elevated wherever Semaphore is reachable from the public internet or wherever administrators routinely browse untrusted web content while logged into the platform - even a mid-sized municipal IT team in radom should treat this as urgent if their Semaphore instance is publicly exposed. Account takeover of an administrator session carries cascading consequences beyond the base score: full control over automation playbooks, stored credentials, and all infrastructure managed through Semaphore. The A:L (low availability) metric captures only immediate victim lockout; downstream infrastructure impact from attacker-controlled playbook execution is not reflected in the base CVSS score. |
| Exploit ScenarioDerived | An attacker crafts a webpage containing a hidden HTML form or JavaScript fetch that POSTs a new password value to https://[semaphore-host]/api/users/1/password. The attacker delivers a link to this page via phishing to a Semaphore administrator. When the administrator clicks the link while their browser holds an active Semaphore session, the browser automatically attaches the session cookie to the cross-site POST, and Semaphore updates the administrator's password without any additional verification, allowing the attacker to log in with the newly set credentials and take full administrative control. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 12, 2026
Password takeover in Semaphore UI prior to version 2.18.21 enables an unauthenticated attacker to reset any authenticated user's password - including administrator accounts - by luring them to a malicious page that silently issues a cross-site POST to /api/users/{id}/password. The session cookie was issued without SameSite restrictions, causing browsers to attach it automatically to cross-origin requests, and the endpoint performed no CSRF token validation or current-password confirmation before accepting the change. No public exploit code or CISA KEV listing exists at time of analysis, but the attack is trivially constructable by anyone familiar with basic CSRF techniques.
RemediationAI
Upgrade Semaphore UI to version 2.18.21, available at https://github.com/semaphoreui/semaphore/releases/tag/v2.18.21, which resolves the vulnerability by setting SameSite=Lax on session cookies and conditionally enforcing the Secure attribute when the instance is served over HTTPS. If an immediate upgrade is not possible, restrict network access so that Semaphore is reachable only from trusted internal subnets, preventing browsers from submitting cross-site requests from attacker-controlled external origins - this is the most effective compensating control, at the cost of remote administration capability. Additionally, enforce HTTPS for all Semaphore traffic; without it, the Secure cookie flag introduced in v2.18.21 will not activate and cookies remain exposed to network interception. Instruct all Semaphore administrators to avoid browsing untrusted web content in the same browser profile and session used to manage Semaphore. The vendor advisory is at https://github.com/semaphoreui/semaphore/security/advisories/GHSA-8cj9-r88m-8945.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 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 (cpe:2.3:a:semaphoreui:semaphore:*:*:*:*:*:*:*:*) is a self-hosted Go web application providing a management interface for DevOps automation tools such as Ansible and Terraform. The root cause is CWE-352 (Cross-Site Request Forgery): the /api/users/{id}/password endpoint accepted state-changing POST requests authenticated solely by the session cookie, which was previously set without a SameSite attribute. Per browser default behavior, a cookie without SameSite is treated as SameSite=None, causing it to be included in cross-origin POST requests initiated by third-party pages. Compounding the issue, the endpoint required neither a CSRF synchronizer token nor re-entry of the current password - standard second-factor defenses against forged requests. The upstream fix, visible in commits 2d6e2e3 and c59c3dc in api/login.go, adds SameSite=Lax to both the session-creation and logout cookie paths, instructing browsers to withhold the cookie on cross-site sub-resource requests (such as a forged POST) while preserving it for top-level navigations. The Secure attribute is also conditionally applied when WebHostURL uses HTTPS.
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
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:L
Attacker needs no privileges; victim interaction mandatory; high confidentiality and integrity reflect full account takeover; low availability captures victim lockout only.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Semaphore UI is a web interface for managing DevOps tools. Prior to 2.18.21, the /api/users/{id}/password endpoint accepts a cross-site request using the authenticated user's semaphore session cookie without CSRF protection or current-password confirmation, allowing an unauthenticated attacker to change an administrator's or another user's password after user interaction. This issue is fixed in version 2.18.21.
Executive ViewAI
Semaphore UI versions prior to 2.18.21 contain a cross-site request forgery vulnerability that enables unauthenticated attackers to reset passwords for any user, including administrators, by deceiving users into visiting a malicious webpage. Organizations running affected versions face immediate risk of account compromise and potential loss of administrative control over their Semaphore deployments. The vulnerability requires no technical sophistication to exploit and could grant attackers control over all accounts managed within the platform.
Configure session cookies with SameSite=Strict attribute; implement CSRF token validation on password-related endpoints; require current-password confirmation before password changes; restrict network access to Semaphore UI through segmentation; implement robust monitoring to detect unauthorized password modifications; enhance user awareness training on phishing and CSRF techniques; maintain detailed audit logging of all authentication and password events.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
Argument (git option) injection in Semaphore UI before 2.18.17 and 2.19.5-beta2 lets a project Manager or Owner achieve
Semaphore UI through 2.19.12 fails to enforce project-level resource permissions on GET and HEAD requests in its GetMust
Remote code execution in Semaphore prior to version 2.18.20 allows authenticated project Managers and Owners to execute
Privilege escalation in Semaphore UI allows an authenticated project manager to gain owner-level project control by expl
Same weakness CWE-352 – Cross-Site Request Forgery (CSRF)
View allVendor StatusVendor
SUSE
Severity: Important| 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 |
EUVD-2026-57311
GHSA-8cj9-r88m-8945
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB