← Startup Signals
7 min readUpdated 2026-10-02Issue 5

Next.js shipped 16.3.7 and 16.3.8 a day apart. Only one of them is the security release.

Two patch releases a day apart, one of them a decoy if you are not reading carefully. And the 15.5 line does not get the high severity fix at all.

ByKarthik KumarCafiyn Innovations
At a glance
16.3.7, 29 September
Bug fix only. No security content
16.3.8, 30 September
Seven fixes: one high, five moderate, one low
15.5.27, 30 September
Three of the seven. Not the SSRF fix
Headline issue
CVE-2026-94483, SSRF in Image Optimization, CVSS 8.3
Still open
One critical and one high, postponed, no version announced
Also needed on 16.2.x
The 22 September critical next/og RCE, fixed in 16.3.6

The version trap

Vercel published Next.js 16.3.7 on 29 September. Its release notes say it is "backporting bug fixes" and list a single change to the Turbopack backend. There is no security section, no CVE and no advisory. It is an ordinary patch release that happened to land the day before a scheduled security release.

The security release came on 30 September, as 16.3.8 on the Active LTS line and 15.5.27 on Maintenance LTS. Vercel saw the confusion coming and added a dated note to its pre-announcement saying that 16.3.7 "does not include the security fixes planned for September 30" and that those fixes were now expected in 16.3.8 and 15.5.27.

If you run automated dependency updates, there is a reasonable chance a bot opened a pull request for 16.3.7 on 29 September, someone merged it, and the team now believes it has patched. It has not. The check is one command: confirm the installed version is 16.3.8 or later, not merely newer than what you had.

The two lines do not get the same fixes

This is the detail most coverage flattens. The release post lists both versions in one sentence, which reads as though they are equivalent. They are not.

The release notes for 16.3.8 cover all seven issues: one high, five moderate and one low. The release notes for 15.5.27 list three, covering the metadata image route bypass and the two cache poisoning issues. The high severity server-side request forgery fix is not among them.

So "we are on the latest 15.5" does not mean what a 16.x reader would assume it means. If you are on 15.5 and you use Image Optimization with remote patterns, you should find out from Vercel what your position is rather than inferring it from a release post that was written about two lines at once.

What actually shipped

The headline issue is CVE-2026-94483, advisory GHSA-cjq9-62q9-8jv4, server-side request forgery in Image Optimization, rated high at CVSS 8.3. The advisory describes an attacker-controlled, allow-listed remote URL leading to requests against internal addresses during image optimization.

The exemption is unusually clean, and it is the first thing to check: the release post says that if no images.remotePatterns are configured, your application is not affected. If that config is populated, the advisory tells you to audit the allow-listed hosts for any whose DNS entries you do not control, because that is the route in.

The rest divide into cache correctness problems and one development-only leak. Two concern cache poisoning of statically generated and incrementally regenerated pages, one is a metadata image route bypass, one leaks across root parameter values in nested use cache, one lets Draft Mode content reach a regular response, and one exposes a Model Context Protocol endpoint in the development server.

Read the exemptions per issue, not as a blanket

Each of these carries its own scoping sentence, and they do not combine into a general exemption for anyone.

  • One cache poisoning issue says applications deployed on Vercel are not affected. That is true of that issue only, and it is a moderate one
  • The metadata image route bypass says applications built with Turbopack are not affected. Webpack builds are
  • The development server issue says only applications run with next dev are affected, and that production deployments do not serve the endpoint
  • The SSRF has no platform exemption. Its exemption is about configuration, not about where you host
  • Nothing here exempts you from the 22 September critical if you are on 16.2.x. See below

The 22 September critical, and why 16.2.x needs 16.3.8

Eight days earlier, Vercel shipped an out-of-band fix for CVE-2026-94545, a critical remote code execution issue in the Node.js ImageResponse implementation of next/og, rated 9.5. Its affected range is 16.2.0 up to but not including 16.3.6.

One correction worth making, because it was widely reported wrongly: Next.js 15.x was never affected by that remote code execution issue. Vercel's post says so directly and labels the 15.5.26 release as hardening only. If you are on 15.x, that critical was never yours.

If you are on 16.2.x, you are inside both windows. You need 16.3.8, which is the newest release on the 16.3 line and covers the 22 September critical and the 30 September seven together. Stopping at 16.3.6 leaves the seven, and stopping at 16.3.7 leaves everything.

Two fixes are still outstanding

The release was originally scoped at nine vulnerabilities. A note dated 30 September on the pre-announcement says it "now addresses seven vulnerabilities instead of nine. The remaining two (one critical, one high) are pending upstream coordination and will be addressed in a later Next.js release." The release post gives the reason as upstream dependency delays.

That means upgrading to 16.3.8 does not close the book. A critical issue is known to exist and is unpatched as of 2 October, with no CVE, no advisory, no affected range and no target date published. We are not going to speculate about which component it touches, because nothing published supports a guess.

The actionable version of this is operational rather than technical. The last two Next.js criticals both came from upstream dependencies, and the stated reason for the delay is upstream coordination, so a dependency-level fix may surface before the Next.js release does. If your release process needs a day of QA before a framework bump can ship, that path is worth shortening now rather than during the next unscheduled patch.

A note on the advisory metadata

If you go looking at the advisories yourself to build a precise version matrix, you will hit something odd. Six of the seven advisory pages publish a placeholder where the patch digit should be, rendering as 16.3.? and 15.5.?, and two list an affected range starting at 16.0.0 despite a fix shipping on the 15.5 line.

We are therefore not publishing per-issue affected ranges, and we would suggest you do not build tooling on them this week either. The reliable instruction is the simple one: 16.3.8 on the 16.x line, 15.5.27 on the 15.5 line.

What to do

  1. 1Confirm your installed version is 16.3.8 or later on 16.x, or 15.5.27 on 15.5.x. Do not stop at 16.3.7.
  2. 2Check whether images.remotePatterns is configured. If it is empty you are not affected by the SSRF.
  3. 3If it is populated, audit the allow-listed hosts for any whose DNS you do not control.
  4. 4If you are on 16.2.x, go to 16.3.8 so you also pick up the 22 September next/og critical.
  5. 5Redeploy preview and branch deployments, which keep serving the old build.
  6. 6Put a watch on the Next.js security blog, because one critical and one high are still unfixed.

Common questions

Is Next.js 16.3.7 the security release?

No. Its release notes describe it as backporting bug fixes with a single Turbopack change and no security content. The security release is 16.3.8, published the following day, 30 September 2026.

Do 16.3.8 and 15.5.27 fix the same issues?

No. The 16.3.8 notes cover all seven issues. The 15.5.27 notes list three, and the high severity SSRF fix is not among them.

How do I know if the SSRF affects me?

The release post says that if no images.remotePatterns are configured, your application is not affected. If the setting is populated, audit the allow-listed hosts for any whose DNS entries you do not control.

Are applications on Vercel unaffected?

Only for one issue. The statement that applications deployed on Vercel are not affected appears for a single moderate cache poisoning issue, not for the release as a whole.

What is still unpatched?

One critical and one high severity vulnerability were postponed due to upstream dependency delays. As of 2 October 2026 there is no CVE, advisory, affected range or target version published for either.

I am on Next.js 15. Was I affected by the 22 September critical?

No. Vercel states that Next.js 15.x is not affected by that remote code execution issue, and that the 15.5.26 release contains related hardening only.

Sources

Read against the primary documentation rather than secondary coverage. Where a figure comes from a provider's own docs, it is quoted as published on 2026-10-02.

Related

More from Signals

OpenAI removes o1, o3-mini, o4-mini and GPT-4 Turbo on 23 October. The replacements it names run from 5.5 times the price to 97 percent less.
Eleven models and six fine tuned models go dark in four days. Here is OpenAI's own mapping, what each landing costs on a typical month of traffic, and the places where the named replacement is not the cheapest or cannot be used at all.
OpenCode says a breach hit 1.4 percent of Console users who linked an AI provider. Rotate those keys before the root cause is published.
OpenCode has confirmed the breach and has not said how it happened or what was taken. Here is what the vendor said, who is exposed, the order to work in, and how to limit the damage next time.
GitHub Actions workflow lockfiles are in public preview. Here is how to turn them on, check them in CI, and what they do not protect.
A tag can move after you reviewed it. A lockfile makes the runner use the commit you reviewed. Here is the setup, the CI check, the policy, and what a lockfile cannot tell you.
Next.js 16.4.1 and 15.5.28 fix two critical remote code execution flaws. For one of them there is no workaround.
Two of the three fixes were postponed from September. Here is what each flaw needs in order to be reachable, the one workaround that exists, and what the announcement leaves out.
A poisoned npm release that punishes you for revoking the stolen token. The order of your response is the whole defence.
Most incident guidance starts with revoking the leaked token. Here that is the trigger. What StepSecurity found, the order it recommends, and why a valid provenance attestation did not help.
Claude Haiku 5.5 costs a tenth of Haiku 4.5 per token. One token past 100,000 it costs half.
The rate card is a tenth of Haiku 4.5. The footnote is a threshold that moves the price fivefold and that a tokenizer change pushes you toward.
Gemini 4 Argon launched at $2 and $10 and goes to $4 and $20 on 1 December. Price your product on the second number.
Every tier on the pricing page doubles on the same date. What changes, what the number includes, and what to do if you are building on the launch rate.
Claude Haiku 5.5 is not a model id swap. Five things that worked on Haiku 4.5 now return a 400.
The model id is the easy part. The requests that now fail, the response parsing that changes, and the details that fail quietly.
The EU AI output marking rule is not a December deadline. For most teams it started in August.
Almost every summary of this gives one date. There are two, and which one applies to you depends on when you shipped, not on how big you are.
Sonnet 5.5 cut the rate by a third and the token count went up by about 30 percent.
A third off the per-token rate is not a third off the bill when the same text now costs more tokens. Here is the arithmetic, and the five ways your code can break.
Your AI gateway holds every provider key you have. A 9.9 just landed in LiteLLM.
An AI gateway concentrates every upstream key into one process. That is the point of it, and it is why a privilege escalation there is worse than it looks.
The table your coding agent created does not have row level security on it.
Dashboard-created tables get row level security by default now. API-created tables do not, and API is how your coding agent works.
A 9.5 in next/og. Whether it reaches you depends on one line in your OG route.
The advisory rates it 9.5, but it only fires if your OG image route puts attacker-controlled text into SVG. Here is how to find out which side of that line you are on.
OpenAI and Anthropic both cut prices on 22 September. One of them costs you a refactor.
Two frontier price cuts in one day is a good week for anyone paying a token bill. The migration cost is not evenly distributed, and one of the two prices comes with an expiry hedge.
A package install reads your home directory. This week two of them did it on purpose.
The implant did nothing clever. It read the files your shell reads, in the place your credentials live, and sent them somewhere else. That is the whole attack, and it works.
GitHub is switching off SHA-1 SSH keys. Find out now whether yours is one of them.
The keys at risk are the old ones, on the machines nobody logs into, in the pipelines that have run untouched for three years. Those are also the ones that will fail loudest.
Every third-party script tag is a standing grant to run code on your visitors.
A marketing form, a chat widget, an analytics snippet. Each one is permission for someone else's server to execute whatever it sends, on every page it sits on, forever.
1.8 million Android apps were scanned for hardcoded keys. Here is how to check yours.
Finding secrets in shipped apps is now a cheap, automated pipeline. Anything compiled into an APK, an IPA or a JavaScript bundle should be treated as already published.
OpenAI's Agents API will hold your agent state. What breaks if you ever need to leave.
Two major providers moved into the agent state layer in the same week. A managed harness is a real shortcut, as long as you keep a copy of what it holds.
Meta's Muse agent can now check out at your store. What merchants should change.
Agent purchases are arriving through wallets and single-use cards, not through merchants adopting a new protocol. Many merchants will receive them without choosing to.
What Brevo's SSO incident teaches about multi-tenant SAML and hijacked sending accounts.
One incident, two lessons: why email authentication did not help, and the tenant-scoping mistake anyone shipping SSO can make.
Cloudflare now sorts bots into Search, Training and Agent. What it means for your site and your agent.
The same change lands on two audiences. Site owners can now accidentally block search; agent builders will find more doors closed.
OpenAI has announced ten dated deadlines between 23 October 2026 and 1 April 2027. Here is the calendar.
Ten dated deadlines in six months, every one announced in public. The failure mode is never the notice. Updated 19 October with the entries added since September.
Nvidia bought Hugging Face. Your open-weight fallback is now a vendor relationship.
The commitments say nothing breaks. The structural change is that "we can always self-host" is now a dependency on one vendor rather than on a neutral commons.
The Videos API goes away on 24 September and OpenAI names nothing to move to.
Every other deprecation on OpenAI's page offers a migration target. This one does not, which makes it a different kind of problem.
Whisper shuts down on 26 February. The risk is not the deadline.
Five months is a generous window. Whisper is also typically wired into a background job that fails into a queue rather than into a user's face.
The Assistants API is gone. Your app may not have told you yet.
It shut down on 26 August 2026. The replacement is not a drop-in, and the most common migration mistake changes your model's behaviour without throwing an error.
One Copilot code review costs 13 requests. Here is the rest of the maths.
Copilot now bills on usage rather than seats. The headline change is simple. The multipliers underneath it are where teams get surprised.
Row-level security is on by default now. That is not the same as being protected.
Lovable fixed the default. The gap that actually leaks data was never the default, it was the policy, and no platform can write that for you.
Your model comparison is measuring the wrong number.
Every price list is per token. Your bill is per finished piece of work. Those two numbers can rank models in opposite orders.
An agent with production log access is a new identity. Treat it like one.
Always-on agents that read production logs are arriving fast. The access-control question they raise is old and well understood, which is the good news.

Open the tool.

Ten production categories, three minutes, and a ranked list of what to fix first.

Check your own stack