Skip to main content

shell-quote CVE-2026-13311

| EUVDEUVD-2026-39180 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-06-25 7ffcee3d-2c14-4c3e-b844-86c6a321a158 GHSA-395f-4hp3-45gv
8.7
CVSS 4.0 · Vendor: 7ffcee3d-2c14-4c3e-b844-86c6a321a158
View

Attack ChainAIDerived

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

  1. Access
    Identify endpoint feeding input to parse()
  2. Delivery
    Craft small space-separated word payload
  3. Exploit
    Submit single unauthenticated request
  4. Execution
    Trigger O(n^2) token finalization
  5. Persist
    Block Node.js event loop
  6. Impact
    Service-wide denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

Exploitation requires that the application passes an attacker-controlled string into a code path that calls shell-quote's parse() function on a version prior to 1.8.5 - that dependency-and-data-flow condition is the real prerequisite, not any product configuration flag. No shell metacharacters, authentication (PR:N), or user interaction (UI:N) are needed, and ordinary space-separated words suffice, so where untrusted input reaches parse() this is remotely and unauthenticatedly triggerable. The principal limiting factor is reachability: if an application only invokes parse() on trusted, length-bounded internal data, or never exposes parse() to external input, the vulnerability is effectively unexploitable despite the high CVSS availability score. Impact is confined to availability (event-loop stall) - no code execution or data exposure is possible.

Impact

The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes network-reachable, low-complexity, unauthenticated exploitation with VA:H (high availability impact) and no confidentiality or integrity impact, yielding the reported 8.7 score - high specifically because availability damage is easy and unconditional. However, real-world priority should be tempered: there is no EPSS score, no KEV listing, and no POC referenced in the input, and the actual blast radius depends entirely on whether a given application feeds untrusted external input into parse(). The 'RCE' tag in the intelligence source directly conflicts with the description, which explicitly states there is no code execution or data disclosure - treat the RCE tag as inaccurate and rely on the VA:H/availability-only assessment. This is a genuine but bounded DoS: dangerous for services that parse user-supplied strings on the request path, low concern for applications that only call parse() on trusted, bounded internal input.

Exploit ScenarioDerived

An attacker identifies a web endpoint or API that forwards a user-supplied field (for example a search string, filename, or command argument) into a shell-quote parse() call. They submit a single small request containing a long run of space-separated words; the quadratic parsing pins a CPU core and blocks the Node.js event loop, freezing all concurrent requests on that instance. No public exploit code is identified at time of analysis, but the trigger is trivial to construct and requires no authentication or special characters.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 – Jun 25, 2026

Denial of service in the shell-quote Node.js library (versions prior to 1.8.5) lets remote attackers stall the single-threaded event loop by passing an attacker-controlled string into any code path that calls parse(). The flaw is purely algorithmic - parse() builds its token list with Array.prototype.concat as a reduce accumulator, giving O(n^2) behavior so even a small payload of plain space-separated words causes disproportionate CPU consumption. There is no public exploit identified at time of analysis and no KEV listing; impact is to availability only with no code execution or data disclosure despite the misleading 'RCE' source tag.

RemediationAI

Vendor-released patch: upgrade shell-quote to version 1.8.5 or later, which replaces the quadratic concat-based accumulator; this is the primary and complete fix and should be applied directly and via transitive dependency overrides (npm 'overrides' or yarn 'resolutions') since shell-quote is frequently pulled in indirectly. Verify and remediate using the advisory at https://github.com/ljharb/shell-quote/security/advisories/GHSA-395f-4hp3-45gv and confirm the resolved version on https://www.npmjs.com/package/shell-quote. If immediate upgrade is not possible, apply input-size limits before calling parse() - cap the maximum length and token count of any untrusted string reaching parse() (note the trade-off: legitimate long command strings will be rejected) - and where feasible move parse() calls off the main request path or into a worker thread so a slow parse cannot block the shared event loop. Filtering shell metacharacters is NOT an effective workaround because plain space-separated words trigger the issue.

Affected VersionsENISA

shell-quote 0 ≤1.8.4

Affected Packages

npm shell-quote fix: 1.9.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

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

Technical ContextAI · show details

shell-quote is a popular npm utility that parses and quotes shell command strings in Node.js applications, commonly used to safely build or interpret command lines. The root cause is CWE-407 (Inefficient Algorithmic Complexity): inside parse(), parsed tokens are finalized using Array.prototype.concat as the accumulator of a reduce() call. Because concat returns a new array each iteration, the entire growing result array is reallocated and copied on every token, producing quadratic O(n^2) time relative to the number of input tokens. Notably no shell metacharacters are required to trigger the pathological path - ordinary whitespace-separated words are sufficient - so any input length sanitization based on metacharacter filtering provides no protection. The single-threaded nature of the Node.js event loop means this CPU spike blocks all other request processing for the duration.

Know when Node.js 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 (7ffcee3d-2c14-4c3e-b844-86c6a321a158) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote, low-complexity, unauthenticated trigger via plain input with no user interaction; impact is availability-only event-loop blocking, so C:N/I:N and A:H, scope unchanged.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 6.5 MEDIUM

Primary rating from Vendor (7ffcee3d-2c14-4c3e-b844-86c6a321a158).

CVSS VectorVendor: 7ffcee3d-2c14-4c3e-b844-86c6a321a158

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

DescriptionCVE.org

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.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 38 npm packages depend on shell-quote (15 direct, 23 indirect)

Ecosystem-wide dependent count for version 1.9.0.

Executive ViewAI

Why It Matters

The shell-quote Node.js library (versions prior to 1.8.5) contains a denial-of-service vulnerability in its parse() function that allows remote attackers to exhaust server CPU resources through algorithm-triggered complexity attacks. Organizations using affected versions face risk of service unavailability when processing untrusted input, with potential impact to production systems and customer-facing applications.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) enforce maximum input size limits prior to parse() invocation, (2) implement request-level rate limiting on endpoints processing untrusted input, (3) apply execution timeout mechanisms on parse() operations, (4) evaluate alternative libraries (e.g., shell-escape or os.quote alternatives), (5) configure Web Application Firewall to filter suspicious input patterns before reaching vulnerable code.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
High
extremely popular npm package, frequently pulled in as a transitive Node.js dependency
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Social Media
2
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 12 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Affected

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