Bump brace-expansion from 1.1.16 to 1.1.18 - #1
Merged
joshuanapoli merged 3 commits intoAug 21, 2026
Conversation
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.16 to 1.1.18. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](juliangruber/brace-expansion@v1.1.16...v1.1.18) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.18 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
The runner executes dist/ directly, so a lockfile-only bump leaves the bundled copy of brace-expansion on the vulnerable 1.1.16 code and CI's 'Check dist is current' step fails. Rebuilt with 'npm run build'; the diff is confined to require_brace_expansion, which gains the EXPANSION_MAX / EXPANSION_MAX_LENGTH bounds that fix GHSA-mh99-v99m-4gvg and GHSA-rgw5-rvv9-x895. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
joshuanapoli
approved these changes
Aug 21, 2026
joshuanapoli
left a comment
Member
There was a problem hiding this comment.
Summary
Bumps the transitive brace-expansion 1.1.16 → 1.1.18 in package-lock.json, closing two HIGH-severity denial-of-service advisories:
- GHSA-mh99-v99m-4gvg (patched 1.1.17) — unbounded expansion length causing an out-of-memory process crash.
- GHSA-rgw5-rvv9-x895 (patched 1.1.18) — unbounded intermediate arrays, bypassing the CVE-2026-14257 mitigation.
I pushed one correction commit: build: rebuild dist for brace-expansion 1.1.18.
Risks
- The patch did not actually ship. This is a GitHub Action and
dist/is committed because the runner executes it directly. Dependabot only updatedpackage-lock.json, so the bundled copy ofbrace-expansioninsidedist/restore.mjsanddist/save.mjsstayed on the vulnerable 1.1.16 code. Merging as-authored would have closed the Dependabot alert while leaving the running action unpatched — the worst outcome, since the alert stops nagging but the vulnerability remains. CI caught this correctly:Check dist is currentfailed with "dist/ is stale". - Rebuild scope. Regenerating
dist/from a 2.3 MB bundle risks sweeping in unrelated drift. Verified it did not: all 16 diff hunks in each of the two bundles fall insidevar require_brace_expansion = __commonJS({, and nothing else in either file changed. - Behavioral change from the fix itself. 1.1.18 introduces defaults that did not previously exist —
EXPANSION_MAX = 1e5(wasInfinity) and a newEXPANSION_MAX_LENGTH = 4e6. Brace expansions above those bounds now truncate rather than run away. This action reachesbrace-expansionthroughminimatchunder@actions/cache, and its only glob is the fixed internal cache pattern for project slugs — nowhere near 100,000 expansions, and not attacker-controlled. No practical impact. - Stale branch. The PR was cut 11 days ago. I updated it from
mainbefore rebuilding sodist/was regenerated against currentsrc/, not an 11-day-old tree.
Analysis
Worked in a dedicated worktree on dependabot/npm_and_yarn/brace-expansion-1.1.18:
gh pr update-branchto merge currentmaininto the branch.npm ci— clean,found 0 vulnerabilities.npm test— 7 tests, all passing, including the cache-glob and key-uniqueness assertions.npm run build— esbuild regenerated both bundles.- Inspected
git diff -- distbefore committing. The change is exactly the upstream hardening:maxnow defaults toEXPANSION_MAXinstead ofInfinity, a newmaxLengthparameter threads throughexpand(), and the rewrittencombine()/expandSequence()helpers bail out onceout.length >= maxor the accumulatedlengthwould exceedmaxLength. That is the fix for both advisories, now actually present in the executed artifact. - Committed
dist/and pushed.
CI is green on the head commit — both build runs pass, including the Check dist is current step that was previously failing.
joshuanapoli
deleted the
dependabot/npm_and_yarn/brace-expansion-1.1.18
branch
August 21, 2026 01:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps brace-expansion from 1.1.16 to 1.1.18.
Commits
758fcd61.1.1827fbeedMerge commit from fork5c57cc21.1.17d757f1dnpm ignore.claudecb4b9e4fix: backport GHSA-mh99-v99m-4gvg (#129)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.