DM-55688: Pin patched transitive deps to clear 12 security advisories - #644
Merged
Conversation
Add a root pnpm.overrides block pinning patched versions of brace-expansion, js-yaml, postcss, immutable, and fast-uri, and move the vitest family to 4.1.10 within its existing ^4.1.0 range. These 12 Dependabot alerts were all transitive-only dependencies in pnpm-lock.yaml. Dependabot cannot open security PRs for pnpm transitive-only updates: five alerts reported update_not_possible and the remaining seven produced no PR and no error. The sharp advisory (GHSA-f88m-g3jw-g9cj) is deliberately not included. Its patched version 0.35.0 falls outside next's declared ^0.34.5 range, and squareone configures no images.remotePatterns, so every next/image source is a repo-controlled static asset and no attacker-supplied image reaches libvips.
🦋 Changeset detectedLatest commit: d673082 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
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.
Summary
Clears 12 of the 13 open Dependabot security advisories on
main. Every one is a transitive-only dependency inpnpm-lock.yaml— no direct dependency of any workspace package is vulnerable.Dependabot cannot fix these on its own: five alerts report
update_not_possibleand the remaining seven produced no PR and no error, despite automated security fixes being enabled and unpaused. Its successful security PRs in this repo (#595, #611, #616) all bumped a direct manifest dependency. Dependabot's pnpm support does not open security PRs for transitive-only updates, so this repo's security-alert stream is manual in practice.Two changes:
pnpm.overridesblock pinning patched versions ofbrace-expansion,js-yaml,postcss,immutable, andfast-uri.^4.1.0range. This clears the@vitest/browseradvisory without an override — overriding a direct devDependency that Dependabot already manages would just fight it. The manifest range floors move to^4.1.10to record the security floor.Alerts resolved
Deliberately not included: sharp (#282)
sharp's patched version 0.35.0 falls outsidenext@16.2.12's declared^0.34.5range, so pinning it means forcing a dependency out of range and revalidating image optimization.The exposure does not justify that. The advisory is inherited libvips CVEs that require processing a malicious image.
apps/squareone/next.config.jsdeclares noimages.remotePatterns, and everynext/imageuse (Footer,PreHeader,FooterRsc) points at a repo-controlled static asset — no attacker-supplied image ever reaches libvips. Left for a futurenextrelease that widens the range.Note on severity labels
GitHub's
scopelabel is wrong on three of these alerts, which is worth knowing before triaging future rounds:@vitest/browser(critical 9.4) is not runtime. GitHub labels it runtime;pnpm why -rshows it reachable only through devDependencies. It is a Browser Mode file-access permission bypass — a CI and local-dev concern, never the deployed container. The loudest number in this set is materially overstated.fast-uriare not dev-scope. GitHub labels them development; they arrive viaajv, a production dependency ofapps/squareoneused for config schema validation. These are the only two that genuinely reach deployed runtime code.For context on real risk: no alert in this set exceeded 0.44% EPSS / 36th percentile, well under the ~1% "exploitation plausible" line. All are algorithmic-complexity DoS, build-time path traversal, or a local file-access gate. Nothing here was urgent; it is worth doing because it is cheap and the alerts will not clear themselves.
Validation steps
pnpm run localci— 30/30 turbo tasks successful (biome format, prettier YAML, eslint, type-check, test, build across 14 packages), Docker/Biome-schema/theme-token validators pass,biome lintclean over 868 files.react-a11y-disclosurevs React 19) is pre-existing onmain.js-yaml@3.15.1enters the tree as a side effect (pulled byread-yaml-file@1.1.0). Not flagged — the new js-yaml advisories apply to>= 4.0.0only, and 3.15.1 postdates the 3.x code-injection fix.References
rubin-maintenancereports/security-2026-08-01-squareone.md