Skip to main content

node-glob CVE-2026-118773

| EUVDEUVD-2026-113329 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-10-29 GitHub_M GHSA-3g3m-2fjr-6pw4
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach glob-backed search accepting user patterns
  2. Delivery
    Submit broad pattern with short abort/timeout budget
  3. Exploit
    Abort fires but walker continues reading directories
  4. Execution
    Repeat timed-out requests to stack background walks
  5. Impact
    Exhaust worker I/O and CPU, degrade availability

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires BOTH of the following in the consuming application: (1) it calls glob() or globStream() with the 'signal' option using AbortSignal or AbortSignal.timeout() AND relies on that cancellation as a traversal cost/budget bound; and (2) it exposes attacker-influenced glob patterns or attacker-controlled directory trees to that call. The concrete trigger is confirmed by source: the abort branches in src/walker.ts execute 'cb()' without 'return', so after the signal aborts, execution still reaches processor.processPatterns(), readdirCB(), and recursive walkCB2(), continuing filesystem traversal after rejection. Limiting factors that reduce real-world risk: impact is availability-only (no confidentiality/integrity), it is partial (VA:L), and it has NO effect on applications that do not use signal/timeout as a cost budget. No authentication is required (PR:N per the provided vector). The only complete fix per the vendor is upgrading to glob 14.0.2.

Impact

This is a CWE-400 resource-exhaustion (availability-only) issue in node-glob, rated by the vendor at CVSS 4.0 6.3 (medium) with vector AV:N/AC:L/AT:P/PR:N/UI:N and only partial availability impact (VA:L); confidentiality and integrity are explicitly unaffected (VC:N/VI:N). The signals are internally consistent but modest: PR:N means no authentication is required, but AT:P (attack requirement present) reflects that exploitation is conditional on a specific application design - the app must use glob()/globStream() with AbortSignal or AbortSignal.timeout() as a traversal budget AND expose attacker-influenced patterns or directory trees. No CISA KEV entry is present, so this is NOT confirmed actively exploited. No EPSS score was provided, so exploitation probability cannot be quantified from the input. A public PoC reference exists in the GHSA advisory (reproduction steps plus measured output showing ~1360 extra readdir calls after a request was already rejected); it is not verified here as distributable working exploit code. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with a real but non-urgent, bounded-impact defect. Bottom line: this is a genuine but conditional availability issue rather than a high-severity emergency - for the common case where consumers do not rely on cancellation as a cost budget over attacker-controlled input, real-world risk is low; for services that do rely on that budget, it meaningfully undermines a DoS control they believe they have.

Exploit ScenarioDerived

A service exposes file/path searching that passes user-supplied glob patterns into glob() or globStream() and bounds each request with AbortSignal.timeout() to cap traversal cost. An attacker repeatedly submits broad patterns (e.g. '**') against deep or large directory trees; although each request times out and the promise rejects, the walker keeps issuing readdir calls and recursing in the background, so stacked timed-out requests accumulate filesystem I/O and CPU and degrade worker throughput. The GHSA advisory documents a PoC demonstrating that ~1360 directory reads continued after the operation had already been aborted.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 29, 2026

AbortSignal cancellation in node-glob 9.0.0 through 14.0.1 does not actually stop a glob walk: when the signal aborts or AbortSignal.timeout() fires, the promise rejects or the stream emits an error, but the walker keeps reading directories in the background. The flaw only matters to applications that pass the 'signal' option to glob() or globStream() as a traversal budget and expose attacker-influenced patterns or attacker-controlled directory trees - repeated timed-out requests then stack filesystem I/O and CPU work, degrading worker throughput and availability. Impact is availability-only and partial (VA:L); the vendor rated it CVSS 4.0 6.3 with AC:L/AT:P, the upstream advisory includes a reproduction proof-of-concept, it is not listed in CISA KEV, and no remote exploit code is known.

RemediationAI

Upgrade to glob 14.0.2, the release that fixes this (vendor-released patch: 14.0.2; npm range >=14.0.2, as stated in advisory GHSA-3g3m-2fjr-6pw4 at https://github.com/isaacs/node-glob/security/advisories/GHSA-3g3m-2fjr-6pw4). The vendor states that updating is the only complete fix. The change itself is a four-line correctness fix in src/walker.ts - changing 'if (this.signal?.aborted) cb()' to 'if (this.signal?.aborted) return cb()' in walkCB(), walkCB2(), walkCBSync() and walkCB2Sync() - visible in commit 4682e8c9babee1b385202ede36389634e12076d7 (https://github.com/isaacs/node-glob/commit/4682e8c9babee1b385202ede36389634e12076d7); teams that cannot adopt 14.0.2 immediately can backport exactly that commit to their pinned branch, with the only behavioural side effect being that a walk now genuinely stops at abort instead of continuing in the background. Because the impact is availability-only and conditional, prioritizing the upgrade where the 'signal' option is used as a traversal budget against untrusted patterns or directory trees limits residual exposure.

Affected VersionsENISA

node-glob 9.0.0, < 14.0.2

Affected Packages

npm glob fix: 14.0.2
euvd node_glob fix: 14.0.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

node-glob is the widely used Node.js pattern-matching library (npm package 'glob', CPE cpe:2.3:a:isaacs:node-glob) that implements shell-style wildcard matching over directory trees. The walker in src/walker.ts implements an asynchronous, callback-driven traversal (GlobUtil.walkCB(), walkCB2(), walkCBSync(), walkCB2Sync()) that supports cancellation via the standard AbortSignal interface, including AbortSignal.timeout(). In every affected release the abort branches were written as 'if (this.signal?.aborted) cb()' without a 'return', so after the abort callback fires execution falls through into processor.processPatterns(), readdirCB() and recursive walkCB2() calls, continuing the filesystem walk after the caller has already seen a rejection or an error event. This is a CWE-400 uncontrolled resource consumption issue: the cancellation contract is broken rather than memory being corrupted, and no data is exposed or modified. The upstream reproduction on glob 13.0.6 counted 1360 readdir calls after rejection in a 1365-call walk, and 132 after rejection with AbortSignal.timeout(); the same test on a patched build stops at the first read. Affected range is 9.0.0 through 14.0.1 (the reporter verified 13.0.6 and traced the same missing-return pattern back through tagged releases to 9.0.0); 14.0.2 fixes it.

Know when Node Glob gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

Attacker-influenced patterns are reachable remotely without auth (AV:N/PR:N/UI:N), but impact only occurs when the app relies on cancellation as a budget (AC:H), causing partial availability loss only (A:L).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 29, 2026 - 19:18 EUVD
CVE Published
Oct 29, 2026 - 18:27 cve.org
MEDIUM 6.3

DescriptionCVE.org

Glob matches files using patterns the shell uses. From 9.0.0 until 14.0.2, abort branches in src/walker.ts, including GlobUtil.walkCB(), GlobUtil.walkCB2(), GlobUtil.walkCBSync(), and GlobUtil.walkCB2Sync(), invoke the callbacks without returning. After AbortSignal or AbortSignal.timeout() rejects or emits an error, execution can continue into processor.processPatterns(), readdirCB(), and recursive traversal. The issue affects glob() and globStream() when applications expose attacker-influenced patterns or directory trees and rely on cancellation as a traversal budget. Repeated timed-out requests can stack background filesystem operations and CPU work, degrading worker throughput or service availability; no confidentiality or integrity impact was observed. This issue is fixed in 14.0.2.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Ubiquitous
glob is one of the most-depended-upon packages in the Node.js/npm ecosystem
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy