Next.js bracht op 14 oktober een buitenbandige beveiligingsupdate uit die twee kritieke zwakheden verhelpt waardoor ongeauthenticeerde remote code execution mogelijk was, plus een zwakke plek met hoge ernst voor denial-of-service.
De ene code-executiezwakheid zit in React Server Components, de andere in librsvg, de open-sourcebibliotheek die Next.js via het sharp-pakket gebruikt om SVG-afbeeldingen te verwerken.
De fixes zitten in Next.js 16.4.1 en 15.5.28, de huidige Active en Maintenance long-term support (LTS) releases.
Wat is verholpen
De update dekt drie afzonderlijke problemen. Vercel, de ontwikkelaar van Next.js, beoordeelde beide code-executiezwakheden als kritiek, elk met een CVSS-score van 9,5. De tabel geeft de versies waarop elk probleem van toepassing is en de versie waarin het is verholpen.
| Probleem | Getroffen versies | Verholpen in | Wie is blootgesteld |
|---|---|---|---|
Code-executie via use cache (
GHSA-673q-mjm6-r5xr ) |
16.0.0 tot en met 16.4.0 | 16.4.1 |
App Router-apps met ingeschakelde Cache Components, waarbij een use cache-functie meer dan één typed array retourneert
|
Code-executie via SVG-afbeeldingen (CVE-2026-96889, GHSA-2464-fhr4-w9xw ) |
10.0.0 tot en met 15.5.27, en 16.0.0 tot en met 16.4.0 |
16.4.1, of 15.5.28 met sharp 0.35.5 of later
|
Apps die door een aanvaller aangeleverde SVG-bestanden aan sharp doorgeven op glibc-gebaseerde Linux-systemen
|
Denial of service via Server Actions ( GHSA-p3m5-59mp-jv5r ) |
13.0.0 tot en met 15.5.27, en 16.0.0 tot en met 16.4.0 | 15.5.28, 16.4.1 | App Router-apps met ten minste één Server Action |
Wie is getroffen
De eerste code-executiezwakheid zit in React Server Components, de React-functie die gebruikersinterfacecomponenten op de server uitvoert. Het React-advies bestrijkt drie pakketten: react-server-dom-webpack, react-server-dom-parcel en react-server-dom-turbopack, in versies 19.0.0 tot en met 19.3.0. Het beschrijft de fout als van invloed op “zeer zeldzame gevallen waarin responses meerdere typed arrays transporteren en een door een aanvaller gecontroleerde waarde aanwezig is.”
In een Next.js-app wordt het probleem getriggerd door een use cache-functie die meer dan één typed array teruggeeft, dus alleen versie‑16-apps die Cache Components hebben ingeschakeld (de feature achter use cache) zijn blootgesteld. Vercel raadt aan te upgraden zelfs als je app geen dergelijke functie bevat.
De tweede zwakheid is een geheugenfout in librsvg, de bibliotheek die SVG-afbeeldingen rendert en die Next.js via het meegeleverde sharp-pakket bereikt. Volgens het advies is code-executie mogelijk wanneer Next.js draait op glibc-gebaseerde Linux-systemen.
Standaard optimaliseert Next.js SVG-bestanden niet. Ze via de image optimizer laten verwerken vereist het inschakelen van een instelling genaamd dangerouslyAllowSVG. Dezelfde bibliotheek rendert ook afbeeldingen voor next/og, de feature die social-preview-afbeeldingen bouwt, wanneer die feature op de Node.js-runtime draait.
De derde zwakheid is een denial-of-service-probleem. In App Router-apps die ten minste één Server Action definiëren, kunnen zorgvuldig geconstrueerde verzoeken één serverproces volledig naar 100% CPU-belasting duwen en het ongeschikt maken om andere verzoeken te verwerken. Apps die de Pages Router gebruiken, of geen Server Actions hebben, worden niet getroffen.
Blootstelling kan per hostingprovider verschillen. Netlify zei dat zijn platform het image-optimizer-codepad niet uitvoert en dat de zwakheden beperkte impact hebben op zijn setup, maar raadt nog steeds aan te upgraden.
Wat te doen
Upgrade naar Next.js 16.4.1 als je versie 16 draait, of naar 15.5.28 als je versie 15 gebruikt, en bouw en deploy daarna opnieuw.
Het Vercel-advies zegt dat het upgraden van Next.js ervoor zorgt dat package managers automatisch de gerepareerde versie van sharp leveren. Dat geldt voor versie 16, omdat 16.4.1 sharp 0.35.5 vereist.
Voor versie 15 kan dat niet altijd het geval zijn. 15.5.28 accepteert nog steeds de oudere, getroffen sharp 0.34.x, en upgraden over een bestaande installatie kan die versie in stand laten. Controleer met npm ls sharp en werk sharp bij naar 0.35.5 of later indien nodig.
Als je Next.js niet meteen kunt upgraden, is er een tussentijdse optie voor de afbeeldingsfout: zorg dat sharp 0.35.5 of later is, of blokkeer SVG-rendering in sharp met sharp.block({ operation: ["VipsForeignLoadSvg"] }), zoals in het sharp-advies wordt beschreven. De use cache– en Server Actions-zwakheden hebben geen workaround; alleen de upgrade sluit ze.
Op 15 oktober hadden de use cache– en Server Actions‑adviezen nog geen CVE en verschenen ze niet in de npm-advisoryfeed die npm audit gebruikt, dus dependency-scanners waarschuwen mogelijk niet voor hen. De afbeeldingsfout komt wel naar voren via het eigen advies van sharp.
Waarom de afbeeldingsfout steeds terugkeert
Dit is de derde keer sinds augustus dat beeldverwerking in Next.js heeft geleid tot een code-executiezwakheid. In augustus maakte een bug in libheif, bereikbaar via sharp, code-executie mogelijk toen de optimizer een speciaal vervaardigde AVIF-afbeelding afhandelde. In september maakte een zwakheid in next/og het mogelijk dat door een aanvaller gecontroleerde tekst de gegenereerde SVG wijzigde.
Next.js heeft zijn eigen afbeeldingscode deze keer niet gewijzigd. 16.4.1 bevat dezelfde optimizer als 16.4.0 en verhelpt de afbeeldingsfout door het meegeleverde sharp te verhogen naar 0.35.5, dat een gepatchte librsvg (2.63.2) bevat.
De librsvg-bug, CVE-2026-96889, werd op 23 september openbaar gemaakt en op 27 september in sharp gepatcht. Red Hat gaf het een score van 7,8 en stelde dat exploitatie gebruikersinteractie nodig kan hebben, bijvoorbeeld het openen van een kwaadaardig bestand. Vercel beoordeelde de Next.js-blootstelling als 9,5 en bereikbaar via het netwerk.
De onderzoeker die de librsvg-bug rapporteerde, Rafael B. Dias, zegt dat het de zwakte is achter de september‑zwakheid in next/og. Er is sindsdien een werkende exploit voor die eerdere zwakheid gepubliceerd, gebouwd voor één specifieke serverconfiguratie.
De maintainer van sharp waarschuwt ook dat of een fout eindigt in code-executie of slechts in een crash kan afhangen van de Node.js-build van de server, omdat de officiële Node.js-binaries niet gehard zijn tegen dit soort geheugenaanvallen.
Niet hetzelfde als React2Shell
De React Server Components-zwakheid zit in dezelfde drie pakketten als React2Shell, de uiterst ernstige zwakheid die in december 2025 werd openbaar gemaakt en die aanvallers op grote schaal misbruikten. Deze nieuwe fout is veel beperkter. React beschrijft het als van invloed op “zeer zeldzame gevallen waarin responses meerdere typed arrays transporteren en een door een aanvaller gecontroleerde waarde aanwezig is.”
Per 15 oktober zijn er geen openbare meldingen dat een van de drie op 14 oktober verholpen zwakheden in het wild is gebruikt.
