Skip to content

Bump Next.js to 16.3.5 to clear the critical audit finding - #249

Merged
ralyodio merged 1 commit into
masterfrom
chore/next-security-bump
Sep 12, 2026
Merged

ralyodio merged 1 commit into
masterfrom
chore/next-security-bump

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Why

npm audit --audit-level=critical --omit=dev fails on master because next 16.2.6 carries three advisories (GHSA-6gpp-xcg3-4w24 proxy bypass, GHSA-m99w-x7hq-7vfj Server Actions DoS, GHSA-89xv-2m56-2m9x Server Actions SSRF), all patched at 16.2.11. That turned the npm audit CI job red on every PR.

What

  • next ^16.0.0 -> ^16.3.5 (installed 16.2.6 -> 16.3.5, latest in the major)
  • npm audit fix without --force for the transitive prod findings: sharp 0.34.5 -> 0.35.4, undici 7.25.0 -> 7.29.1, qs 6.15.3 -> 6.16.0, postcss 8.5.14 -> 8.5.23, plus nanoid, hono, @hono/node-server, fast-uri, ip-address, dompurify, brace-expansion. All semver-compatible.
  • next-env.d.ts regenerated by 16.3 (adds the root-params.d.ts import). Next rewrites it on every build, so committing it keeps checkouts clean.

Left alone: nodemailer 8 -> 10 is a major and the only remaining high finding.

Verified locally

  • npm audit --audit-level=critical --omit=dev exits 0 (15 findings -> 2, both nodemailer)
  • tsc --noEmit clean
  • vitest: 171 files, 2238 tests pass (1 file / 7 tests skipped, as on master)
  • next build exits 0, ƒ Proxy (Middleware) present, 105 static pages generated

🤖 Generated with Claude Code

https://claude.ai/code/session_01QuUkTrofSjQ15j79mRuy4f

`npm audit --audit-level=critical --omit=dev` failed on master because
next 16.2.6 carries GHSA-6gpp-xcg3-4w24 (proxy bypass), GHSA-m99w-x7hq-7vfj
(Server Actions DoS) and GHSA-89xv-2m56-2m9x (Server Actions SSRF), all
patched at 16.2.11. That turned the `npm audit` CI job red on every PR.

- next ^16.0.0 -> ^16.3.5 (16.2.6 -> 16.3.5, latest in the major)
- `npm audit fix` (no --force) for the transitive prod findings: sharp
  0.34.5 -> 0.35.4, undici 7.25.0 -> 7.29.1, qs 6.15.3 -> 6.16.0, postcss
  8.5.14 -> 8.5.23, nanoid, hono, @hono/node-server, fast-uri, ip-address,
  dompurify, brace-expansion. All semver-compatible.
- next-env.d.ts regenerated by 16.3 (adds the root-params import); Next
  rewrites it on every build, so committing it keeps checkouts clean.

Left alone: nodemailer (8 -> 10 is a major; the remaining high finding).

Verified locally: `npm audit --audit-level=critical --omit=dev` exits 0
(15 -> 2 findings; the two left are nodemailer), `tsc --noEmit` clean,
vitest 171 files / 2238 tests pass, `next build` exits 0 with the Proxy
(Middleware) line present.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QuUkTrofSjQ15j79mRuy4f
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednext@​16.2.6 ⏵ 16.3.561 -2100 +7590 +19970
Updatednodemailer@​8.0.10 ⏵ 8.0.11967597 +195 +1100
Updatedvitest@​4.1.6 ⏵ 4.1.1198100 +279 +198 -1100
Updatedpostcss@​8.5.14 ⏵ 8.5.23100 +1100 +1881 -194 -1100

View full report

@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

39 finding(s)

HIGH/CRITICAL: 2 | MEDIUM: 28 | LOW: 9

Severity Rule Location
HIGH tls-verification-disabled lib/onion.ts:48
HIGH secret-generic-credential lib/sp/platforms/facebook.ts:32
MEDIUM js-unescaped-html-sink app/(app)/dashboard/admin/email-broadcast/EmailBroadcastForm.tsx:125
MEDIUM js-unescaped-html-sink app/(app)/dashboard/projects/[id]/autoblog/articles/[articleId]/page.tsx:214
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:67
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:97
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:104
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:110
MEDIUM js-unescaped-html-sink app/(marketing)/recent/page.tsx:186
MEDIUM js-unescaped-html-sink app/(marketing)/recent/page.tsx:190
MEDIUM js-unescaped-html-sink app/c/[project]/[slug]/page.tsx:77
MEDIUM js-unescaped-html-sink app/c/[project]/page.tsx:57
MEDIUM js-unescaped-html-sink app/careers.js/route.ts:228
MEDIUM js-unescaped-html-sink app/careers.js/route.ts:285
MEDIUM js-unescaped-html-sink app/layout.tsx:129
MEDIUM js-open-redirect app/login/form.tsx:39
MEDIUM js-unescaped-html-sink app/r/[token]/page.tsx:176
MEDIUM js-open-redirect app/signup/form.tsx:43
MEDIUM js-open-redirect components/billing/buy-credits-modal.tsx:98
MEDIUM js-unescaped-html-sink components/json-ld.tsx:8
MEDIUM js-unescaped-html-sink components/report/markdown-view.tsx:15
MEDIUM js-unescaped-html-sink lib/careers/page-templates.ts:198
MEDIUM redos-nested-quantifier lib/emailMarkdown.ts:41
MEDIUM redos-nested-quantifier lib/emailMarkdown.ts:324
MEDIUM redos-nested-quantifier lib/lx/articleGen.ts:99
MEDIUM redos-nested-quantifier lib/tracker/agent-gate.ts:61
MEDIUM sh-remote-script-execution prober/deploy/provision.sh:30
MEDIUM sql-template-interpolation scripts/detect-slot-themes.ts:31
MEDIUM sql-template-interpolation scripts/purge-constructed-keywords.ts:163
MEDIUM sql-template-interpolation scripts/purge-offniche-keywords.ts:124
LOW secret-generic-credential app/(marketing)/docs/autoblog-webhook/page.tsx:145
LOW secret-generic-credential lib/sp/platforms/linkedin.ts:25
LOW js-dynamic-code-execution tests/careers-page-templates.test.ts:21
LOW js-dynamic-code-execution tests/careers-widget-script.test.ts:19
LOW js-dynamic-code-execution tests/careers-widget-script.test.ts:69
LOW js-dynamic-code-execution tests/contract/ad-visitor-id.test.ts:51
LOW js-dynamic-code-execution tests/contract/ad-visitor-id.test.ts:52
LOW secret-generic-credential tests/contract/posthog-integration.test.ts:13
LOW secret-generic-credential tests/lead-campaign.test.ts:16

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit eb03f14 into master Sep 12, 2026
10 checks passed
@ralyodio
ralyodio deleted the chore/next-security-bump branch September 12, 2026 11:54
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