fix(deps): close Dependabot critical/high/medium advisories - #2180
Merged
Conversation
Closes 56 of 57 open alerts — 21 of 22 unique advisories. Everything is transitive except the `next` devDependency, so the bulk of the fix tightens the existing `overrides` block, which in several cases still admitted the vulnerable version (`shell-quote: ">=1.8.4 <2"` allowed exactly the vulnerable 1.8.4). Tightened: - seroval >=1.4.1 -> >=1.5.3 (critical, GHSA-mv8w-475r-vwqw) - shell-quote >=1.8.4 -> >=1.9.0 (high, GHSA-395f-4hp3-45gv) - fast-uri >=3.1.2 -> >=3.1.4 (2 high, GHSA-4c8g-83qw-93j6 / GHSA-v2hh-gcrm-f6hx) - svgo >=4.0.1 -> >=4.0.2 (high, GHSA-2p49-hgcm-8545) - postcss <8.5.10 -> <8.5.18 (2 high, GHSA-6g55-p6wh-862q / GHSA-r28c-9q8g-f849) - js-yaml 4.x <4.2.0 -> <4.3.0 (high, GHSA-52cp-r559-cp3m) Added: sharp >=0.35.0 (high, GHSA-f88m-g3jw-g9cj), diff 8.0.3 (low, GHSA-73rr-hh4g-fpgx), @babel/core 7.29.6 (low, GHSA-4x5r-pxfx-6jf8). next 16.2.9/16.2.10 -> 16.2.11 in the three compiler/react manifests and the next16 demo (4 high + 5 medium). brace-expansion needed three separate routes, one per major line in the tree: - 5.x (minimatch 9/10): pinned to 5.0.8, which closes both advisories. - 2.x (minimatch 5.1.8, pulled by filelist <- jake <- ejs): GHSA-mh99-v99m-4gvg is only patched in 5.0.8+ with no 2.x backport, so the line had to go. Widening the minimatch override to `>=4 <6: 10.2.6` retires it — filelist only calls `minimatch.match(list, pattern, options)`, which minimatch 10 still exports with an unchanged signature. - 1.x (minimatch 3.1.4, pulled by the eslint plugins): left at 1.1.16, which closes GHSA-3jxr-9vmj-r5cp. See below. The `minimatch@>=10` pin also moves to 10.2.6 so the 10.x line depends on brace-expansion ^5.0.8 on its own. Not fixed: GHSA-mh99-v99m-4gvg still matches brace-expansion 1.1.16, and no 1.x release carries the expansion caps added in 5.0.8. The line comes in through minimatch@3.1.4, required by eslint-plugin-react (latest, 7.37.5, still declares `minimatch: ^3.1.2`), which calls minimatch as a callable default export — minimatch 10 exposes only named exports, so forcing it there breaks the plugin. Dev tooling only; no published package ships it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
📝 WalkthroughWalkthroughThis PR bumps the ChangesDependency version bumps
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
cherkanovart
approved these changes
Jul 31, 2026
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.
Closes 56 of 57 open Dependabot alerts — 21 of 22 unique advisories, including the single critical and every medium. Everything is transitive except the
nextdevDependency, so the bulk of the fix tightens the existingoverridesblock, which in several cases still admitted the vulnerable version (shell-quote: ">=1.8.4 <2"allowed exactly the vulnerable 1.8.4).Ranges tightened
seroval>=1.4.1 <2>=1.5.3 <2shell-quote>=1.8.4 <2>=1.9.0 <2fast-uri>=3.1.2 <4>=3.1.4 <4svgo>=4.0.1 <5>=4.0.2 <5postcss<8.5.10<8.5.18js-yaml(4.x)<4.2.0<4.3.0Added
sharp >=0.35.0 <0.36(high, GHSA-f88m-g3jw-g9cj),diff@>=6 <8.0.3: 8.0.3(low, GHSA-73rr-hh4g-fpgx),@babel/core@<7.29.6: 7.29.6(low, GHSA-4x5r-pxfx-6jf8).next16.2.9/16.2.10 → 16.2.11 inpackages/compiler,packages/new-compiler,packages/reactanddemo/new-compiler-next16(4 high + 5 medium).brace-expansion: three lines, three routes
The tree carried brace-expansion 1.x, 2.x and 5.x, one per minimatch major, and GHSA-mh99-v99m-4gvg is only patched in 5.0.8+ with no backport to the older lines.
minimatch@>=10pin also moves to 10.2.6 so the 10.x line depends onbrace-expansion@^5.0.8on its own.filelist←jake←ejs) — the line had to go, so the minimatch override widens to>=4 <6: 10.2.6.filelistonly callsminimatch.match(list, pattern, options), which minimatch 10 still exports with an unchanged signature.Not fixed
GHSA-mh99-v99m-4gvg still matches
brace-expansion@1.1.16; no 1.x release carries the expansion caps added in 5.0.8. The line enters throughminimatch@3.1.4, required byeslint-plugin-react— latest (7.37.5) still declaresminimatch: ^3.1.2and calls it as a callable default export (minimatch(prop, pattern)inforbid-component-props.js), while minimatch 10 exposes only named exports. Forcing the bump there breaks the plugin. Dev tooling only — no published package ships it.Verification
pnpm install --frozen-lockfile— exit 0pnpm typecheck— exit 0 (13 tasks)pnpm test— exit 0 (20 tasks, 147 test files)pnpm build— exit 0 (19 tasks), which also runs thesyncpack lint-semver-rangesprebuild gatepnpm changeset status --since origin/main— exit 0🤖 Generated with Claude Code
compiler-e2e is red, and it is not from this PR
compiler-e2efails here (3 runs, 3 failures). The cause is a pre-existing, intermittent corruption in the Tailwind v4 PostCSS output, not the dependency changes.Turbopack rejects the generated
tests/fixtures/next/app/globals.cssbecause an arbitrary-value utility comes out with garbage bytes in it:That 500s the Next fixture, and whichever tests are still queued when it happens fail or get skipped — which is why the failing set moves between the Next.js and Vite cases from run to run.
Control: run 30347392469 on
fix/model-response-placeholder-quoting(commit912d53e6,next16.2.9,postcss8.5.10 — none of this PR's changes) hitsParsing CSS source code failed18 times with the byte-identical corrupted class. The same three Vite tests fail there too, and that branch had green runs on the same code.Locally the full suite passes on this branch (
turbo run test:e2e, fixtures prepared, genuine cache miss — 6/6 in 57s), consistent with the corruption being nondeterministic.Worth its own issue; flagging rather than papering over it.