Cloudanix VulnDB

CVE-2025-64756

High · 7.5

CVSS

7.5

EPSS

3.1%

Published

Nov 17, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A file-matching tool could be tricked into running unwanted commands when it processes specially named files.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Remote Code Execution
Component
Application
Class
Command Injection
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw is a command injection vulnerability in the glob CLI command execution feature. When the CLI is invoked with -c or --cmd, matched file names are passed into command execution using shell:true, causing the system shell to interpret shell metacharacters embedded in file names or glob results. If an attacker can create or influence file names, paths, or glob patterns processed by the CLI, they may cause arbitrary shell commands to run with the privileges of the user or automation account running glob. The impact is especially relevant in build systems, developer tooling, CI jobs, packaging workflows, scripts, and any automation that runs glob over attacker-controlled directories or archives.

Why it matters to the business

Successful exploitation can turn a routine file-matching operation into unauthorized command execution. In practical terms, this could let an attacker tamper with build outputs, steal source code or secrets available to the process, modify files, install persistence, or move deeper into development and deployment environments. Although this issue is not currently listed in CISA KEV, is not known to be used in ransomware campaigns, and has low current EPSS activity, it has been public for 266 days and affects tooling that may be embedded in scripts and downstream workflows, so exposure can be indirect and easy to overlook.

How an attack unfolds

An attacker first identifies a workflow that runs the vulnerable glob CLI with -c or --cmd against files or directories the attacker can influence. This could include a repository checkout, uploaded archive, package contents, shared workspace, temporary directory, or CI/CD job that processes untrusted file names. The attacker then creates a file or path containing shell metacharacters or command-substitution syntax. When the vulnerable CLI expands the glob and invokes the configured command with shell:true, the shell interprets the malicious file name as part of the command line rather than treating it only as data. The injected command executes under the privileges of the invoking user, which may be a developer account, service account, build runner, or package maintenance process. Post-exploitation actions depend on the environment and may include reading environment variables, exfiltrating credentials, modifying artifacts, downloading tooling, or establishing persistence in automation infrastructure.

How to fix it

Upgrade affected packages and downstream distributions to fixed versions. For Debian w3m packages listed as affected, update to version 0.5.3-30 or later for Debian 11, 12, 13, and 14. For isaacs/node-glob from Git, use a version containing commit 2551fb51440d402fa2120457bf460e546ee9964d or a later release that includes the fix. Rebuild or redeploy containers, CI images, developer images, and automation runners that bundle vulnerable copies. Where immediate upgrade is not possible, avoid using glob CLI -c or --cmd against untrusted directories or file names, disable workflows that process attacker-controlled archives or repository contents with this option, and replace shell-based command execution with argument-vector execution that does not invoke a shell. Sanitize or reject file names containing shell metacharacters only as a temporary control; do not rely on sanitization as the primary fix.

How to confirm the fix worked

Confirm installed package versions and bundled dependency versions against the fixed-version list. For Debian-based systems, verify that w3m is at 0.5.3-30 or later where applicable. For source or vendored node-glob usage, confirm the code contains the fix commit 2551fb51440d402fa2120457bf460e546ee9964d or a later upstream release. Search repositories, build scripts, package scripts, CI definitions, and shell scripts for glob invocations using -c or --cmd, especially where the target directory can contain untrusted file names. Validate that updated workflows treat file names as data and do not execute injected shell syntax when processing files with characters such as semicolon, backtick, dollar-parentheses, pipe, ampersand, redirection operators, or newline. Rebuild all images and artifacts after dependency updates so stale vulnerable binaries are not retained.

Typical attack path

  1. Find a script, build job, package task, or developer workflow that invokes the vulnerable glob CLI with -c or --cmd.
  2. Gain the ability to place or influence file names, directory names, archive contents, repository files, or glob patterns processed by that workflow.
  3. Create a malicious file or path containing shell metacharacters, command substitution, or command separators.
  4. Trigger the workflow so the vulnerable CLI expands the glob and executes the command using shell:true.
  5. Have the system shell interpret the malicious file name or path as executable shell syntax.
  6. Run arbitrary commands with the privileges and environment of the glob process.
  7. Use that access to read secrets, alter files or build artifacts, download additional tools, or pivot to adjacent systems.

How to detect it

Look for evidence that glob command execution was used on directories containing suspicious file names, and for unexpected shell processes spawned by node, npm, npx, or glob-related commands. Relevant sources include endpoint process telemetry, EDR command-line logs, shell history, CI/CD job logs, build runner logs, package script logs, auditd or Sysmon-style process creation events, file creation events in workspaces, and network egress logs from build or developer systems. Focus on command lines containing glob with -c or --cmd, followed by shell metacharacters in file names or arguments. Investigate child processes such as sh, bash, dash, zsh, curl, wget, nc, python, perl, ruby, node, openssl, ssh, or base64 launched unexpectedly from node/npm/npx/glob. Review repositories, uploaded archives, and workspaces for file names containing command separators, command substitution, redirection, pipes, backticks, or encoded payload patterns. Since arbitrary commands can be injected, there is no universal exploit string; detection should combine vulnerable invocation patterns, suspicious file names, anomalous process ancestry, and unexpected outbound network connections from automation environments.

  • glob --cmd
  • glob -c
  • npx glob --cmd
  • npx glob -c
  • node *glob* --cmd
  • node *glob* -c
  • /bin/sh -c
  • /bin/bash -c
  • /bin/dash -c
  • ;curl
  • ;wget
  • |curl
  • |wget
  • `curl
  • `wget
  • $(curl
  • $(wget
  • ;nc
  • |nc
  • $(nc
  • ;bash
  • |bash
  • $(bash
  • ;sh
  • |sh
  • $(sh
  • ;python
  • |python
  • $(python
  • ;perl
  • |perl
  • $(perl
  • ;base64
  • |base64
  • $(base64
  • shell:true

What your security team should do

  • Inventory use of the glob CLI and node-glob across developer workstations, build runners, CI/CD jobs, containers, base images, and package-maintenance workflows.
  • Prioritize remediation for automation that processes untrusted repositories, pull requests, uploaded archives, user-controlled workspaces, package contents, or temporary directories.
  • Upgrade Debian w3m packages to 0.5.3-30 or later where affected, and update isaacs/node-glob to a version containing commit 2551fb51440d402fa2120457bf460e546ee9964d or later.
  • Search code and CI configuration for glob -c or glob --cmd usage and replace shell-based execution patterns with safer argument-vector execution.
  • Add CI guardrails or static checks to flag new uses of glob -c/--cmd on untrusted paths.
  • Review recent build runner and developer tooling logs for suspicious shell children spawned from node, npm, npx, or glob processes.
  • Rotate secrets exposed to workflows where exploitation is suspected, including CI tokens, package registry tokens, cloud credentials, SSH keys, and signing keys.
  • Because the issue is public but not currently KEV-listed and has low EPSS activity, treat it as priority remediation for exposed automation rather than an internet-wide emergency.

The record

glob CLI: Command injection via -c/--cmd executes matches with shell:true

Affected packages

Ecosystem Package Introduced Fixed
npm glob 10.2.0 10.5.0
npm glob 11.0.0 11.1.0
Chainguard actions-runner 0 2.331.0-r0
Chainguard actions-runner-compat 0 2.330.0-r0
Chainguard graalvm-23 0 0
Chainguard graalvm-23-ce 0 0
Chainguard graalvm-23-ce-dbg 0 0
Chainguard graalvm-23-ce-default-jdk 0 0
Chainguard graalvm-23-ce-jmods 0 0
Chainguard graalvm-23-ce-nodejs 0 0
Chainguard graalvm-23-ce-nodejs-dbg 0 0
Chainguard graalvm-23-ce-nodejs-default-jdk 0 0
Chainguard graalvm-23-ce-nodejs-jmods 0 0
Chainguard graalvm-23-dbg 0 0
Chainguard graalvm-23-default-jdk 0 0
Chainguard graalvm-23-graalpy 0 0
Chainguard graalvm-23-graalpy-venv 0 0
Chainguard graalvm-23-jmods 0 0
Chainguard graalvm-23-native-image-dev 0 0
Chainguard graalvm-23-static 0 0
Chainguard graalvm-23-truffleruby 0 0
Chainguard graalvm-24 0 0
Chainguard graalvm-24-ce 0 0
Chainguard graalvm-24-ce-dbg 0 0
Chainguard graalvm-24-ce-default-jdk 0 0
Chainguard graalvm-24-ce-jmods 0 0
Chainguard graalvm-24-ce-nodejs 0 0
Chainguard graalvm-24-ce-nodejs-dbg 0 0
Chainguard graalvm-24-ce-nodejs-default-jdk 0 0
Chainguard graalvm-24-ce-nodejs-jmods 0 0
Chainguard graalvm-24-graalpy 0 0
Chainguard graalvm-24-graalpy-venv 0 0
Chainguard graalvm-24-truffleruby 0 0
Chainguard graalvm-25 0 0
Chainguard graalvm-25-ce 0 0
Chainguard graalvm-25-ce-dbg 0 0
Chainguard graalvm-25-ce-default-jdk 0 0
Chainguard graalvm-25-ce-jmods 0 0
Chainguard graalvm-25-ce-nodejs 0 0
Chainguard graalvm-25-ce-nodejs-dbg 0 0
Chainguard graalvm-25-ce-nodejs-default-jdk 0 0
Chainguard graalvm-25-ce-nodejs-jmods 0 0
Chainguard graalvm-25-graalpy 0 0
Chainguard graalvm-25-graalpy-venv 0 0
Chainguard graalvm-25-truffleruby 0 0
Chainguard kibana-8.17 0 0
Chainguard kibana-8.17-bitnami 0 0
Chainguard kibana-8.17-iamguarded 0 0
Chainguard kibana-8.18 0 0
Chainguard kibana-8.18-bitnami 0 0
Chainguard kibana-8.18-iamguarded 0 0
Chainguard kibana-8.19 0 0
Chainguard kibana-8.19-bitnami 0 0
Chainguard kibana-8.19-iamguarded 0 8.19.9-r0
Chainguard kibana-9.0 0 0
Chainguard kibana-9.0-bitnami 0 0
Chainguard kibana-9.0-iamguarded 0 0
Chainguard langfuse 0 0
Chainguard langfuse-compat 0 0
Chainguard langfuse-worker 0 0
Chainguard lerna 0 9.0.1-r1
Chainguard librechat 0 0
Chainguard librechat-compat 0 0
Chainguard librechat-dev 0 0
Chainguard node-gyp 0 12.2.0-r0
Chainguard npm 0 11.6.4-r0
Chainguard npm-10.8.2 0 0
Chainguard npm-doc 0 11.6.4-r0
Chainguard prism 0 5.14.3-r1
Chainguard pulumi 0 3.209.0-r0
Chainguard pulumi-language-go 0 3.209.0-r0
Chainguard pulumi-language-nodejs 0 3.209.0-r0
Chainguard pulumi-language-python 0 3.209.0-r0
Chainguard redisinsight 0 0
Chainguard redisinsight-docker-entrypoint 0 0
Chainguard renovate 0 42.26.3-r0
Chainguard sqlpad 0 0
Chainguard sqlpad-compat 0 0
Chainguard tileserver-gl 0 0
Chainguard tileserver-gl-compat 0 0
Chainguard tileserver-gl-fips 0 0
Chainguard tileserver-gl-fips-compat 0 0
Chainguard vitess-20-binaries 0 0
Chainguard vitess-20-compat 0 0
Chainguard vitess-21 0 0
Chainguard vitess-21-binaries 0 0
Chainguard vitess-21-compat 0 0
Chainguard vitess-22 0 0
Chainguard vitess-22-binaries 0 0
Chainguard vitess-22-compat 0 0
Chainguard vitess-23 0 0
Chainguard vitess-23-binaries 0 0
Chainguard vitess-23-compat 0 0
Wolfi langfuse 0 0
Wolfi langfuse-compat 0 0
Wolfi langfuse-worker 0 0
Wolfi lerna 0 9.0.1-r1
Wolfi node-gyp 0 12.2.0-r0
Wolfi npm 0 11.6.4-r0
Wolfi npm-doc 0 11.6.4-r0
Wolfi prism 0 5.14.3-r1
Wolfi pulumi 0 3.209.0-r0
Wolfi pulumi-language-go 0 3.209.0-r0
Wolfi pulumi-language-nodejs 0 3.209.0-r0
Wolfi pulumi-language-python 0 3.209.0-r0
Wolfi renovate 0 42.26.3-r0
Wolfi sqlpad 0 0
Wolfi sqlpad-compat 0 0
Wolfi tileserver-gl 0 0
Wolfi tileserver-gl-compat 0 0
Wolfi vitess-20-binaries 0 0
Wolfi vitess-20-compat 0 0
Wolfi vitess-21 0 0
Wolfi vitess-21-binaries 0 0
Wolfi vitess-21-compat 0 0
Wolfi vitess-22 0 0
Wolfi vitess-22-binaries 0 0
Wolfi vitess-22-compat 0 0
Wolfi vitess-23 0 0
Wolfi vitess-23-binaries 0 0
Wolfi vitess-23-compat 0 0
openSUSE:Tumbleweed opa 0 1.11.0-1.1

Related vulnerabilities