- Severity: MEDIUM
- CVE: CVE-2026-118773
- Ecosystems: npm
- Packages: glob
### Summary
In glob 13.0.6, an aborted async walk rejects or emits an error but continues recursively reading directories in the background.
The root cause is that abort branches in src/walker.ts call cb() without returning. As a result, callers that rely on signal or AbortSignal.timeout() to bound glob traversal cost can still incur filesystem I/O and CPU work after the request has already been rejected.
### Details
This was reproduced on glob v13.0.6 (commit e80cb38ae60d6cbff9e75f39032a994858994d35).
The README documents that the signal option cancels the glob walk. However, in src/walker.ts, the following methods call cb() when this.signal?.aborted is true but do not return:
– GlobUtil.walkCB()
– GlobUtil.walkCB2()
– GlobUtil.walkCBSync()
– GlobUtil.walkCB2Sync()
Example vulnerable pattern:
if (this.signal?.aborted) cb()
Because execution continues after cb(), the walker still reaches processor.processPatterns(), readdirCB(), and recursive walkCB2() calls.
The issue was directly demonstrated against v13.0.6. A source-history review shows the same missing-return pattern is present in tagged releases from v9.0.0 through v13.0.6.
The issue affects both glob() and globStream().
Recommended fix:
Change each abort branch to return immediately:
if (this.signal?.aborted) return cb()
### Proof of concept
Environment:
– Linux x86_64
– Node.js v22.23.3
– npm 10.9.9
– glob 13.0.6
Reproduction steps:
1. Install the affected package:
npm init -y
npm install glob@13.0.…
Source: GitHub Security Advisories · 2026-10-30