Skip to content

chore(deps): security bumps — postcss, shell-quote (AXE-3900/AXE-3901) - #272

Open
chikara1608 wants to merge 1 commit into
mainfrom
AXE-3900-3901-postcss-shell-quote
Open

chore(deps): security bumps — postcss, shell-quote (AXE-3900/AXE-3901)#272
chikara1608 wants to merge 1 commit into
mainfrom
AXE-3900-3901-postcss-shell-quote

Conversation

@chikara1608

@chikara1608 chikara1608 commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Pins two vulnerable transitive dev dependencies to patched versions via package.json overrides, so the fix survives lockfile regeneration instead of living only in the lock.

Ticket Package Before After Advisory
AXE-3900 postcss 8.5.6 8.5.23 GHSA-6g55-p6wh-862q — arbitrary file read via attacker-controlled sourceMappingURL
AXE-3901 shell-quote 1.8.4 1.10.0 GHSA-395f-4hp3-45gv — quadratic-complexity DoS in parse()

First-patched are 8.5.12 and 1.9.0; both go to latest-in-major, matching the versions already used elsewhere in the monorepo (mini-percy-renderer is already on shell-quote 1.10.0).

No runtime exposure

axe-core declares no dependencies — everything is devDependencies, so neither package ships in the published bundle:

  • postcss@csstools/css-syntax-patches-for-csstreecssstylejsdom (test-time DOM)
  • shell-quotenpm-run-all (build scripts)

Neither advisory's attack path is reachable here: we don't run untrusted CSS through PostCSS, and we don't pass untrusted strings to shell-quote.parse(). This is hygiene to clear the Dependabot alerts, not an incident.

Notes for review

  • Lockfile deliberately kept at v2 (npm install --package-lock-only --lockfile-version=2); npm 10+ would otherwise migrate to v3 and produce a ~12k-line diff.
  • nanoid 3.3.11 → 3.3.16 comes along as postcss's own dependency — expected, not a separate bump.
  • Diff is scoped to exactly these three packages; no unrelated version drift.
  • Impact tag is recorded in the commit message ([a11y-critical]) rather than a code comment, since both changed files are JSON. Same convention as chore(deps): security bumps — axios, engine.io, brace-expansion #266.

Supersedes Dependabot #269 (postcss → 8.5.22) and #271 (shell-quote → 1.10.0).

🤖 Generated with Claude Code

Add npm overrides so these transitive dev deps resolve to non-vulnerable
versions (durable across lockfile regeneration). Lockfile kept at v2.

- postcss     8.5.6  -> 8.5.23  GHSA-6g55-p6wh-862q  AXE-3900
- shell-quote 1.8.4  -> 1.10.0  GHSA-395f-4hp3-45gv  AXE-3901

Both are dev/build-tooling only — axe-core declares no runtime
dependencies, so neither ships in the published bundle:
  postcss     <- @csstools/css-syntax-patches-for-csstree <- cssstyle <- jsdom
  shell-quote <- npm-run-all
postcss pulls nanoid 3.3.11 -> 3.3.16 as its own dependency.

[a11y-critical]: security-only dependency bumps in the axe-core submodule
(package.json is JSON, so the impact tag is recorded in this message).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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