ConicPlex

Start Your Project

Monitor displaying a black and white geometric pattern split by a glowing red crack, symbolizing a critical flaw in Next.js ImageResponse

On this Page

Next.js Patches a Critical Remote Code Execution Flaw in ImageResponse (CVE-2026-94545)

Next.js 16.3.6 patches CVE-2026-94545, a critical RCE in the Node.js ImageResponse API used to generate OG images. Here is who is affected and how to patch it.

Sajil Memon

September 24, 2026

Next.js shipped an out-of-band security release on September 22, patching CVE-2026-94545, a critical remote code execution flaw in the framework’s ImageResponse API. The bug lives in next/og’s Node.js runtime implementation, the code path that generates Open Graph and social preview images, and it carries a CVSS score of 9.5. Versions 16.2.0 through 16.3.5 are affected. Upgrading to 16.3.6, or 15.5.26 for the 15.x hardening release, closes it. If your app passes any request-derived value into an ImageResponse call, treat this as urgent.

What CVE-2026-94545 Actually Does

ImageResponse works by rendering JSX into SVG through a library called Satori, then converting that SVG into a PNG. The vulnerability sits in how Satori escapes values before they land in that SVG output. When an app builds an og-image route that reads a query parameter, a search result, or any other untrusted string and drops it straight into the rendered content, style, or attributes, that string can break out of its expected context. Next.js’s own advisory spells out the exact shape of the mistake: pulling a value with something like new URL(request.url).searchParams.get('value') and feeding it into the image without sanitizing it first.

Because the bug lives in Satori rather than in Next.js’s own code, the framework’s fix is an upstream dependency bump rather than a patch to application logic. Vercel tracks the issue under GHSA-vcvr-r3jv-pc5j, with a matching advisory on Satori’s own repository.

Who’s Affected

Only the Node.js runtime implementation of ImageResponse is exploitable here. If your og-image or twitter-image routes run on the Edge runtime, this specific flaw doesn’t reach you, though it’s still worth upgrading since 16.3.6 bundles other hardening. Next.js 15.x was never vulnerable to the RCE itself, but the 15.5.26 release ships the same defensive changes as a precaution.

The realistic risk shows up in any dynamic image generation endpoint that a marketing team, a blog, or a SaaS dashboard built to auto-generate share cards, where the title, a username, or a query string ends up rendered inside the image. That’s a common pattern, and it’s exactly the kind of thing that gets built fast and never revisited once it works.

How to Patch It

  • Check your installed version: anything from 16.2.0 up to and including 16.3.5 needs the fix.
  • Upgrade: npm install [email protected] for the 16.3 line, or npm install [email protected] for 15.5.
  • If you can’t patch immediately, audit every ImageResponse call for request-derived input and sanitize it before it reaches the rendered SVG rather than trusting the framework to do it for you.
  • Redeploy. This isn’t the kind of fix that benefits from waiting for a scheduled release window; Vercel shipped it out-of-band for a reason.

This is the second Next.js security release in under a month, following the critical patch that landed in August, and Vercel has already flagged a third, broader security release for September 30. Teams running Next.js in production are better off building a habit of checking the framework’s security tag rather than reacting to each release individually. It’s the same discipline that matters for any Node.js dependency chain, which is worth remembering after npm’s own recent supply chain problems: the framework you trust is only as safe as the libraries it pulls in.

If you’re running a custom Next.js application and aren’t sure whether your image-generation routes are exposed, that’s exactly the kind of gap a web application development audit catches before it becomes an incident.

Sources

Sajil Memon is a co-founder of ConicPlex and a Senior Full Stack Developer focused on backend work: Node.js, PHP, APIs, and the infrastructure decisions that determine whether a system holds up under real traffic. He’s spent years on the side of a project that doesn’t get demoed, the part that has to keep working after launch. He writes here about the technical tradeoffs in backend architecture, deployment, and data handling that only become obvious once something breaks in production.

Leave a Reply

Your email address will not be published. Required fields are marked *

Keep reading

Plugins

Illustration of a gift box unlocking above a rising row of purple cart-value steps, representing a free gift reward unlocked at a WooCommerce cart spending threshold

How to Add a Free Gift When Customers Spend Over a Set Amount in WooCommerce (3 Plugins Compared)

WooCommerce has no native way to reward big carts with a free gift. Three plugins add it: GIFTiT for tiered…

Husen Memon

October 17, 2026

News & Updates

Laptop glowing with an abstract geometric pattern on a dark desk beside scattered photographs, symbolizing a Next.js image-processing security flaw

Next.js Ships an Emergency Security Update for Two Critical RCE Flaws

Next.js patched two critical remote code execution flaws and a denial-of-service bug on October 14, 2026. Here is what is…

Sajil Memon

October 17, 2026

Plugins

Flat illustration of a diagonal timeline with milestone node markers, representing WordPress timeline block plugins

3 Timeline Block Plugins Built for the WordPress Block Editor

Three real timeline block plugins for the WordPress block editor compared: Cool Timeline, Timeline Block by bPlugins, and Advanced Timeline…

Husen Memon

October 16, 2026

WhatsApp
Husen Memon
Husen Memon
Typically replies instant