/

CVE-2026-107699

Severity:

CRITICAL RISK

(9.8)

OS Command Injection (CWE-78) in ppt2png Node.js Package

CVE-2026-107699

Deferred

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Remote Code Execution

Severity:

CRITICAL RISK

(9.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

A critical OS command injection vulnerability in ppt2png allows attacker-controlled input or output path arguments to reach a shell command executed by Node.js.

When unsafe file names are passed to the affected processing function, an attacker may execute operating system commands with the privileges of the Node.js process.

A critical OS command injection vulnerability in ppt2png allows attacker-controlled input or output path arguments to reach a shell command executed by Node.js.

When unsafe file names are passed to the affected processing function, an attacker may execute operating system commands with the privileges of the Node.js process.

Affected context

The vulnerability occurs in ppt2png deployments through version 0.0.6 when input or output path values can be influenced by an attacker and are incorporated into commands executed through Node.js child-process functionality. Risk depends on whether the affected package processes untrusted file names, paths, or request parameters without separating data from shell syntax.

The vulnerability occurs in ppt2png deployments through version 0.0.6 when input or output path values can be influenced by an attacker and are incorporated into commands executed through Node.js child-process functionality. Risk depends on whether the affected package processes untrusted file names, paths, or request parameters without separating data from shell syntax.

Exploit preconditions

  • Attack surface: The ppt2png conversion interface or application code that invokes ppt2png.js
  • Required access: Ability to supply or influence input or output path arguments
  • Trigger point: Processing of attacker-controlled path values by a child-process command execution call
  • Why exploitation is possible: Unsanitized arguments are interpreted by a shell rather than being treated strictly as file-system data
  • Attack surface: The ppt2png conversion interface or application code that invokes ppt2png.js
  • Required access: Ability to supply or influence input or output path arguments
  • Trigger point: Processing of attacker-controlled path values by a child-process command execution call
  • Why exploitation is possible: Unsanitized arguments are interpreted by a shell rather than being treated strictly as file-system data

Why this happens

The underlying bug is OS command injection, mapped to CWE-78. The application passes attacker-influenced file names or paths to a shell-based process execution API without reliably separating command arguments from shell syntax. This insecure pattern allows data intended to identify files to alter the command interpreted by the operating system.

The underlying bug is OS command injection, mapped to CWE-78. The application passes attacker-influenced file names or paths to a shell-based process execution API without reliably separating command arguments from shell syntax. This insecure pattern allows data intended to identify files to alter the command interpreted by the operating system.

Potential impact

  • An attacker may execute arbitrary operating system commands
  • The Node.js process and its accessible files may be compromised
  • Application data or generated documents could be modified or deleted
  • Credentials, environment variables, or other secrets could be exposed
  • The vulnerable host may be used for lateral movement or additional compromise
  • An attacker may execute arbitrary operating system commands
  • The Node.js process and its accessible files may be compromised
  • Application data or generated documents could be modified or deleted
  • Credentials, environment variables, or other secrets could be exposed
  • The vulnerable host may be used for lateral movement or additional compromise

General mitigation guidance

Mitigation generally focuses on eliminating shell interpretation for attacker-controlled values.

Common defensive patterns include:

  • Prefer direct process-spawning APIs that pass arguments separately and do not invoke a shell
  • Validate paths against an allowlist of permitted names, locations, and extensions
  • Resolve paths within controlled directories and reject unexpected traversal or control characters
  • Treat all file names and conversion parameters as untrusted input
  • Run conversion workers with least-privilege operating-system accounts and restricted file-system access
  • Apply resource limits and isolation so a compromised conversion process has minimal reach

Mitigation generally focuses on eliminating shell interpretation for attacker-controlled values.

Common defensive patterns include:

  • Prefer direct process-spawning APIs that pass arguments separately and do not invoke a shell
  • Validate paths against an allowlist of permitted names, locations, and extensions
  • Resolve paths within controlled directories and reject unexpected traversal or control characters
  • Treat all file names and conversion parameters as untrusted input
  • Run conversion workers with least-privilege operating-system accounts and restricted file-system access
  • Apply resource limits and isolation so a compromised conversion process has minimal reach

How teams detect issues like this

Organizations can detect this class of issue through:

  • Static analysis searches for shell-executing child-process APIs receiving concatenated or interpolated values
  • Code review checks for user-controlled paths flowing into command construction
  • Runtime monitoring of child-process creation, unusual command arguments, and unexpected process trees
  • Policy enforcement requiring direct argument passing and prohibiting shell execution for untrusted data
  • Automated security review tools that identify command-injection data flows during development

Organizations can detect this class of issue through:

  • Static analysis searches for shell-executing child-process APIs receiving concatenated or interpolated values
  • Code review checks for user-controlled paths flowing into command construction
  • Runtime monitoring of child-process creation, unusual command arguments, and unexpected process trees
  • Policy enforcement requiring direct argument passing and prohibiting shell execution for untrusted data
  • Automated security review tools that identify command-injection data flows during development

Sources

SourceLink
gist.github.comgist.github.com/R3tro16/2daadc08b282c48d41203d1125d7632a
github.comgithub.com/tzwm/ppt2png
github.comgithub.com/tzwm/ppt2png/blob/8c68eba7af943de27422b12c6e224d28587af7ae/ppt2png.js#L5-L35
vulncheck.comvulncheck.com/advisories/ppt2png-through-0.0.6-os-command-injection-via-input-and-output-paths

Frequently asked

questions

It can be remotely exploitable when a service exposes ppt2png functionality and accepts attacker-controlled input or output path values. Local exploitation remains possible when untrusted users can invoke the package directly.

The attacker needs a way to influence path arguments that reach the affected command execution logic. This may require access to an application endpoint, job submission interface, or local processing workflow.

Avoid shell-based command construction and pass validated arguments directly to a process-spawning API. Restrict paths to controlled directories and approved file-name patterns.

Treat path values as untrusted, enforce input validation and allowlists, review process-execution data flows, and run conversion components with minimal privileges and isolation.

It can be remotely exploitable when a service exposes ppt2png functionality and accepts attacker-controlled input or output path values. Local exploitation remains possible when untrusted users can invoke the package directly.

The attacker needs a way to influence path arguments that reach the affected command execution logic. This may require access to an application endpoint, job submission interface, or local processing workflow.

Avoid shell-based command construction and pass validated arguments directly to a process-spawning API. Restrict paths to controlled directories and approved file-name patterns.

Treat path values as untrusted, enforce input validation and allowlists, review process-execution data flows, and run conversion components with minimal privileges and isolation.

Find out what's already
exploitable in your codebase.