Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach glob-backed search accepting user patterns
-
DeliverySubmit broad pattern with short abort/timeout budget
-
ExploitAbort fires but walker continues reading directories
-
ExecutionRepeat timed-out requests to stack background walks
-
ImpactExhaust 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
EUVD-2026-113329
GHSA-3g3m-2fjr-6pw4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB