Description
The brace-expansion library generates arbitrary strings containing a common prefix and suffix. Prior to versions 5.0.5, 3.0.2, 2.0.3, and 1.1.13, a brace pattern with a zero step value (e.g., `{1..2..0}`) causes the sequence generation loop to run indefinitely, making the process hang for seconds and allocate heaps of memory. Versions 5.0.5, 3.0.2, 2.0.3, and 1.1.13 fix the issue. As a workaround, sanitize strings passed to `expand()` to ensure a step value of `0` is not used.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| juliangruber | brace-expansion | >= 4.0.0, < 5.0.5, >= 3.0.0, < 3.0.2, >= 2.0.0, < 2.0.3, < 1.1.13 | — |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | node-brace-expansion | 2.0.3+~1.1.2-1 | — |
| Debian 13 | node-brace-expansion | No fix yet | — |
| Debian 12 | node-brace-expansion | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.10 | node-brace-expansion | No fix yet | — |
| Ubuntu 26.04 LTS | node-brace-expansion | No fix yet | — |
| Ubuntu 25.10 | node-brace-expansion | No fix yet | — |
| Ubuntu 24.04 LTS | node-brace-expansion | No fix yet | — |
| Ubuntu 22.04 LTS | node-brace-expansion | No fix yet | — |
Show 2 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 20.04 LTS | node-brace-expansion | No fix yet | — |
| Ubuntu 18.04 LTS | node-brace-expansion | No fix yet | — |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 3 | js-jquery +1 | No fix yet | — |
Wolfi
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Wolfi rolling | argo-workflows-ui-4.0 | 4.0.3-r2 | — |
| Wolfi rolling | eslint | 10.1.0-r1 | — |
| Wolfi rolling | jupyter-base-notebook | 7.6.1-r0 | — |
| Wolfi rolling | katib-earlystopping +8 | 0.19.0-r31 | — |
| Wolfi rolling | katib-suggestion-goptuna-compat | 0.19.0-r40 | — |
| Wolfi rolling | kubeflow-centraldashboard | 1.10.0-r18 | — |
| Wolfi rolling | langfuse-3 +1 | 3.164.0-r1 | — |
| Wolfi rolling | lerna | 9.0.7-r2 | — |
| Wolfi rolling | nextcloud-server-33 | 33.0.6-r7 | — |
| Wolfi rolling | npm | 11.12.1-r0 | — |
| Wolfi rolling | opensearch-dashboards-3 +12 | 3.5.0-r13 | — |
| Wolfi rolling | pnpm-stage0 | No fix yet | — |
| Wolfi rolling | prism | 5.14.3-r13 | — |
| Wolfi rolling | pulumi-language-nodejs | 3.228.0-r1 | — |
| Wolfi rolling | py3.10-jupyterlab +3 | 4.6.1-r1 | — |
| Wolfi rolling | rancher-api-ui | 1.2.3-r8 | — |
| Wolfi rolling | renovate | 43.104.7-r1 | — |
| Wolfi rolling | saf | 1.6.0-r0 | — |
| Wolfi rolling | serve | 14.2.6-r1 | — |
| Wolfi rolling | sqlpad | 7.5.7-r17 | — |
| Wolfi rolling | tileserver-gl | 5.5.0-r11 | — |
| Wolfi rolling | ts-patch | 4.0.1-r0 | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| npm | brace-expansion | >= 4.0.0, < 5.0.5 | 5.0.5 | GHSA-f886-m6hf-6m8v |
| npm | brace-expansion | >= 3.0.0, < 3.0.2 | 3.0.2 | GHSA-f886-m6hf-6m8v |
| npm | brace-expansion | >= 2.0.0, < 2.0.3 | 2.0.3 | GHSA-f886-m6hf-6m8v |
| npm | brace-expansion | < 1.1.13 | 1.1.13 | GHSA-f886-m6hf-6m8v |
Advisories 4
- WID-SEC-2026-3046 IBM Concert: Mehrere Schwachstellen BSI CERT-Bund (WID) · Nov 10, 2026
- WID-SEC-2026-2933 Splunk SOAR: Mehrere Schwachstellen BSI CERT-Bund (WID) · Nov 2, 2026
- WID-SEC-2026-1608 Atlassian Produkte (Bamboo, Bitbucket, Confluence, Crucible, Fisheye und Jira): Mehrere Schwachstellen BSI CERT-Bund (WID) · Jul 19, 2026
- WID-SEC-2026-1654 IBM App Connect Enterprise: Mehrere Schwachstellen BSI CERT-Bund (WID) · Jun 28, 2026
References
- https://github.com/juliangruber/brace-expansion/security/advisories/GHSA-f886-m6hf-6m8v
- https://github.com/juliangruber/brace-expansion/issues/98
- https://github.com/juliangruber/brace-expansion/pull/95
- https://github.com/juliangruber/brace-expansion/pull/96
- https://github.com/juliangruber/brace-expansion/pull/97
- https://github.com/juliangruber/brace-expansion/commit/311ac0d54994158c0a384e286a7d6cbb17ee8ed5
- https://github.com/juliangruber/brace-expansion/commit/7fd684f89fdde3549563d0a6522226a9189472a2
- https://github.com/juliangruber/brace-expansion/commit/b9cacd9e55e7a1fa588fe4b7bb1159d52f1d902a
- https://github.com/juliangruber/brace-expansion/blob/daa71bcb4a30a2df9bcb7f7b8daaf2ab30e5794a/src/index.ts#L107-L113
- https://github.com/juliangruber/brace-expansion/blob/daa71bcb4a30a2df9bcb7f7b8daaf2ab30e5794a/src/index.ts#L184