{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","feed_url":"https://feed.craftedsignal.io/products/brace-expansion--5.0.7/feed.json","home_page_url":"https://feed.craftedsignal.io/","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[{"cvss":7.5,"id":"CVE-2026-14257"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["brace-expansion (\u003c= 5.0.7)"],"_cs_severities":["low"],"_cs_tags":["denial-of-service","vulnerability","node.js","software-supply-chain"],"_cs_type":"advisory","_cs_vendors":[],"content_html":"\u003cp\u003eA high-severity denial of service (DoS) vulnerability, tracked as CVE-2026-14257, exists in the Node.js \u003ccode\u003ebrace-expansion\u003c/code\u003e library, affecting versions up to and including 5.0.7. The library's \u003ccode\u003eexpand()\u003c/code\u003e function, which is used for generating string expansions from brace patterns, fails to properly bound the total length of the expanded strings despite having a limit on the number of results. Attackers can leverage this by crafting input with many chained brace groups, such as \u003ccode\u003e'{a,b}'.repeat(N)\u003c/code\u003e. This input causes each individual expanded result to grow in length with the number of groups, leading to excessive memory consumption. When processing even a relatively small input (~7.5 KB with \u003ccode\u003e'{a,b}'.repeat(1500)\u003c/code\u003e), the Node.js process exhausts its memory and crashes due to an uncatchable fatal out-of-memory error, resulting in a denial of service for the application. Applications directly using \u003ccode\u003ebrace-expansion\u003c/code\u003e or indirectly through common dependencies like \u003ccode\u003eminimatch\u003c/code\u003e or \u003ccode\u003eglob\u003c/code\u003e are at risk.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAn attacker crafts a malicious input string containing numerous chained brace groups (e.g., \u003ccode\u003e'{a,b}'.repeat(1500)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe attacker delivers this crafted input to a vulnerable application that processes user-supplied strings.\u003c/li\u003e\n\u003cli\u003eThe vulnerable application passes the crafted input string to the \u003ccode\u003ebrace-expansion.expand()\u003c/code\u003e function, either directly or via a transitive dependency like \u003ccode\u003eminimatch\u003c/code\u003e or \u003ccode\u003eglob\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eexpand()\u003c/code\u003e function begins processing the input, attempting to generate all possible expansions.\u003c/li\u003e\n\u003cli\u003eDuring expansion, \u003ccode\u003ebrace-expansion\u003c/code\u003e generates intermediate and final string results where the individual string length grows linearly with the number of brace groups.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ebrace-expansion\u003c/code\u003e process allocates and holds an increasing amount of memory for these growing strings and intermediate arrays.\u003c/li\u003e\n\u003cli\u003eThe Node.js V8 engine exhausts its available heap memory as the total output size (\u003ccode\u003emax\u003c/code\u003e results * \u003ccode\u003eN\u003c/code\u003e character length) grows without bound.\u003c/li\u003e\n\u003cli\u003eThe Node.js process terminates abruptly due to a fatal, uncatchable out-of-memory error, leading to a complete denial of service for the affected application.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eThis vulnerability allows an attacker to cause a fatal denial of service for any Node.js application that processes untrusted or attacker-controlled strings through \u003ccode\u003ebrace-expansion.expand()\u003c/code\u003e, either directly or indirectly via popular libraries such as \u003ccode\u003eminimatch\u003c/code\u003e or \u003ccode\u003eglob\u003c/code\u003e. The issue is critical because the out-of-memory error is uncatchable, meaning \u003ccode\u003etry/catch\u003c/code\u003e blocks around the \u003ccode\u003eexpand()\u003c/code\u003e call will not prevent the process from crashing entirely. Even a small payload of approximately 7.5 KB is sufficient to crash a default Node.js process, leading to severe availability impacts for affected services. The vulnerability impacts application stability and reliability.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade the \u003ccode\u003ebrace-expansion\u003c/code\u003e package to a patched release (version 5.0.8 or later) to remediate CVE-2026-14257.\u003c/li\u003e\n\u003cli\u003eIf immediate upgrade is not feasible, avoid passing untrusted input directly to \u003ccode\u003ebrace-expansion.expand()\u003c/code\u003e or to components that use it (e.g., \u003ccode\u003eminimatch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFor applications that must process untrusted input, explicitly configure a small \u003ccode\u003emax\u003c/code\u003e and the new \u003ccode\u003emaxLength\u003c/code\u003e option when using \u003ccode\u003ebrace-expansion\u003c/code\u003e to limit both the number and total length of expansions.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-07-24T22:02:52Z","date_published":"2026-07-24T22:02:52Z","id":"https://feed.craftedsignal.io/briefs/2026-07-brace-expansion-dos/","summary":"An attacker can exploit CVE-2026-14257, a denial of service vulnerability in the `brace-expansion` Node.js library, by crafting an input with deeply chained brace groups that causes the expanded string length to grow without bound, leading to an uncatchable out-of-memory process crash in any application processing untrusted input via `expand()` directly or through dependencies like `minimatch` or `glob`.","title":"Denial of Service via Unbounded Expansion Length in Node.js brace-expansion Library (CVE-2026-14257)","url":"https://feed.craftedsignal.io/briefs/2026-07-brace-expansion-dos/"}],"language":"en","title":"CraftedSignal Threat Feed - Brace-Expansion (\u003c= 5.0.7)","version":"https://jsonfeed.org/version/1.1"}