Skip to main content

brace-expansion CVE-2026-14257

| EUVDEUVD-2026-48285 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-07-23 seal GHSA-mh99-v99m-4gvg
7.5
CVSS 3.1 · Vendor: seal
View

Attack ChainAIDerived

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

  1. Access
    Find endpoint feeding input to glob/minimatch
  2. Delivery
    Craft chained brace string ({a,b}x1500)
  3. Exploit
    Submit ~7.5 KB request
  4. Execution
    expand() grows accumulator unbounded
  5. Persist
    Node heap exhausted, uncatchable OOM
  6. Impact
    Process crash, denial of service

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 that the target application pass an attacker-influenced string into brace-expansion.expand(), directly or transitively via minimatch/glob brace-pattern matching, on a version through 5.0.7; the malicious input must contain many chained brace groups (e.g. '{a,b}' repeated ~1500 times, ~7.5 KB) so per-result length grows while the count stays under the default max of 100,000. No authentication, user interaction, or non-default library configuration is needed (CVSS PR:N/UI:N) and the default install is vulnerable. The limiting factor is reachability: it is only exploitable where untrusted input actually flows into a brace-expansion call, so applications that never expose that code path, or that already length-validate input, are not affected.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) reflects a pure availability impact reachable over the network with low complexity and no authentication or user interaction, consistent with the description of a small request crashing a default process. No EPSS score or CISA KEV entry was provided, so there is no signal of active exploitation - treat this as no public exploit identified at time of analysis, though a concrete PoC trigger ('{a,b}'.repeat(1500)) is documented in the fix commit and README, lowering the bar to reproduce. Real-world priority hinges on reachability rather than raw score: the network vector only applies where an application actually routes untrusted input into brace-expansion.expand() (directly or via minimatch/glob brace patterns), so for services that never expose that path the effective risk is far below 7.5. Because the crash is an uncatchable OOM, a single small request can down a worker with no code execution or data exposure, making this an availability-only but potentially high-blast-radius issue for exposed Node.js services. No signals in the provided data conflict; the main uncertainty is per-deployment reachability, not the mechanism.

Exploit ScenarioDerived

An attacker sends a small HTTP request (about 7.5 KB) containing a value like '{a,b}' repeated ~1500 times to an endpoint that eventually passes the string into brace-expansion.expand(), for example through a glob or minimatch brace pattern used for filtering or path matching. The library builds an ever-larger accumulator until the Node.js heap is exhausted and the process dies with an uncatchable out-of-memory error, taking the service down. A working trigger string is published in the fix commit, so no exploit development is required.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 23, 2026

Denial of service in the brace-expansion Node.js library (through version 5.0.7) lets remote attackers crash a process via memory exhaustion by supplying a short crafted string to expand(). The expand() function capped the result count (default 100,000) but not per-result length, so chaining brace groups keeps the count legal while each string grows unbounded; roughly 7.5 KB of input ('{a,b}'.repeat(1500)) triggers a fatal, uncatchable out-of-memory crash in a default Node.js process. Because the library is reached transitively through minimatch and glob, any app that feeds attacker-influenced strings into brace pattern matching is exposed. There is no CISA KEV entry, but the fix commit and README publish a working proof-of-concept trigger string.

RemediationAI

Upgrade brace-expansion to 5.0.8 or later, which introduces a maxLength option (default 4,000,000 characters) that bounds accumulated output and intermediate arrays so memory stays flat regardless of how many brace groups are chained (Vendor-released patch: 5.0.8, commit https://github.com/juliangruber/brace-expansion/commit/a1bd33999ea75262c4749fff3bbb0d1372bd07b5). Because the package is almost always a transitive dependency, run 'npm ls brace-expansion' and force the resolved version up via an npm 'overrides' (or Yarn 'resolutions') entry, then rebuild lockfiles, since updating minimatch/glob alone may not immediately pull the patched release. If you cannot upgrade immediately, constrain exposure by validating or length-capping any user-supplied string before it reaches expand() (reject inputs above a few hundred bytes or containing many brace groups) and by isolating glob/minimatch calls in worker processes with request-size limits so an OOM crash does not take down the main service; the trade-off is that aggressive input caps can reject legitimate complex patterns and worker isolation adds operational overhead. On 5.0.8+ you can also pass an explicit lower maxLength to expand()/minimatch call sites that handle untrusted input for defense in depth.

Affected VersionsENISA

brace-expansion 0 ≤5.0.7

Affected Packages

npm brace-expansion fix: 1.1.17, 2.1.3, 3.0.3, 5.0.8

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

brace-expansion implements Bash-style brace expansion (e.g. '{a,b,c}' -> 'a','b','c') and is a foundational dependency of minimatch and node-glob, which underpin a large fraction of Node.js tooling and filesystem glob matching. The root cause is CWE-400 (Uncontrolled Resource Consumption): the combining logic in expand_() bounded only the number of emitted expansions (EXPANSION_MAX = 100,000) and never bounded the cumulative character length of the accumulator or the intermediate arrays built while combining brace sets. Since total output size is the product of result count and per-result length, chaining many small comma groups makes each result grow linearly (~1500 chars for 1500 chained groups) while the count stays under the cap, so the accumulator and intermediate arrays scale multiplicatively until the V8 heap is exhausted. The affected package is identified by CPE cpe:2.3:a:juliangruber:brace-expansion.

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 (seal) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Small unauthenticated network input crashes the process with an uncatchable OOM, giving availability-only impact (A:H), no confidentiality or integrity effect, and low attack complexity.

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 HIGH
Red Hat 7.5 HIGH

Primary rating from Vendor (seal).

CVSS VectorVendor: seal

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

brace-expansion through 5.0.7 is vulnerable to denial of service via memory exhaustion. The expand() function limits the number of results with a max option (default 100,000) but does not bound the length of each result string. By chaining multiple brace groups, an attacker keeps the result count under the limit while making each result progressively longer, so total memory scales with both count and string length until the process hits a fatal, uncatchable out-of-memory error. About 7.5 KB of input ('{a,b}'.repeat(1500)) crashes a default Node.js process. Any application that passes attacker-influenced strings to brace-expansion.expand() - directly or transitively via minimatch / glob brace patterns - can be crashed by a small request. Fixed in 5.0.8 by adding a maxLength option (default 4,000,000) that bounds accumulated output and intermediate arrays.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 2,867 npm packages depend on brace-expansion (65 direct, 2,826 indirect)

Ecosystem-wide dependent count for version 4.0.0.

Executive ViewAI

Why It Matters

Node.js applications using the brace-expansion library and its transitive dependents (glob, minimatch) face a high-severity denial-of-service vulnerability with publicly available exploit code enabling remote attackers to crash entire processes with minimal input. This impacts production availability for any organization processing file patterns or user input through these widely-used libraries.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict brace-expansion functions to trusted, non-user-supplied input only; (2) Enforce input validation with maximum string length (e.g., 1,000 characters) and maximum nesting depth (e.g., ≤5 brace groups) prior to expand() calls; (3) Deploy process-level memory monitoring with automatic restart on out-of-memory detection; (4) Run affected services in isolated containers or separate VMs to limit blast radius of process crashes.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Ubiquitous
transitive dependency of minimatch/glob, present in most Node.js projects
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor 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.3%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
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.

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