React2Shell: Kritieke kwetsbaarheid in React Server Components

04 december 2025

bron: Tenable, Access42 SOC

Op 3 december 2025 heeft het team van React een ernstige kwetsbaarheid bekendgemaakt: CVE-2025-55182. Deze bug, React2Shell, treft de “React Server Components” (RSC) en maakt het mogelijk om zonder authenticatie remote code uit te voeren op een server.

Wat houdt de kwetsbaarheid in?

  • De fout zit in onveilige deserialisatie van data binnen de RSC-protocol (“Flight”).

  • Een aanvaller kan via een speciaal gemaakte HTTP-request (payload) willekeurige server-side JavaScript-code uitvoeren — ook als er geen expliciete “Server Function”-endpoints gebruikt worden.

  • Dit geldt niet alleen voor React zelf, maar ook voor frameworks die React gebruiken — bijvoorbeeld Next.js. Voor Next.js is de bijbehorende identifier CVE-2025-66478. Welke versies zijn kwetsbaar?

De kwetsbaarheid treft de volgende React-RSC-pakketten in deze versies: react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack versies 19.0, 19.1.0, 19.1.1 en 19.2.0.

Daarnaast zijn ook bepaalde versies van Next.js (met App Router) kwetsbaar.

Hoe ernstig is het?

Zeer ernstig — de kwetsbaarheid is ingeschaald op CVSS score 10.0: maximale ernst.
Dat is mede zorgwekkend omdat populaire webapps vaak (gedeeltelijk) draaien op React / Next.js — dus veel omgevingen kunnen kwetsbaar zijn.

Is het al misbruikt?

Volgens de laatste melding (3 december 2025) zijn er nog geen bevestigde gevallen van in-the-wild exploitatie van CVE-2025-55182. Het team dat de kwetsbaarheid ontdekte houdt de situatie nauwlettend in de gaten.

Er circuleren wel onbevestigde meldingen van pogingen tot misbruik.

Wat kun je doen om je applicatie te beschermen?

  • Update direct naar de gepatchte versies: voor React-RSC: react-server-dom-webpack / parcel / turbopack naar 19.0.1, 19.1.2 of 19.2.1. Voor Next.js: bijvoorbeeld 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 of 16.0.7 (afhankelijk van je versie).

  • Controleer of je applicatie überhaupt React Server Components gebruikt — ook als je geen expliciete Server Function-endpoints hebt, want het kan toch kwetsbaar zijn.

  • Overweeg extra veiligheidsmaatregelen (web-application firewall, strengere input-validatie of deserialisatie) tot je hebt geüpdatet — sommige partijen (zoals Fastly) bieden bijvoorbeeld virtual patches of detectieregels aan.

Waarom React2Shell een big deal is

  • De kwetsbaarheid is “low-complexity”: een aanvaller heeft alleen een kwaadaardige HTTP-request nodig — geen login, geen extra fouten, niets. Dit maakt het extra gevaarlijk.

  • Omdat veel projecten gebruikmaken van React / Next.js (of frameworks daarop), is de potentiële impact dus breed — veel servers draaien mogelijk kwetsbare applicaties.

  • Zelfs apps die “zomaar” een standaard setup hebben, kunnen kwetsbaar zijn — je hoeft niets speciaals geconfigureerd te hebben.


React2Shell Veiligheids-checklist

Is mijn React / Next.js app kwetsbaar?

Gebruik je React Server Components?

Controleer in je project of je RSC gebruikt:

  • Staat er ergens in je project .server.js of .server.jsx?

  • Gebruik je use server in je code?

  • Gebruik je het App Router-model van Next.js (map /app)?

  • Gebruik je het Flight-protocol (bij Next.js automatisch bij App Router)?

Zo ja → mogelijk kwetsbaar.

Welke versies van React Server DOM packages gebruik je?

Controleer in package.json of je één van deze pakketten hebt:

  • react-server-dom-webpack

  • react-server-dom-parcel

  • react-server-dom-turbopack

Zijn deze versies 19.0, 19.1.0, 19.1.1 of 19.2.0?
Dan ben je kwetsbaar.

✔️ Veilige versies:

  • 19.0.1

  • 19.1.2

  • 19.2.1

Gebruik je Next.js?

Controleer of je Next.js gebruikt in combinatie met de App Router (/app-folder).

Kwetsbare versies liggen in vrijwel alle branches van Next 15 en 16.

✔️ Veilige versies (patches):

  • 15.0.5

  • 15.1.9

  • 15.2.6

  • 15.3.6

  • 15.4.8

  • 15.5.7

  • 16.0.7

Upgraden is verplicht om niet kwetsbaar te blijven.

Draait je app een omgeving waarin RSC publiek toegankelijk is?

Voorbeelden:

  • Next.js App Router zonder extra API-gateway of WAF

  • React Server Components endpoint via /react of interne Flight-routes

  • Server staat publiek op internet (IP of domain)

Als de server request-payloads accepteert, ben je kwetsbaar.

Gebruik je custom middleware of proxies?

Sommige proxies (zoals Nginx, Vercel of Node middlewares) loggen of muteren request-bodies.

Controleer of:

  • Je middleware request-streams doorgeeft

  • Je body-parsing zonder limieten toestaat

  • Je requests doorlaat naar RSC zonder controles

Zo ja → risico op exploitatie is hoger.

Heb je al logs gecheckt op mogelijke exploitpogingen?

Let op:

  • Onbekende POST-requests naar RSC-endpoints

  • Requests met ongebruikelijke headers zoals rsc-action

  • Probing of fuzzing-patronen (lange strings, veel JSON, onbekende methodes)

Als je dit ziet → patchen én monitoren.

Heb je al gepatcht, maar nog geen build/test gedaan?

Na patching:

  • Voer een volledige rebuild uit

  • Herstart servers

  • Test zowel server actions als RSC rendering

  • Controleer CI/CD-lockfiles (package-lock.json, yarn.lock)

Veel teams patchen wél, maar vergeten dat hun lockfile nog de oude versies pinned heeft.
Dan blijft je app kwetsbaar.

Heb je een tijdelijke beveiligingsmaatregel?

Tot je update, kun je:

  • WAF-regels gebruiken (bijv. Fastly, Cloudflare)

  • Traffic limiter op payload size

  • Alleen bekende origins toelaten

  • Verdachte headers blokkeren

Dit vervangt geen patch, maar beperkt risico’s.

Conclusie

Je app is waarschijnlijk kwetsbaar als:

  • Je React Server Components gebruikt

  • Je React RSC-packages in de 19.0–19.2 range hebt

  • Je Next.js App Router gebruikt

  • Je nog niet naar de nieuwste patchlevels hebt geüpdatet

Logo created by Tenable Research Special Operations, inspired by the iconic Log4Shell logo.