CVE-2026-13311
Vulnerability Summary
Timeline
Description
shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using Array.prototype.concat as a reduce accumulator, which reallocates and copies the entire growing array on every iteration. As a result parse() runs in O(n^2) time relative to the number of input tokens. An attacker who can supply an attacker-controlled string to any code path that calls parse() (no shell metacharacters are required; plain space-separated words suffice) can block the single-threaded Node.js event loop for an extended period with a small input, resulting in a denial of service. There is no code execution or data disclosure; impact is to availability only. Fixed in 1.8.5.
CVSS Metrics
- v4.0•HIGH•Score: 8.7CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
- v3.1•HIGH•Score: 7.5CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
EPSS Trends
Current EPSS score: 0.36%• Percentile: 28%
Techniques & Countermeasures
- CWE-407•Inefficient Algorithmic Complexity
An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached.
Affected Systems
- ljharb•shell-quote
≤ 1.8.4
- Npm•shell-quote
< 1.9.0
References (6)
- https://github.com/ljharb/shell-quote/security/advisories/GHSA-395f-4hp3-45gv
- https://www.npmjs.com/package/shell-quote
- https://nvd.nist.gov/vuln/detail/CVE-2026-13311
- https://github.com/ljharb/shell-quote/commit/7ff5488599d01c323514f02f5efb74088dd134ec
- https://github.com/ljharb/shell-quote
- https://github.com/ljharb/shell-quote/releases/tag/v1.9.0