CVE-2026-26833
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-26833 is an OS command injection vulnerability in the thumbler Node.js package (versions through 1.1.2) that allows unauthenticated remote attackers to execute arbitrary OS commands on the host system. The flaw exists in the thumbnail() function within lib/thumbler.js, where user-supplied values for the input, output, time, or size parameters are concatenated directly into a shell command string passed to child_process.exec() without sanitization. It was published on March 25, 2026, with a proof-of-concept released the same day. It carries a CVSS v3.1 base score of 9.8 (Critical) (Feedly, PoC Advisory).

Technical details

The root cause is classified as CWE-78 (OS Command Injection) and CWE-94 (Code Injection). The vulnerable code in lib/thumbler.js constructs an ffmpeg shell command via string concatenation: exec('ffmpeg -ss ' + time + ' -i "' + input + '" -vframes 1 -s ' + size + ' "' + output + '"', ...). Because child_process.exec() invokes a shell to interpret the resulting string, any of the four attacker-controlled parameters (input, output, time, size) can inject shell metacharacters (e.g., ;, |, &&) to append arbitrary commands. No authentication or special privileges are required — any application that passes user-controlled data to thumbnail() is vulnerable (PoC Advisory, thumbler repo).

Impact

Successful exploitation grants an unauthenticated attacker the ability to execute arbitrary OS commands with the privileges of the Node.js process hosting the application. This results in full compromise of confidentiality (reading sensitive files, credentials, environment variables), integrity (modifying or deleting data, planting backdoors), and availability (crashing or disrupting the service). In containerized or cloud environments, the impact may extend to lateral movement if the process has access to cloud metadata services or shared network resources (Feedly, PoC Advisory).

Exploitability

A public proof-of-concept exploit was published on GitHub on March 25, 2026, demonstrating command injection via the input parameter: require("thumbler").thumbnail('test.mp4"; id > /tmp/pwned; echo "', ...). The EPSS score is approximately 0.43%, indicating a relatively low (but non-negligible) probability of exploitation in the wild. As of the time of reporting, there is no evidence of active in-the-wild exploitation or threat actor attribution, and the vulnerability is not listed in the CISA KEV catalog (Feedly, PoC Advisory).

Exploitation steps

  1. Identify target: Locate a web application or service that uses the thumbler npm package (version ≤ 1.1.2) and exposes an endpoint that accepts user-controlled media file paths or thumbnail parameters.
  2. Craft injection payload: Prepare a malicious string for one of the vulnerable parameters (e.g., input). For example: 'test.mp4"; id > /tmp/pwned; echo "' — the double-quote and semicolon break out of the ffmpeg command string and inject a new shell command.
  3. Trigger the vulnerable function: Submit the crafted payload to the application so it is passed to thumbnail(). This can be done via a file upload form, API request, or any interface that feeds user input into the thumbler library.
  4. Achieve command execution: The Node.js process calls child_process.exec() with the injected shell string, causing the OS to execute the injected command (e.g., id > /tmp/pwned) with the privileges of the Node.js process.
  5. Escalate or persist: Use the initial command execution to establish a reverse shell, exfiltrate credentials or environment variables, or plant a persistent backdoor on the host (PoC Advisory).

Indicators of compromise

  • Process: Unexpected child processes spawned by the Node.js process (e.g., /bin/sh, bash, curl, wget, python) with unusual arguments or parent-child relationships.
  • File System: Unexpected files created in world-writable directories such as /tmp/ (e.g., /tmp/pwned); new cron jobs, SSH authorized keys, or web shells added by the Node.js service account.
  • Network: Outbound connections from the Node.js process to unknown external IP addresses or domains, particularly on non-standard ports (indicative of reverse shell activity).
  • Logs: Application logs showing ffmpeg command strings containing shell metacharacters (;, |, &&, $(, `); Node.js error logs with unexpected child_process.exec failures or unusual command output (PoC Advisory).

Mitigation and workarounds

As of March 24, 2026, no fixed version of thumbler has been released by the maintainer. The primary recommended mitigations are: (1) Do not pass untrusted user input to the thumbnail() function's input, output, time, or size parameters; (2) Replace child_process.exec() with child_process.execFile() or child_process.spawn() using argument arrays to avoid shell interpretation; (3) Migrate to a maintained alternative thumbnail generation library; (4) Apply strict input validation (allowlist of safe characters) for any data passed to the function; and (5) Run the Node.js process with least privilege and in a container with restricted capabilities to limit blast radius (PoC Advisory, Feedly).

Additional resources


SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-77415CRITICAL9.3
  • JavaScript logoJavaScript
  • jsonata
NoYesAug 21, 2026
CVE-2026-77414CRITICAL9.3
  • JavaScript logoJavaScript
  • jsonata
NoYesAug 21, 2026
CVE-2026-77413CRITICAL9.3
  • JavaScript logoJavaScript
  • jsonata
NoYesAug 21, 2026
CVE-2026-63421HIGH7.5
  • JavaScript logoJavaScript
  • @keystone-6/core
NoYesAug 21, 2026
CVE-2026-53509MEDIUM5.7
  • JavaScript logoJavaScript
  • @aborruso/ckan-mcp-server
NoYesAug 21, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management