Every CVE Search/ Get API key

CVE-2026-33750

brace-expansion: Zero-step sequence causes process hang and memory exhaustion

6.5 MediumFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
Required

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.45%Up 0.4 points since Mar 28, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.5

brace-expansion: Zero-step sequence causes process hang and memory exhaustion

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.

Record
CVE-2026-33750
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
EUVDEUVD-2026-16620 6.5

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.

Record
EUVD-2026-16620
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-f886-m6hf-6m8v 6.5

brace-expansion: Zero-step sequence causes process hang and memory exhaustion

Impact

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.

The loop in question:

https://github.com/juliangruber/brace-expansion/blob/daa71bcb4a30a2df9bcb7f7b8daaf2ab30e5794a/src/index.ts#L184

test() is one of

https://github.com/juliangruber/brace-expansion/blob/daa71bcb4a30a2df9bcb7f7b8daaf2ab30e5794a/src/index.ts#L107-L113

The increment is computed as Math.abs(0) = 0, so the loop variable never advances. On a test machine, the process hangs for about 3.5 seconds and allocates roughly 1.9 GB of memory before throwing a RangeError. Setting max to any value has no effect because the limit is only checked at the output combination step, not during sequence generation.

This affects any application that passes untrusted strings to expand(), or by error sets a step value of 0. That includes tools built on minimatch/glob that resolve patterns from CLI arguments or config files. The input needed is just 10 bytes.

Patches

Upgrade to versions

  • 5.0.5+

A step increment of 0 is now sanitized to 1, which matches bash behavior.

Workarounds

Sanitize strings passed to expand() to ensure a step value of 0 is not used.

Record
GHSA-f886-m6hf-6m8v
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
NVD 6.5

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.

Record
CVE-2026-33750
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
OSV 6.5

brace-expansion: Zero-step sequence causes process hang and memory exhaustion

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.

Record
CVE-2026-33750
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
OSVDEBIAN-CVE-2026-33750 7.5

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.

Record
DEBIAN-CVE-2026-33750
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
Show 15 moreShow less
OSVGHSA-f886-m6hf-6m8v 6.5

brace-expansion: Zero-step sequence causes process hang and memory exhaustion

Impact

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.

The loop in question:

https://github.com/juliangruber/brace-expansion/blob/daa71bcb4a30a2df9bcb7f7b8daaf2ab30e5794a/src/index.ts#L184

test() is one of

https://github.com/juliangruber/brace-expansion/blob/daa71bcb4a30a2df9bcb7f7b8daaf2ab30e5794a/src/index.ts#L107-L113

The increment is computed as Math.abs(0) = 0, so the loop variable never advances. On a test machine, the process hangs for about 3.5 seconds and allocates roughly 1.9 GB of memory before throwing a RangeError. Setting max to any value has no effect because the limit is only checked at the output combination step, not during sequence generation.

This affects any application that passes untrusted strings to expand(), or by error sets a step value of 0. That includes tools built on minimatch/glob that resolve patterns from CLI arguments or config files. The input needed is just 10 bytes.

Patches

Upgrade to versions

  • 5.0.5+

A step increment of 0 is now sanitized to 1, which matches bash behavior.

Workarounds

Sanitize strings passed to expand() to ensure a step value of 0 is not used.

Record
GHSA-f886-m6hf-6m8v
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Weakness
CWE-400
Updated
2026-11-02
OSVOESA-2026-1835 6.5

nodejs-brace-expansion security update

Brace expansion as known from sh/bash

Security Fix(es):

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.(CVE-2026-33750)

Record
OESA-2026-1835
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVROOT-APP-NPM-CVE-2026-33750 6.5

CVE-2026-33750 in brace-expansion - Patched by Root

Root has patched CVE-2026-33750 in the brace-expansion package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2026-33750
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-33750 6.5

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.

Record
UBUNTU-CVE-2026-33750
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVAZL-81075 No score

CVE-2026-33750 affecting package js-jquery 3.5.0-4

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.

Record
AZL-81075
Updated
2026-11-05
OSVAZL-81084 No score

CVE-2026-33750 affecting package nodejs-nodemon 2.0.3-5

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.

Record
AZL-81084
Updated
2026-11-05
OSVCLSA-2026-1777250307 No score

TuxCare security update for brace-expansion (1 CVE)

TuxCare rebuilt brace-expansion to address 1 CVE. Fixed in 1.1.12-tuxcare.2.

Record
CLSA-2026-1777250307
Updated
2026-11-02
OSVCLSA-2026-1781830545 No score

TuxCare security update for brace-expansion (3 CVEs)

TuxCare rebuilt brace-expansion to address 3 CVEs. Fixed in 2.0.1-tuxcare.1.

Record
CLSA-2026-1781830545
Updated
2026-11-02
OSVCLSA-2026-1781830551 No score

TuxCare security update for brace-expansion (4 CVEs)

TuxCare rebuilt brace-expansion to address 4 CVEs. Fixed in 1.1.11-tuxcare.1.

Record
CLSA-2026-1781830551
Updated
2026-11-02
OSVCLSA-2026-1792233308 No score

TuxCare security update for brace-expansion (4 CVEs)

TuxCare rebuilt brace-expansion to address 4 CVEs. Fixed in 4.0.1-tuxcare.3.

Record
CLSA-2026-1792233308
Updated
2026-11-02
OSVCLSA-2026-1792233325 No score

TuxCare security update for brace-expansion (1 CVE)

TuxCare rebuilt brace-expansion to address 1 CVE. Fixed in 5.0.4-tuxcare.4.

Record
CLSA-2026-1792233325
Updated
2026-11-02
OSVCLSA-2026-1792243228 No score

TuxCare security update for brace-expansion (4 CVEs)

TuxCare rebuilt brace-expansion to address 4 CVEs. Fixed in 2.0.2-tuxcare.4.

Record
CLSA-2026-1792243228
Updated
2026-11-02
OSVCLSA-2026-1792508599 No score

TuxCare security update for brace-expansion (1 CVE)

TuxCare rebuilt brace-expansion to address 1 CVE. Fixed in 5.0.3-tuxcare.2.

Record
CLSA-2026-1792508599
Updated
2026-11-02
OSVCLSA-2026-1793102029 No score

TuxCare security update for brace-expansion (5 CVEs)

TuxCare rebuilt brace-expansion to address 5 CVEs. Fixed in 1.1.3-tuxcare.2.

Record
CLSA-2026-1793102029
Updated
2026-11-02
OSVCLSA-2026-1793808088 No score

TuxCare security update for brace-expansion (1 CVE)

TuxCare rebuilt brace-expansion to address 1 CVE. Fixed in 5.0.2-tuxcare.2.

Record
CLSA-2026-1793808088
Updated
2026-11-04

Affected products

Affected packages

Affected packages
PackageAffectedFixed
brace-expansion
npm
4.0.0 up to 5.0.5
5.0.5
brace-expansion
npm
3.0.0 up to 3.0.2
3.0.2
brace-expansion
npm
2.0.0 up to 2.0.3
2.0.3
brace-expansion
npm
before 1.1.13
1.1.13
js-jquery
Azure Linux:3
through 3.5.0-4 None known
nodejs-nodemon
Azure Linux:3
through 2.0.3-5 None known
brace-expansion
TuxCare:npm
1.1.12-tuxcare.0 up to 1.1.12-tuxcare.2, plus listed versions
1.1.121.1.12-tuxcare.1
1.1.12-tuxcare.2
brace-expansion
TuxCare:npm
From an advisory covering 3 CVEs
2.0.1-tuxcare.0 up to 2.0.1-tuxcare.1, plus listed versions
2.0.1
2.0.1-tuxcare.1
brace-expansion
TuxCare:npm
From an advisory covering 4 CVEs
1.1.11-tuxcare.0 up to 1.1.11-tuxcare.1, plus listed versions
1.1.11
1.1.11-tuxcare.1
brace-expansion
TuxCare:npm
From an advisory covering 4 CVEs
4.0.1-tuxcare.0 up to 4.0.1-tuxcare.3, plus listed versions
4.0.14.0.1-tuxcare.14.0.1-tuxcare.2
4.0.1-tuxcare.3
Show 23 moreShow less
Affected packages
PackageAffectedFixed
brace-expansion
TuxCare:npm
5.0.4-tuxcare.0 up to 5.0.4-tuxcare.4, plus listed versions
5.0.45.0.4-tuxcare.15.0.4-tuxcare.25.0.4-tuxcare.3
5.0.4-tuxcare.4
brace-expansion
TuxCare:npm
From an advisory covering 4 CVEs
2.0.2-tuxcare.0 up to 2.0.2-tuxcare.4, plus listed versions
2.0.22.0.2-tuxcare.12.0.2-tuxcare.22.0.2-tuxcare.3
2.0.2-tuxcare.4
brace-expansion
TuxCare:npm
5.0.3-tuxcare.0 up to 5.0.3-tuxcare.2, plus listed versions
5.0.35.0.3-tuxcare.1
5.0.3-tuxcare.2
brace-expansion
TuxCare:npm
From an advisory covering 5 CVEs
1.1.3-tuxcare.0 up to 1.1.3-tuxcare.2, plus listed versions
1.1.31.1.3-tuxcare.1
1.1.3-tuxcare.2
brace-expansion
TuxCare:npm
5.0.2-tuxcare.0 up to 5.0.2-tuxcare.2, plus listed versions
5.0.25.0.2-tuxcare.1
5.0.2-tuxcare.2
node-brace-expansion
Debian:12
All versions, plus listed versions
2.0.1+~1.1.0-12.0.1+~1.1.0-22.0.1-22.0.3+~1.1.2-12.0.3+~1.1.2-22.0.3+~1.1.2-32.1.4+~1.1.2-12.1.7+~1.1.2-1
None known
node-brace-expansion
Debian:13
All versions, plus listed versions
2.0.1+~1.1.0-22.0.3+~1.1.2-12.0.3+~1.1.2-22.0.3+~1.1.2-32.1.4+~1.1.2-12.1.7+~1.1.2-1
None known
node-brace-expansion
Debian:14
before 2.0.3+~1.1.2-1, plus listed versions
2.0.1+~1.1.0-2
2.0.3+~1.1.2-1
nodejs-brace-expansion
openEuler:20.03-LTS-SP4
before 1.1.11-3.oe2003sp4
1.1.11-3.oe2003sp4
nodejs-brace-expansion
openEuler:22.03-LTS-SP4
before 1.1.11-3.oe2203sp4
1.1.11-3.oe2203sp4
nodejs-brace-expansion
openEuler:24.03-LTS
before 1.1.11-5.oe2403sp3
1.1.11-5.oe2403sp3
nodejs-brace-expansion
openEuler:24.03-LTS-SP1
before 1.1.11-5.oe2403sp1
1.1.11-5.oe2403sp1
nodejs-brace-expansion
openEuler:24.03-LTS-SP2
before 1.1.11-5.oe2403sp2
1.1.11-5.oe2403sp2
nodejs-brace-expansion
openEuler:24.03-LTS-SP3
before 1.1.11-5.oe2403sp3
1.1.11-5.oe2403sp3
brace-expansion
Root:npm
before 2.0.1-aikido.3
2.0.1-aikido.31.1.12-aikido.21.1.11-aikido.32.0.2-aikido.25.0.3-aikido.15.0.3-aikido.22.0.1-aikido.42.0.2-aikido.31.1.12-aikido.31.1.11-aikido.41.1.11-aikido.51.1.12-aikido.41.1.11-aikido.62.0.1-aikido.52.0.2-aikido.45.0.4-aikido.25.0.4-aikido.35.0.4-aikido.45.0.4-aikido.55.0.3-aikido.35.0.3-aikido.45.0.3-aikido.52.0.1-aikido.61.1.12-aikido.51.1.12-aikido.62.0.1-aikido.71.1.11-aikido.72.0.2-aikido.52.0.2-aikido.65.0.3-aikido.65.0.5-aikido.12.0.3-aikido.11.1.13-aikido.15.0.5-aikido.25.0.5-aikido.32.0.3-aikido.21.1.13-aikido.22.0.3-aikido.35.0.5-aikido.41.1.13-aikido.31.1.13-aikido.41.1.13-aikido.55.0.5-aikido.5
@rootio/brace-expansion
Root:npm
before 1.1.11-root.io.1
1.1.11-root.io.12.0.1-root.io.12.0.2-root.io.11.1.12-root.io.12.0.1-root.io.21.1.11-root.io.22.0.1-root.io.31.1.12-root.io.21.1.11-root.io.32.0.2-root.io.25.0.3-root.io.15.0.3-root.io.22.0.1-root.io.42.0.2-root.io.31.1.12-root.io.31.1.11-root.io.41.1.11-root.io.51.1.12-root.io.41.1.11-root.io.62.0.1-root.io.52.0.2-root.io.45.0.4-root.io.25.0.4-root.io.35.0.4-root.io.45.0.4-root.io.55.0.3-root.io.35.0.3-root.io.45.0.3-root.io.52.0.1-root.io.61.1.12-root.io.51.1.12-root.io.62.0.1-root.io.71.1.11-root.io.72.0.2-root.io.52.0.2-root.io.65.0.3-root.io.65.0.5-root.io.12.0.3-root.io.11.1.13-root.io.15.0.5-root.io.25.0.5-root.io.32.0.3-root.io.21.1.13-root.io.22.0.3-root.io.35.0.5-root.io.41.1.13-root.io.31.1.13-root.io.41.1.13-root.io.55.0.5-root.io.5
node-brace-expansion
Ubuntu:18.04:LTS
All versions, plus listed versions
1.1.8-1
None known
node-brace-expansion
Ubuntu:20.04:LTS
All versions, plus listed versions
1.1.8-11.1.11-1
None known
node-brace-expansion
Ubuntu:22.04:LTS
All versions, plus listed versions
2.0.0-12.0.1-1
None known
node-brace-expansion
Ubuntu:24.04:LTS
All versions, plus listed versions
2.0.1-22.0.1+~1.1.0-1
None known
node-brace-expansion
Ubuntu:25.10
All versions, plus listed versions
2.0.1+~1.1.0-12.0.1+~1.1.0-2
None known
node-brace-expansion
Ubuntu:26.10
All versions, plus listed versions
2.0.1+~1.1.0-22.0.3+~1.1.2-22.0.3+~1.1.2-32.1.4+~1.1.2-1
None known
node-brace-expansion
Ubuntu:26.04:LTS
All versions, plus listed versions
2.0.1+~1.1.0-2
None known

History

History
RecordedChangedSources
affectedOSV
affected, aliases, factsOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-33750 is a medium vulnerability (CVSS 6.5) in Juliangruber Brace-expansion, published March 26, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.45%, the 39th percentile. Fixed in brace-expansion 5.0.5.

References

Show 11 moreShow less
MoveEnter Open