Skip to content

fix: patch brace-expansion for CVE-2026-14257 - #5557

Open
danieltprice wants to merge 1 commit into
mainfrom
fix/brace-expansion-cve-2026-14257
Open

fix: patch brace-expansion for CVE-2026-14257#5557
danieltprice wants to merge 1 commit into
mainfrom
fix/brace-expansion-cve-2026-14257

Conversation

@danieltprice

Copy link
Copy Markdown
Collaborator

Summary

Patches all three transitive installs of brace-expansion to resolve CVE-2026-14257 (GHSA-mh99-v99m-4gvg), a HIGH-severity DoS: expand() limits result count but not result length, so chained brace groups can trigger an uncatchable V8 out-of-memory crash.

Changes

Lockfile-only npm update brace-expansion. Each install moves to the latest version within its dependent's declared semver range:

Before After Patched in
1.1.13 1.1.18 1.1.17
2.0.3 2.1.4 2.1.3
5.0.6 5.0.9 5.0.8

No package.json override, so nothing is frozen and each dependent stays within range.

Why not #5435

The contributed PR #5435 flags the same CVE but fixes it with "overrides": { "brace-expansion": "2.1.3" }, which forces all installs to an exact 2.1.3 — a cross-major downgrade for the ^5.0.5 consumer (markdownlint-cli → minimatch) and a permanent version freeze that blocks future patches. This PR takes the clean per-line approach instead and supersedes it.

Risk

Low practical exposure: brace-expansion is a dev/build-time transitive dep (glob, minimatch, markdownlint-cli), and the DoS requires attacker-controlled brace patterns, which the build doesn't process. Patched anyway for clean scans. All three target versions were published 2026-07-30, past the proxy cooldown.

This pull request and its description were written by Isaac.

Bump all three transitive installs of brace-expansion to their in-range
patched versions, resolving the unbounded-expansion DoS (GHSA-mh99-v99m-4gvg):

  1.1.13 -> 1.1.18  (patched in 1.1.17)
  2.0.3  -> 2.1.4   (patched in 2.1.3)
  5.0.6  -> 5.0.9   (patched in 5.0.8)

Done via a lockfile-only `npm update brace-expansion`, so each dependent
stays within its declared semver range and no version is frozen by an
override. Supersedes #5435, which forced all installs to an exact 2.1.3
via a package.json override (a cross-major downgrade for the 5.x consumer).

Co-authored-by: Isaac
@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
neon-next Error Error Aug 17, 2026 11:58am

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant