<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 01 Oct 2026 23:48:49 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-102276</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-102276</link>
      <description>&lt;p&gt;The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10, crafted brace patterns can exhaust the native stack in parseCommaParts because parseCommaParts recursively processes the remainder once per brace group and uses push.apply to pass every element of a very large comma-part array as a function argument. Patterns containing many comma-separated brace groups trigger the recursive path, while the large array triggers the argument-array path without deep recursion. These paths cause recursive and argument-array native stack exhaustion before max or maxLength can limit output, potentially terminating the Node.js process in a process-terminating denial of service. This issue is fixed in versions 1.1.19, 2.1.5, 3.0.7, and 5.0.10.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10, crafted brace patterns can exhaust the native stack in parseCommaParts because parseCommaParts recursively processes the remainder once per brace group and uses push.apply to pass every element of a very large comma-part array as a function argument. Patterns containing many comma-separated brace groups trigger the recursive path, while the large array triggers the argument-array path without deep recursion. These paths cause recursive and argument-array native stack exhaustion before max or maxLength can limit output, potentially terminating the Node.js process in a process-terminating denial of service. This issue is fixed in versions 1.1.19, 2.1.5, 3.0.7, and 5.0.10.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-102276</guid>
    </item>
    <item>
      <title>GHSA-6j4f-fj2g-mc7p — brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-6j4f-fj2g-mc7p</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: brace-expansion&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`parseCommaParts()` can exhaust the native stack and crash the process. There are two distinct ways to trigger it, both reachable from a single untrusted pattern string.&lt;/p&gt;
&lt;p&gt;This is the parsing-side counterpart to CVE-2026-14257 / GHSA-mh99-v99m-4gvg. That fix made `expand_()` iterative and documented a constant-stack-depth guarantee, but `parseCommaParts()` was left recursive, so the guarantee only held for one of the two parsing paths.&lt;/p&gt;
&lt;p&gt;### Vector 1 - unbounded recursion on `post`&lt;/p&gt;
&lt;p&gt;`parseCommaParts()` recursed on the remainder of the string once per brace group:&lt;/p&gt;
&lt;p&gt;```js
const postParts = parseCommaParts(post)   // unbounded
```&lt;/p&gt;
&lt;p&gt;A brace group containing many comma-separated groups drives one recursion level per group:&lt;/p&gt;
&lt;p&gt;```js
expand(&amp;#39;{&amp;#39; + &amp;#39;{a},&amp;#39;.repeat(7000) + &amp;#39;b}&amp;#39;)
// RangeError: Maximum call stack size exceeded
```&lt;/p&gt;
&lt;p&gt;About 7,300 repetitions - roughly 29 KB of input - is enough on Node 24; roughly 6,300 (25 KB) on Node 18. The threshold is identical on every affected release line.&lt;/p&gt;
&lt;p&gt;### Vector 2 - `push.apply` with an unbounded array&lt;/p&gt;
&lt;p&gt;Even with the recursion removed, `parseCommaParts()` spread whole arrays into an argument list:&lt;/p&gt;
&lt;p&gt;```js
p.push.apply(p, postParts)
parts.push.apply(parts, p)
```&lt;/p&gt;
&lt;p&gt;`Function.prototype.apply` places one argument per element on the stack, so a single large array overflows it. This needs **no recursion depth at all** - the following reaches a recursion depth of exactly 1:&lt;/p&gt;
&lt;p&gt;```js
expand(&amp;#39;{{x},&amp;#39; + &amp;#39;a,&amp;#39;.repeat(125000) + &amp;#39;b}&amp;#39;)
// RangeError: Ma…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: brace-expansion&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`parseCommaParts()` can exhaust the native stack and crash the process. There are two distinct ways to trigger it, both reachable from a single untrusted pattern string.&lt;/p&gt;
&lt;p&gt;This is the parsing-side counterpart to CVE-2026-14257 / GHSA-mh99-v99m-4gvg. That fix made `expand_()` iterative and documented a constant-stack-depth guarantee, but `parseCommaParts()` was left recursive, so the guarantee only held for one of the two parsing paths.&lt;/p&gt;
&lt;p&gt;### Vector 1 - unbounded recursion on `post`&lt;/p&gt;
&lt;p&gt;`parseCommaParts()` recursed on the remainder of the string once per brace group:&lt;/p&gt;
&lt;p&gt;```js
const postParts = parseCommaParts(post)   // unbounded
```&lt;/p&gt;
&lt;p&gt;A brace group containing many comma-separated groups drives one recursion level per group:&lt;/p&gt;
&lt;p&gt;```js
expand(&amp;#39;{&amp;#39; + &amp;#39;{a},&amp;#39;.repeat(7000) + &amp;#39;b}&amp;#39;)
// RangeError: Maximum call stack size exceeded
```&lt;/p&gt;
&lt;p&gt;About 7,300 repetitions - roughly 29 KB of input - is enough on Node 24; roughly 6,300 (25 KB) on Node 18. The threshold is identical on every affected release line.&lt;/p&gt;
&lt;p&gt;### Vector 2 - `push.apply` with an unbounded array&lt;/p&gt;
&lt;p&gt;Even with the recursion removed, `parseCommaParts()` spread whole arrays into an argument list:&lt;/p&gt;
&lt;p&gt;```js
p.push.apply(p, postParts)
parts.push.apply(parts, p)
```&lt;/p&gt;
&lt;p&gt;`Function.prototype.apply` places one argument per element on the stack, so a single large array overflows it. This needs **no recursion depth at all** - the following reaches a recursion depth of exactly 1:&lt;/p&gt;
&lt;p&gt;```js
expand(&amp;#39;{{x},&amp;#39; + &amp;#39;a,&amp;#39;.repeat(125000) + &amp;#39;b}&amp;#39;)
// RangeError: Ma…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-6j4f-fj2g-mc7p</guid>
    </item>
    <item>
      <title>RHSA-2026:74161 — Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update</title>
      <link>https://vulnerability.circl.lu/vuln/rhsa-2026:74161</link>
      <description>&lt;p&gt;brace-expansion: brace-expansion: Denial of Service via stack exhaustion from crafted brace patterns brace-expansion: brace-expansion: Denial of Service via crafted brace patterns brace-expansion: brace-expansion: Denial of Service via uncontrolled recursion in nested brace patterns&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;brace-expansion: brace-expansion: Denial of Service via stack exhaustion from crafted brace patterns brace-expansion: brace-expansion: Denial of Service via crafted brace patterns brace-expansion: brace-expansion: Denial of Service via uncontrolled recursion in nested brace patterns&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/rhsa-2026:74161</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-102276</title>
      <link>https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-102276</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:18.04:LTS: node-brace-expansion, Ubuntu:20.04:LTS: node-brace-expansion, Ubuntu:22.04:LTS: node-brace-expansion, Ubuntu:24.04:LTS: node-brace-expansion, Ubuntu:26.04:LTS: node-brace-expansion&lt;/p&gt;
&lt;p&gt;The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10, crafted brace patterns can exhaust the native stack in parseCommaParts because parseCommaParts recursively processes the remainder once per brace group and uses push.apply to pass every element of a very large comma-part array as a function argument. Patterns containing many comma-separated brace groups trigger the recursive path, while the large array triggers the argument-array path without deep recursion. These paths cause recursive and argument-array native stack exhaustion before max or maxLength can limit output, potentially terminating the Node.js process in a process-terminating denial of service. This issue is fixed in versions 1.1.19, 2.1.5, 3.0.7, and 5.0.10.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:18.04:LTS: node-brace-expansion, Ubuntu:20.04:LTS: node-brace-expansion, Ubuntu:22.04:LTS: node-brace-expansion, Ubuntu:24.04:LTS: node-brace-expansion, Ubuntu:26.04:LTS: node-brace-expansion&lt;/p&gt;
&lt;p&gt;The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10, crafted brace patterns can exhaust the native stack in parseCommaParts because parseCommaParts recursively processes the remainder once per brace group and uses push.apply to pass every element of a very large comma-part array as a function argument. Patterns containing many comma-separated brace groups trigger the recursive path, while the large array triggers the argument-array path without deep recursion. These paths cause recursive and argument-array native stack exhaustion before max or maxLength can limit output, potentially terminating the Node.js process in a process-terminating denial of service. This issue is fixed in versions 1.1.19, 2.1.5, 3.0.7, and 5.0.10.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-102276</guid>
    </item>
  </channel>
</rss>
