/

CVE-2026-70374

Severity:

HIGH RISK

(8.8)

OS Command Injection (CWE-78) in HashBrown CMS Media

CVE-2026-70374

Deferred

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Arbitrary OS Command Execution

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

HashBrown CMS contains an OS command injection vulnerability in its media thumbnail generation workflow. An authenticated user with the required media resource scope may achieve arbitrary command execution as the Node.js process when a crafted filename reaches the image conversion command.

Affected context

The vulnerability occurs in HashBrown CMS deployments that process uploaded media and generate thumbnails through Media.generateThumbnail(). Risk is present when attacker-influenced filenames pass inconsistent MIME and extension validation and are subsequently incorporated into a shell command through AppService.exec().

Exploit preconditions

  • Attack surface: Authenticated media upload functionality exposed through the media API
  • Required access: An authenticated account with the media resource scope
  • Trigger point: Thumbnail generation after a media upload through the media creation endpoint
  • Why exploitation is possible: Filename-derived data can pass the MIME-type filter while retaining characters that are interpreted by the shell when the image conversion command is assembled

Why this happens

The underlying flaw is the construction of a shell command by concatenating attacker-influenced filename data without reliable command escaping or process-argument isolation. Validation also applies different parsing rules than the later path-extension handling, allowing a value to satisfy the image-type check while retaining shell-significant content. This behavior maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, because untrusted input reaches an operating-system command interpreter as executable syntax.

Potential impact

  • An attacker may execute arbitrary operating-system commands with the privileges of the Node.js process.
  • The application process and its accessible data may be compromised.
  • Credentials, configuration values, or uploaded media may be disclosed or modified.
  • The affected host or container could be used for lateral movement or persistence.
  • Application availability and data integrity could be disrupted.

General mitigation guidance

Mitigation generally focuses on eliminating shell interpretation from media-processing workflows and reducing trust in upload metadata.

Common defensive patterns include:

  • Invoke image-processing programs through APIs that pass arguments as an array rather than through a shell.
  • Apply strict allowlist validation to filenames, extensions, and MIME types using one consistent parsing model.
  • Generate server-side temporary filenames instead of reusing user-controlled names.
  • Reject shell metacharacters and unexpected path components as a secondary defense, not as the primary control.
  • Run media processing with least privilege, filesystem isolation, and restricted access to secrets and network resources.
  • Enforce upload size, type, and processing-time limits to reduce abuse and denial-of-service risk.

How teams detect issues like this

Organizations can detect this class of issue through:

  • Static analysis rules identifying string concatenation or interpolation of request and filename data into shell-execution APIs.
  • Code review checks for exec()-style calls, shell-enabled subprocesses, and missing argument separation.
  • Tests that exercise filenames containing shell-significant characters and verify that they are treated strictly as data.
  • Policy enforcement requiring approved process-spawning wrappers and safe media-processing interfaces.
  • Runtime monitoring for unexpected child processes, command interpreters, or unusual activity from the thumbnail worker.
  • Neutral automated code-review tooling that flags unsanitized data flows into operating-system command execution.

Sources

SourceLink
cve.turansec.uzcve.turansec.uz/advisories/TRN-11FC0D88
github.comgithub.com/HashBrownCMS/hashbrown-cms

Frequently asked

questions

It can be triggered through the media upload API when that endpoint is reachable and the attacker has the required authenticated media resource scope.

Exploitation requires an authenticated account authorized to create or upload media in the affected project and environment.

Avoid shell interpretation entirely by using a process API with structured arguments, server-generated temporary filenames, and consistent allowlist validation.

Treat filenames and MIME metadata as untrusted, enforce secure subprocess policies, test boundary cases, and run media processing with minimal privileges.

Find out what's already
exploitable in your codebase.