- In React Server Components wurden neue Denial-of-Service (DoS)- und Quellcodeoffenlegungs-Schwachstellen entdeckt und veröffentlicht
- Für diese Schwachstellen ist Remote Code Execution (RCE) nicht möglich, dennoch besteht ein Risiko von Serverausfällen oder Codelecks
- Betroffene Pakete sind
react-server-dom-webpack,react-server-dom-parcel,react-server-dom-turbopackin den Versionen 19.0.0~19.2.2; als gefixte Versionen gelten 19.0.3, 19.1.4, 19.2.3 - Die DoS-Schwachstellen (CVE-2025-55184, CVE-2025-67779) können durch bösartige HTTP-Anfragen eine Endlosschleife auslösen, und die Quellcodeoffenlegungs-Schwachstelle (CVE-2025-55183) kann Teile des Codes von Serverfunktionen zurückgeben
- Das React-Team empfiehlt ein sofortiges Upgrade und erklärt diese zusätzliche Offenlegung als normalen Teil des Sicherheitsreaktionszyklus
Überblick über die neu veröffentlichten Schwachstellen
- Sicherheitsforscher entdeckten bei der Verifikation des in der Vorwoche veröffentlichten Patches für kritische Schwachstellen zwei zusätzliche Probleme
- Für die neuen Schwachstellen ist Remote Code Execution (RCE) nicht möglich; der bisherige React2Shell-Patch ist weiterhin wirksam
- Die neu veröffentlichten Schwachstellen sind folgende
- Denial-of-Service (DoS) — CVE-2025-55184, CVE-2025-67779 (CVSS 7.5, hohe Schwere)
- Quellcodeoffenlegung — CVE-2025-55183 (CVSS 5.3, mittlere Schwere)
- Das React-Team empfiehlt ein sofortiges Upgrade
Unvollständigkeit des bisherigen Patches
- Der in der Vorwoche bereitgestellte Patch in den Versionen 19.0.2, 19.1.3, 19.2.2 war unvollständig und muss erneut aktualisiert werden
- Der vollständige Fix ist in 19.0.3, 19.1.4, 19.2.3 enthalten
- Den Update-Anweisungen aus dem vorherigen Beitrag ist zu folgen
- Weitere Details werden nach der Bereitstellung der Korrektur veröffentlicht
Betroffene Pakete und Versionen
- Die Schwachstellen betreffen dieselben Pakete und Versionen wie CVE-2025-55182
- Betroffene Versionen: 19.0.0~19.2.2
- Betroffene Pakete:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
- Gefixte Versionen: 19.0.3, 19.1.4, 19.2.3
- Anwendungen, die keinen Server einsetzen oder React Server Components nicht unterstützen, sind nicht betroffen
Typisches Muster nachfolgender Offenlegungen
- Nach der Veröffentlichung einer kritischen CVE werden in der Zusatzanalyse betroffener Codepfade häufig weitere Schwachstellen gefunden
- Als Beispiel wird auf zusätzliche CVEs nach Log4Shell verwiesen
- Solche zusätzlichen Offenlegungen bedeuten, dass die Sicherheitsreaktion korrekt funktioniert
Betroffene Frameworks und Bundler
- Die folgenden Frameworks und Bundler enthalten oder hängen von den betroffenen React-Paketen ab:
next,react-router,waku,@parcel/rsc,@vitejs/plugin-rsc,rwsdk
- Den Update-Anweisungen aus dem vorherigen Beitrag ist zu folgen
Milderungsmaßnahmen durch Hosting-Anbieter
- Mit mehreren Hosting-Anbietern wurden temporäre Milderungsmaßnahmen umgesetzt
- Dennoch sollte man sich nicht auf diese Maßnahmen verlassen und ein sofortiges Update durchführen
Hinweise zu React Native
- Für reine React Native-Nutzung ist keine zusätzliche Maßnahme erforderlich
- In einem Monorepo sind nur die folgenden Pakete zu aktualisieren:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
reactundreact-dommüssen nicht aktualisiert werden- Weitere Details sind in der React Native GitHub-Issue dokumentiert
Hohe Schwere: Denial-of-Service (DoS)
- CVE-2025-55184, CVE-2025-67779, CVSS 7.5
- Wird eine bösartige HTTP-Anfrage an den Server-Funktionsendpunkt von React gesendet, kann im Deserialisierungsschritt eine Endlosschleife entstehen
- Der Serverprozess kann abstürzen und übermäßig viel CPU-Ressourcen nutzen
- Auch ohne direkte Implementierung eines Endpunkts für Serverfunktionen kann eine App betroffen sein, sofern sie React Server Components unterstützt
- Der heute bereitgestellte Patch behebt das Problem durch Verhinderung der Endlosschleife
- Die erste Korrektur war unvollständig und wurde durch die zusätzliche Schwachstelle (CVE-2025-67779) ergänzt
Mittlere Schwere: Quellcodeoffenlegung
- CVE-2025-55183, CVSS 5.3
- Eine bösartige HTTP-Anfrage kann Teile des Quellcodes von Serverfunktionen zurückgeben
- Das tritt auf, wenn Serverfunktionen String-Argumente explizit oder implizit offenlegen
- In Beispielcode können hartkodierte Geheimwerte wie Datenbank-Verbindungsschlüssel offengelegt werden
- Der Patch behebt dies durch Verhinderung der Stringifizierung des Serverfunktions-Quellcodes
- Der Offenlegungsbereich ist auf den internen Code von Serverfunktionen beschränkt; Runtime-Geheimnisse wie
process.env.SECRETsind nicht betroffen - Die Verifikation sollte anhand von Produktions-Bundles erfolgen
Zeitplan
- 3. Dezember: Andrew MacPherson meldete die Quellcodeoffenlegung bei Vercel und der Meta Bug Bounty
- 4. Dezember: RyotaK meldete die DoS-Schwachstelle
- 6. Dezember: Das React-Team bestätigte beide Probleme und begann die Untersuchung
- 7. Dezember: Erstellen eines initialen Fixes und Aufstellen eines Verifizierungsplans
- 8. Dezember: Benachrichtigung von Hosting-Anbietern und Open-Source-Projekten
- 10. Dezember: Umsetzung von Milderungsmaßnahmen und Abschluss der Patch-Verifizierung
- 11. Dezember: Shinsaku Nomura meldete zusätzliche DoS-Schwachstelle; Veröffentlichung von CVE-2025-55183, CVE-2025-55184 und CVE-2025-67779
Meldende Personen
- Andrew MacPherson (AndrewMohawk) — Meldung zur Quellcodeoffenlegung
- RyotaK (GMO Flatt Security Inc) und Shinsaku Nomura (Bitforest Co., Ltd.) — Meldung zur DoS-Schwachstelle
1 Kommentare
Hacker-News-Kommentare
React Server Components (RSC) haben sich für mich immer unbehaglich angefühlt
weil man allein am JavaScript-Code schwer erkennen kann, welche Teile auf dem Client und welche auf dem Server laufen
Außerdem braucht die Umsetzung einen tiefgreifenden serialisierten RPC-Mechanismus, der für Entwickler intransparent ist und das Risiko von Sicherheitslücken erhöht
Aber mit dem app router wurde es verwirrend. Weil Code auf beiden Seiten laufen kann, sind Objekte wie Headers nicht immer vorhanden, und es ist schwer zu erkennen, was wo ausgeführt wird
Wenn React+Next gut funktioniert, wirkt es wie Magie, aber bei Teamarbeit geht Vorhersehbarkeit immer mehr verloren, und das ist das Problem
Die Rollen sind klar, die Arbeit ist einfach, und ich halte es bei den meisten Projekten für die sicherste Wahl
Für Landingpages oder Marketingseiten ist SSR nützlich, aber bei Apps wie gewöhnlichen SaaS-Dashboards gibt es im Verhältnis zur Komplexität kaum Nutzen
Ist React nur stärker im Fokus, weil es so populär ist, oder ist es strukturell riskanter?
Ich habe mir letzte Woche RSC angesehen, und die Komplexität war extrem hoch, während es kaum Dokumentation gab
React bezeichnet es noch als experimentelles Feature, aber NextJS hat es bereits breit ausgerollt
Ich denke, es werden noch mehr Sicherheitsprobleme auftauchen, und das Build-System von Next war so komplex, dass selbst Debugging schwierig war
Die Kosten sind im Verhältnis zum Nutzen viel zu hoch
Deshalb habe auch ich Next verlassen. Die kognitive Belastung war zu hoch, für zu wenig Gewinn
Nicht nur bei RSC, auch allgemein kamen klare Leitfäden spät, und Werkzeuge wie CRA wurden nicht einmal offiziell anerkannt
Erst jetzt ist die Dokumentation zu useEffect besser geworden, aber viel zu spät
Selbst jetzt, im Jahr 2025, nutze ich es in der Praxis, und es fehlt weiterhin an klarer Dokumentation
Der Kern von SPA war ursprünglich: „Die gesamte App an den Client senden und mit dem Server nur Daten austauschen“
Wie früher bei .aspx Web Forms wird jeder Klick und jede Eingabe an den Server geschickt, und das geänderte DOM wird wieder zurückgesendet
Im Grunde ist man zu der alten Methode zurückgekehrt, was etwas absurd wirkt
Schade, dass das Gespür dafür verloren gegangen ist, „das passende Werkzeug zu wählen“
In dieser Sicherheitsmitteilung fiel mir am stärksten der Satz auf, dass „wenn eine kritische CVE entdeckt wird, oft nachfolgende Schwachstellen sichtbar werden“
Das wirkte beunruhigend, weil es so aussah, als wolle man die CVE rechtfertigen, noch bevor Umfang, Auswirkungen oder Gegenmaßnahmen erklärt werden
Passender Wikipedia-Artikel
Bereits vor 15 Jahren gab es bei Opa einen ähnlichen Versuch
Client- und Server-Code wurden automatisch getrennt, und eine JSX-ähnliche Syntax wurde eingeführt
Doch als die Sicherheitsanalyse verstärkt wurde, wurde der Compiler riesig, und am Ende erkannte man, wie wichtig eine klare Trennung statt des Konzepts einer einzelnen App ist
Vielleicht erzeugen LLMs solchen Code eines Tages automatisch, aber im Moment halte ich einfachere Strukturen für besser
Es wird bereits an Patches gearbeitet, um Probleme wie Prototype Pollution in JS, function toString und Promise-Overrides zu verhindern
RSC trennt Umgebungen durch statische Prüfung wie
import "server-only"oderimport "client-only", also ist es strukturell ein sicherer AnsatzReact war ursprünglich gut, als es klein und einfach die View in MVC war
Heute hat es zu viele Funktionen und wirkt aufgebläht
git checkout v15.0.0RSC hätte von Anfang an nicht existieren sollen
Für die meisten Apps reicht es völlig, HTML auf dem Server zu rendern, und nur für einen kleinen Teil ist eine SPA wirklich nötig
RSC hat nur Komplexität und Sicherheitslücken vergrößert
Projekte wie Bun und Vercel verkaufen die Illusion einer JS-Utopie, in der alles perfekt funktioniert, deshalb wird dieser Trend wohl nicht so schnell verschwinden
Ich hatte früher auf X eine Diskussion mit Dan Abramov über RSC
Er nannte es ein innovatives Feature, ich dagegen eine „Waffe, mit der man sich selbst in den Fuß schießt“. Am Ende ist es genau so gekommen
Allerdings habe ich die Möglichkeit von Bugs auf Protokollebene unterschätzt. Diese Schwachstellen konzentrieren sich auf das Serialisierungsprotokoll
Die Security-Community schaut jetzt erst richtig tief hinein, und es wäre gut gewesen, wenn das Team früher reagiert hätte
Auch React ist von einer einfachen Rendering-Bibliothek zu einer Runtime geworden, wodurch die Komplexität explodiert ist
Vue und Vite wirken dagegen viel eleganter entworfen → Evan Yous persönliche Website
Manchmal wird ein mutiger Versuch eben doch ein Volltreffer
Wenn RSC der Versuch ist, dass das Frontend das Backend verschlingt, dann ist HTMX das Gegenteil
HTMX hält die Grenze zwischen Client und Server aufrecht, wodurch das Backend sicherer bleibt, aber im Frontend besteht ein XSS-Risiko
Dazugehöriger Artikel
Das Next-Team hat ein neues Sicherheitsupdate veröffentlicht → NextJS Security Update 2025-12-11
Betroffen sind die Versionen 14.x, 15.x und 16.x