1. eine Übersicht über die Schwachstellen
Schwachstelle Nummer: CVE-2025-55182
Schwachstelle Typ:: Entfernte Code-Ausführung (RCE)
Anfälligkeitsgrad:: Kritisch
Umfang der AuswirkungenNext.js, React Server Components verwandte Frameworks und Bibliotheken
Zeitpunkt der Entdeckung:: 2025
Status der Wiederherstellung:: Patches veröffentlicht
CVE-2025-55182 ist eine kritische Sicherheitslücke bei der Ausführung von Remotecode, die das Next.js-Framework und seine abhängigen Bibliotheken betrifft. Die Schwachstelle ist auf unzureichende Prüfsummen in der Behandlung serialisierter Daten von React Server Components (RSC) durch den Next.js App Router zurückzuführen, die es einem Angreifer ermöglichen, auf der Serverseite beliebigen Code auszuführen, indem er eine bösartige RSC-Anfrage erstellt.
2. eine Beschreibung der Schwachstelle
2.1 Technischer Hintergrund
Next.js ist ein auf React basierendes Open-Source-Webframework, das weithin zur Erstellung von Anwendungen für serverseitiges Rendering (SSR), statische Website-Generierung (SSG) und hybrides Rendering verwendet wird.React Server Components (RSC) ist eine in React 19 eingeführte Funktion, die es Entwicklern ermöglicht, Komponentenlogik direkt auf dem Server auszuführen und den Komponentenzustand an den Client zu serialisieren.
2.2 Auslösende Bedingungen für die Verwundbarkeit
Die Sicherheitslücke wird in Next.js durch die folgende Bedingung ausgelöst.
-
Next.js-Version verwendet React 19 (Integration beginnt bereits im Mai 2024)
-
Die Anwendung verwendet die Routing-Methode App Router
-
Keine angemessenen Sicherheitsprüfungen von RSC-serialisierten Daten von Kunden
2.3 Spezifische Erscheinungsformen
Kernpunkte der GefährdungIn.
-
Next.js nimmt die vom Client gesendeten serialisierten RSC-Daten direkt entgegen und übergibt sie zur Deserialisierung an den ReactFlightReplyServer
-
Mangel an angemessener Validierung der Modellstruktur, der Referenzpfade und der Serverreferenz-Metadaten
-
Mehrere Schlüsselfunktionen in der RSC-Parsing-Verknüpfung (parseModelString, getOutlinedModel, loadServerReference, initializeModelChunk usw.) können die Rechtmäßigkeit der Daten nicht wirksam überprüfen
-
Ein Angreifer kann das Aufrufziel während der Modullade- und Referenzbindungsphase mit einer sorgfältig konstruierten bösartigen RSC-Anfrage kontrollieren.
3. die Grundsätze und Ursachen von Schwachstellen
3.1 RSC-DeserialisierungArbeitsabläufe
Der Kommunikationsmechanismus für React Server Components umfasst die folgenden wichtigen Schritte.
-
SerialisierungsphaseServerkomponente: Die Serverkomponente wird auf der Serverseite ausgeführt und ihr Zustand wird in ein bestimmtes Format serialisiert, um an den Client gesendet zu werden.
-
ÜbertragungsstufeSerialisierungsdaten werden über das Netz an den Client übertragen
-
DeserialisierungsstufeClient: Der Client empfängt Daten und deserialisiert sie in den Zustand der React-Komponente.
3.2 Analyse der Ursachen von Schwachstellen
Die Ursachen für diese Schwachstelle sind unter anderem folgende.
Fehlende strukturelle KalibrierungDie Modellstruktur der seriellen RSC-Daten ist nicht ausreichend validiert, so dass Angreifer ungewollte Datenstrukturen einfügen können.
Mängel bei der ZitierpfadkontrolleLoadServerReference: Die Funktion loadServerReference führt beim Laden einer Server-Referenz keine strengen Sicherheitsüberprüfungen des Referenzpfades durch, so dass ein Angreifer auf jedes beliebige Modul verweisen kann, das geladen werden kann.
Metadaten nicht ausreichend validiertServer-Referenz-Metadaten: Server-Referenz-Metadaten enthalten Informationen wie Modul-IDs, Exportnamen usw. Unzureichende Prüfsummen für diese Metadaten ermöglichen es einem Angreifer, auf unsichere Funktionen zu verweisen.
Vertrauensprobleme bei DeserialisernReactFlightReplyServer verlässt sich zu sehr auf die Operationen, die an deserialisierten Objekten durchgeführt werden, und ruft Funktionen wie parseModelString, getOutlinedModel usw. direkt auf, um Benutzereingaben zu verarbeiten.
3.3 Analyse der Angriffskette
Der Exploit-Link des Angreifers lautet wie folgt.
Böswillige RSC-Anfragen
↓
parseModelString (Datenformat-Parsing)
↓
getOutlinedModel (Modell get)
↓
loadServerReference (Lastserver-Referenz)
↓
initializeModelChunk
↓
Ziel des Aufrufs der Steuerfunktion
↓
Ausführung von willkürlichem Code
Bei dem oben genannten Link kann ein Angreifer bösartige Daten an mehreren Stellen einspeisen, was zu einem Schaden führt.
-
Laden nicht vorgesehener Module
-
Unbeabsichtigte Funktionsaufrufe
-
Übergabe bösartiger Parameter
-
Eventuell Ausführung von beliebigem Code auf der Serverseite
4. die Auswirkungen der Anfälligkeit und die Gefährdungen
4.1 Direkte Auswirkungen
Entfernte Code-AusführungAngreifer können beliebigen Code auf der Serverseite ohne Authentifizierung ausführen, die höchste Stufe der Kompromittierung
Die Server sind komplett ausgefallen.Ein Angreifer, der die gleichen Rechte wie der Node.js-Prozess hat, kann.
-
Zugriff auf sensible Daten, die von der Anwendung gespeichert werden (Datenbankanmeldeinformationen, API-Schlüssel, Benutzerdaten usw.)
-
Ändern oder Löschen von Daten auf dem Server
-
Installation von Backdoor-Verfahren zur Persistenzkontrolle
-
Wird für weitere Intranet-Angriffe verwendet
DatenschutzverletzungAngreifer können auf alle auf dem Server gespeicherten sensiblen Informationen zugreifen und diese stehlen.
4.2 Betroffene Nutzergruppen
Die Sicherheitslücke betrifft die folgenden Personen.
-
Alle Produktionsanwendungen, die die betroffene Version von Next.js verwenden
-
Projekte, die die zugehörige React Server Components-Bibliothek verwenden(react-server-dom-webpack, react-server-dom-turbopack, react-server-dom-parcel)
-
Nutzer von Webanwendungen, die auf Next.js basieren
-
Nutzer von Low-Code-Plattformen wie Dify
4.3 Bewertung der physischen Bedrohung
Die Schwachstelle weist die folgenden Merkmale auf, die zu einer hohen tatsächlichen Bedrohung führen.
-
Einfach zu bedienenAngreifer senden einfach sorgfältig konstruierte HTTP-Anfragen.
-
Keine Authentifizierung erforderlich:: Exploits erfordern keine gültige Benutzeridentität
-
weitreichender EinflussNext.js und React sind die vorherrschenden Frameworks in der Webentwicklung mit einer Vielzahl von Einflüssen
-
Hoher Grad an Automatisierung:: Für die Massenprüfung und -nutzung können automatisierte Tools geschrieben werden
5. gefährdete POC/EXP
5.1 Beispiele für Ausnutzungsprinzipien
Der folgende Code veranschaulicht eine mögliche Ausnutzung durch einen Angreifer (nur zu Lehrzwecken).
// Böswillige RSC-Serialisierungsanfragen konstruieren
// Beispiel für das RSC-Format: D{serialisierte Daten}T{server-seitige Referenz}
// Bösartige Nutzdatenstruktur, die ein Angreifer konstruieren kann.
const maliciousRSCPayload = {
// Durch Kontrolle der Modellstruktur und der Referenzpfade
Modell: {
// Verweis auf ein unsicheres Modul
$$ype:"@@MODULE_REFERENCE",
id: "... /... /server/sensitive-module",
Name: "dangerousFunction"
},
// Bösartige Parameter übergeben
args: [
"require('child_process').execSync('malicious-command')"
]
};
// Senden Sie eine bösartige Anfrage an die App-Router-Schnittstelle.
fetch('/api/rsc', {
Methode: 'POST',
Körper: serializeRSC(bösartigeRSCPayload)
});
5.2 Wichtige Angriffsvektoren
Vektor 1 - Modul Pfadverfolgung:
Durch die Konstruktion von Zeichen, die Pfadverzweigungen enthalten (z. B. ... /... /), um Module zu laden, die nicht im erwarteten Bereich liegen.
Vector 2 - Server Referenz Fake:
Fake Server Reference Metadaten, so dass loadServerReference eine beliebige Funktion lädt und ausführt.
Vektor 3 - Parameterinjektion:
Einschleusen bösartiger Parameter in serialisierte Daten, die dann deserialisiert und direkt in Funktionsaufrufen verwendet werden.
5.3 Erkennungsmethoden
Die Schwachstelle kann auf ihre Ausnutzung hin getestet werden.
# Überprüfung der Next.js-Version
npm list next
# Prüfung auf anormale RSC-Anforderungen in den Anwendungsprotokollen
# Betrifft POST-Anfragen, bei denen der Anfragekörper die folgenden Merkmale enthält.
# - MODULE_REFERENCE verweist auf das Systemmodul
# - Enthält Symbole zur Pfadüberquerung (... /... /)
# - Ungewöhnliche Server-Referenz-Metadaten
# Überwachung der Prozessausführung und Überprüfung auf anormale Starts von untergeordneten Prozessen
6. die Vorschläge oder Programme zur Rehabilitation
6.1 Offizielle Korrekturen
Next.js hat die Schwachstelle offiziell beseitigt, indem es die Abhängigkeiten von React Server Components und die Bindung an das korrigierte RSC-Parsing-Portal aktualisiert hat. Die wichtigsten Verbesserungen des Fixes umfassen.
Verbesserte DatenvalidierungStrenge Prüfungen der Struktur von RSC-Daten vor der Deserialisierung
Sicheres Laden von ModulenLoadServerReference: Die Funktion loadServerReference implementiert einen Whitelisting-Mechanismus, so dass nur die erwarteten Module geladen werden können.
Überprüfung der Sicherheit von MetadatenServerreferenz-Metadaten werden durch eine Signatur oder einen anderen Sicherheitsmechanismus überprüft.
Verbesserungen bei der FehlerbehandlungAbnormale Daten werden sicher zurückgewiesen, anstatt dass versucht wird, sie zu verarbeiten.
6.2 Schritte zur Notfallreparatur
Schritt 1 - Abhängigkeiten jetzt aktualisieren:
# Aktualisieren von Next.js auf eine feste Version
npm update next@latest
# Synchronisierte Aktualisierung der Bibliotheken für React Server Components
npm update react-server-dom-webpack
npm update react-server-dom-turbopack
npm update react-server-dom-parcel
# Wenn Sie Dify verwenden, aktualisieren Sie auf 1.10.1-fix.1 oder höher
npm update dify
Schritt 2 - Vollversion der Korrespondenztabelle:
Für verschiedene Next.js-Versionszweige sollten Sie auf die folgenden minimalen Korrekturen aktualisieren.
| Palette der betroffenen Versionen | Revision | Priorität |
|---|---|---|
| 15.1.1-canary.0 ~ 15.1.9 | 15.1.9 | Ihr (Ehrentitel) |
| 14.3.0-canary.77 ~ 15.0.5 | 15.0.5 | Ihr (Ehrentitel) |
| 15.5.1-canary.0 ~ 15.5.7 | 15.5.7 | Ihr (Ehrentitel) |
| 15.2.0-canary.0 ~ 15.2.6 | 15.2.6 | Ihr (Ehrentitel) |
| 15.3.0-canary.0 ~ 15.3.6 | 15.3.6 | Ihr (Ehrentitel) |
| 15.4.0-canary.0 ~ 15.4.8 | 15.4.8 | Ihr (Ehrentitel) |
| 16.0.0-canary.0 ~ 16.0.7 | 16.0.7 | Ihr (Ehrentitel) |
React Server Komponenten Bibliothek korrigiert Version:
| Bibliotheksname | betroffene Version | Revision |
|---|---|---|
| react-server-dom-webpack | 19.0 ~ 19.0.1 | 19.0.1 |
| 19.1.0 ~ 19.1.2 | 19.1.2 | |
| 19.2.0 ~ 19.2.1 | 19.2.1 | |
| react-server-dom-turbopack | 19.0 ~ 19.0.1 | 19.0.1 |
| 19.1.0 ~ 19.1.2 | 19.1.2 | |
| 19.2.0 ~ 19.2.1 | 19.2.1 | |
| react-server-dom-parcel | 19.0 ~ 19.0.1 | 19.0.1 |
| 19.1.0 ~ 19.1.2 | 19.1.2 | |
| 19.2.0 ~ 19.2.1 | 19.2.1 | |
| Dify | 0 ~ 1.10.1 | 1.10.1-fix.1 |
Schritt 3 - Überprüfen des Upgrades:
# Flush-Abhängigkeits-Cache
rm -rf node_modules paket-lock.json
# Abhängigkeiten neu installieren
npm-Installation
# Validierte Version
npm list next react-server-dom-webpack
# Anwendung neu starten
npm run build
npm-Start
6.3 Langfristige Verteidigungsstrategien
Code-Audit:
-
Überprüfung des RSC-bezogenen Codes in App Router
-
Prüfung auf benutzerdefinierte Deserialisierungslogik
-
Sicherstellen, dass es keine zusätzlichen Sicherheitsrisiken gibt
Zugangskontrolle:
-
Beschränkung des Zugriffs auf API-Endpunkte (falls möglich)
-
Implementierung einer IP-basierten Zugangskontrolle
-
Einsatz von WAF-Regeln zur Erkennung anomaler RSC-Anfragen
Überwachung und Protokollierung:
-
Detaillierte Anwendungsprotokollierung aktivieren
-
Überwachung auf ungewöhnliche HTTP-Anforderungsmuster
-
Einstellen von Warnregeln zur Erkennung von RCE-Versuchen
Verwaltung von Abhängigkeiten:
-
Regelmäßige Aktualisierung von Paketen mit Abhängigkeiten
-
Prüfen auf Sicherheitslücken mit npm audit
-
Erwägen Sie den Einsatz von Werkzeugen zur Analyse der Softwarezusammensetzung (SCA)
Bewährte Sicherheitspraktiken:
-
Einschränkung der Node.js-Prozessprivilegien nach dem Least-Privilege-Prinzip
-
Ausführen von Anwendungen in einer Container- oder Sandbox-Umgebung
-
Regelmäßige Sicherheitstests und Penetrationstests
6.4 Vorläufige Abhilfemaßnahmen (vor der Aufrüstung)
Wenn aus irgendeinem Grund eine sofortige Aufrüstung nicht möglich ist, können die folgenden vorläufigen Maßnahmen ergriffen werden, um das Risiko zu verringern.
// Hinzufügen der RSC-Anfragevalidierung zur Middleware
export function middleware(request) {
// Verdächtige RSC-Anfragen erkennen
if (request.nextUrl.pathname.includes('/rsc') ||
request.headers.get('rsc') === 'true') {
// Prüfung auf verdächtige Muster im Anforderungskörper
const body = request.body;
// Ablehnen von Anfragen, die Pfadüberquerungen oder Ausnahmereferenzen enthalten
if (body.includes('... /... /') ||
body.includes('MODULE_REFERENCE') ||
body.includes('eval')) {
return new Response('Forbidden', { status: 403 });
}
}
return NextResponse.next();
}
Wichtige Hinweise:: Vorläufige Maßnahmen reduzieren nur das Risiko und beseitigen die Bedrohung durch die Sicherheitslücke nicht vollständig. Sie sollten so bald wie möglich auf die offizielle Korrektur aktualisieren.
7. referenzierte Zitate
referenzierte Ressource:
-
Next.js GitHub Repository - Sicherheitshinweis. https://github.com/vercel/next.js/security/advisories
-
React Server Komponenten Dokumentation. https://react.dev/reference/rsc/server-components
-
CVE-2025-55182 Offizielle Details. https://nvd.nist.gov/vuln/detail/CVE-2025-55182
Ähnliche Artikel:
-
Next.js Offizielle Website. https://nextjs.org/
-
React Offizielle Dokumentation. https://react.dev/
-
Dify GitHub Repository & Versionshinweise. https://github.com/langgenius/dify/releases/tag/1.10.1-fix.1
Sicherheitshinweis:
-
OWASP Code Injection. https://owasp.org/www-community/attacks/Code_Injection
-
CWE-94: Unzulässige Kontrolle der Code-Erzeugung ('Code Injection') https://cwe.mitre.org/data/definitions/94.html
-
Node.js Sicherheit Best Practices. https://nodejs.org/en/docs/guides/security/
Originalartikel von Chief Security Officer, bei Vervielfältigung bitte angeben: https://www.cncso.com/de/cve-2025-55182-react-server-components-rce.html
