Direct naar de inhoud
Cybersecurity

SEO-titel: Next.js ImageResponse CVE-2026-94545 uitgelegd

Next.js ImageResponse

Vercel heeft een kritieke kwetsbaarheid in Next.js ImageResponse bekendgemaakt. Aanvallers zouden via een speciaal gemaakte invoer code op de server kunnen laten uitvoeren, omdat Next.js tijdens het genereren van social preview-afbeeldingen SVG-content bouwt op basis van waarden die een aanvaller kan beïnvloeden.

De fix is beschikbaar: update naar Next.js 16.3.6. In dit artikel zetten we op een rij wat er precies misgaat, welke versies geraakt worden en hoe je de impact voor jouw app beoordeelt.

Wat doet Next.js ImageResponse precies?

ImageResponse wordt in Next.js gebruikt om afbeeldingen te genereren voor onder andere Open Graph en andere social previews. De functie zet een opmaak (layout) om naar SVG en genereert daarna de uiteindelijke afbeelding (zoals een PNG).

Onder de motorkap gebruikt Next.js hiervoor Satori, een Vercel-bibliotheek die de lay-out naar SVG vertaalt. Juist in die SVG-stap zit het probleem bij apps die onveilige waarden in de gegenereerde afbeelding verwerken.

Hoe kan de kwetsbaarheid leiden tot server code execution?

De kern van het risico is dat een app waarden die een aanvaller controleert in de afbeelding kan opnemen. Denk hierbij aan tekst die bijvoorbeeld uit een request-URL komt en vervolgens in de gegenereerde SVG terechtkomt.

Vercel meldt dat apps getroffen zijn wanneer zij tijdens image generation attacker-controlled waarden doorgeven in de SVG content, attributes of styles. Door een speciaal gemaakte waarde kan die invoer in plaats van als gewone tekst worden gelezen als SVG-code.

Vervolgens kan die doorlopende keten (via Next.js en afhankelijkheden) leiden tot server code execution. Vercel geeft aan dat het bug zit in Satori en dat het effect afhangt van hoe de SVG-output wordt gebruikt, maar noemt geen concrete andere libraries die in de keten kwetsbaar kunnen worden.

Welke versies van Next.js zijn geraakt?

De kwetsbaarheid, geregistreerd als CVE-2026-94545, geldt voor Next.js 16.2.0 t/m 16.3.5 wanneer ImageResponse draait op de Node.js runtime (de standaard runtime in Next.js).

  • Niet getroffen: de Edge-versie van ImageResponse
  • Niet getroffen: Next.js 15
  • Fix: Next.js 16.3.6 is de gepatchte versie

Vercel beoordeelt de kwetsbaarheid als kritiek met een CVSS-score van 9.5.

Waar moet je in je code op letten?

De praktische vraag is natuurlijk: gebruik jij ImageResponse met data die mogelijk door een aanvaller beïnvloed kan worden? Vercel raadt aan te zoeken naar import van ImageResponse uit next/og.

Let daarbij met name op:

  • Route handlers die de afbeelding maken wanneer een verzoek binnenkomt
  • opengraph-image bestanden die de afbeelding kunnen genereren bij build-time of op verzoekmoment

Een voorbeeld uit de advisory plaatst een waarde uit de request-URL in een SVG title element. Het documenteert niet expliciet of gewone tekst in HTML-achtige onderdelen (zoals headings in een div) ook exact dezelfde classificatie krijgt. Daarom is het verstandig om overal waar je die input in de afbeeldingsrendering stopt extra alert te zijn.

Status van exploits en publieke meldingen

Op 23 september meldde The Hacker News dat er geen publieke aanvallen of publieke exploitcode bekend waren voor deze flaw. Ook stond de advisory (nog) niet in de GitHub Advisory Database en was het CVE-nummer (CVE-2026-94545) nog niet gepubliceerd als apart CVE-record.

Dat betekent niet dat je veilig bent, maar het geeft wel aan dat er op dat moment geen brede, publiek bekende misbruikpraktijk zichtbaar was.

Wat is de juiste oplossing: update naar 16.3.6

De meest directe maatregel is: upgrade naar Next.js 16.3.6. Volgens de berichtgeving is dit de enige gepatchte versie. Voor apps op de 16.2-lijn is daarom ook migratie naar 16.3.6 noodzakelijk.

Er is daarnaast op de 15.5-lijn sprake van extra hardening voor next/og, maar deze kwestie gaat expliciet over Next.js 16.2 tot en met 16.3.5 bij Node-runtime.

Als je niet meteen kunt upgraden: een workaround

Wanneer upgraden niet direct mogelijk is, adviseert Vercel een aanpak die neerkomt op data minimaliseren:

  • Houd attacker-controlled waarden weg uit de SVG content, attributes en styles die Node.js ImageResponse rendert.

De advisory adviseert niet om simpelweg over te stappen naar de Edge-runtime als tijdelijke oplossing. Bovendien geeft Next.js aan dat de Edge runtime als deprecated wordt beschouwd, dus die richting is niet “even snel” voor iedereen de beste route.

Check je dependency-setup en versiebeheer

Het is verstandig om de versie van Next.js zelf te controleren. In het bericht wordt namelijk aangegeven dat Satori in het Next.js pakket is gebundeld, waardoor je het niet per se als losse dependency in je lockfile terugziet.

Praktisch: kijk niet alleen naar security tooling, maar verifieer ook je Next.js versie in je package.json (en lockfile) en pas daarna je plan voor deployen aan.

Extra context: waarom dit soort issues vaker voorkomt

Dit incident past in een breder patroon: moderne frameworks genereren delen van output (HTML, images, previews) op basis van variabelen. Als die variabelen niet goed worden behandeld, kan een aanvaller ze omzetten van “data” naar “instructies”.

Als je vaker kwetsbaarheden ziet in web- en applicatielagen, kan het helpen om ook je supply chain en dependency-updates strak te beheren. Denk bijvoorbeeld aan eerdere meldingen over kritieke flaws in ecosystemen rond webapps en supply chain componenten.

Gerelateerd om naast dit bericht te bekijken: een malafide npm-pakket als Twilio probe laat zien hoe snel een dependency of een package-issue kan uitgroeien tot serieuze risico’s.

Conclusie

Next.js ImageResponse is kwetsbaar voor CVE-2026-94545 wanneer apps onveilige, door een aanvaller beïnvloedbare waarden verwerken in SVG-content, attributes of styles tijdens rendering op de Node.js runtime. Vercel heeft dit opgelost in Next.js 16.3.6.

Upgraden is de beste stap. Kun je tijdelijk niet migreren, zorg dan dat je geen attacker-controlled input doorgeeft in de SVG-elementen die Satori genereert. Controleer vervolgens gericht welke routes of opengraph-image bestanden ImageResponse gebruiken en of die output direct of indirect uit requestdata komt.

Door nu helder te krijgen waar ImageResponse wordt ingezet en welke inputs daarin belanden, voorkom je dat een social preview-functie een aanvalsvlak wordt.

Bron: https://thehackernews.com/2026/09/critical-nextjs-imageresponse-flaw-can.html