Repository navigation
Patch next, node-forge, undici, zod and joi audit advisories - #113
Merged
Merged
Conversation
Raise the floors to clear the high/critical `pnpm audit --prod` findings that have been failing the "dependency audit (prod, high+)" check on every PR since 2026-11-07: - next ^16.3.8 -> ^16.4.1 (locked 16.4.1; no fix on the 16.3.x line): unauthenticated RCE in the Image Optimization API with SVG (GHSA-2464-fhr4-w9xw, critical), unauthenticated RCE in `use cache` functions returning typed arrays (GHSA-673q-mjm6-r5xr, critical) and Server Actions DoS in the App Router (GHSA-p3m5-59mp-jv5r, high). - new node-forge ^1.4.1 override (locked 1.4.1; via passkit-generator, which still specs ^1.3.2): RSA PKCS#1 v1.5 verification accepting extra nested DigestAlgorithm elements (GHSA-86w9-cpqp-85rv), pem.decode ReDoS (GHSA-7wch-p9px-956x), PKCS#12 MAC forgery via zero iteration count (GHSA-jc66-7q78-782g), TLS record-processing DoS (GHSA-8hrf-8g6f-7xwp, GHSA-hqq3-7jhf-c5jx) and an X.509 basicConstraints bypass (GHSA-5x38-2vff-x55p). - undici ^8.10.2 -> ^8.12.2 (locked 8.12.2): content-encoding DoS (GHSA-xjj6-f33q-929c), cross-origin redirect cache poisoning (GHSA-4w7w-5xrc-9h26), dropped TLS options in Agent (GHSA-2m5v-pch6-74hx) and TLS 1.2 renegotiation DoS (GHSA-qrxm-fqhp-jwvm). - zod ^4.4.3 -> ^4.6.6 (locked 4.6.6) in the root and the CLI: memory exhaustion on oversized constrained collections (GHSA-mrhx-c7xc-m3w5). - joi override ^17.13.8 -> ^17.13.9 (locked 17.13.9): quadratic-time split in string().email({ multiple: true }) (GHSA-4528-x5fx-h6hg). Reachability for the two overrides is recorded in pnpm-workspace.yaml. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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
This raises dependency floors to clear every high/critical
pnpm audit --prod --audit-level=highfinding. The "dependency audit (prod, high+)" check has failed on every PR since 2026-11-07 (for example #112), on branches that change no dependencies. The task namednextandnode-forge; by the time of this fix the same check also reportszod,undici8.x andjoi, so all five families are patched here, as the check cannot go green otherwise. The prod audit goes from 15 high/critical findings (2 critical, 13 high) to 0; 5 moderates remain below the gate and stay with Dependabot.As in #110, every spec keeps its caret and the lockfile is pinned to the patched floor.
next(root dependency)^16.3.8→^16.4.1, locked at 16.4.1. No fix exists on the 16.3.x line; patched versions are>=16.4.1.use cachefunctions returning typed arrays (GHSA-673q-mjm6-r5xr). High: DoS in App Router via Server Actions (GHSA-p3m5-59mp-jv5r)node-forge(new override; via passkit-generator)^1.4.1, locked at 1.4.1. passkit-generator 3.5.7 still specs^1.3.2(lock had 1.4.0), so the floor is forced.pem.decode(GHSA-7wch-p9px-956x); PKCS#12 MAC forgery / constant-key PBE via zero iteration count (GHSA-jc66-7q78-782g); TLS record-processing DoS (GHSA-8hrf-8g6f-7xwp, GHSA-hqq3-7jhf-c5jx); X.509 basicConstraints bypass inverifyCertificateChain()(GHSA-5x38-2vff-x55p)undici(root dependency)^8.10.2→^8.12.2, locked at 8.12.2zod(root andclidependency)^4.4.3→^4.6.6, locked at 4.6.6joi(override; via passkit-generator)^17.13.8→^17.13.9, locked at 17.13.9string().email({ multiple: true })(GHSA-4528-x5fx-h6hg)Notes:
>=16.4.1. The lockfile is pinned to 16.4.1 deliberately (a plainpnpm installwould resolve^16.4.1to 16.4.5). No major version is taken.nextplus@next/env/@next/swc-*,node-forge,undici8.x,zodandjoi. Theundici@7override for miniflare's 7.x line is untouched; only its comment's reference to the root floor is updated.pnpm-workspace.yaml, following the existing convention:Test plan
Run locally on this branch:
pnpm install: lockfile regenerated; a second install with the caret specs reports "Already up to date"pnpm audit --prod --audit-level=high: exit 0 (5 moderates remain, below the gate)tsc --noEmit) and CLI typecheck: cleanvitest run): 56 files, 726 tests passedvitest run --root cli): 37 files, 271 tests passedpnpm install --frozen-lockfilein a fresh checkout, then productionnext buildon Next.js 16.4.1: passes with no warnings;.next/standaloneshipsnext@16.4.1🤖 Generated with Claude Code