1 Punkte von GN⁺ 2025-12-19 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Auf einem privat betriebenen Hetzner-Server wurde eine ungewöhnliche CPU-Auslastung festgestellt; die Untersuchung ergab, dass ein Kryptowährungs-Miner für Monero (xmrig) lief
  • Ursache war ein Angriff auf den Umami-Analytics-Container, der die Remote-Code-Execution-Schwachstelle in Next.js (CVE-2025-66478) enthielt
  • Glücklicherweise lief der Container als Non-Root-Benutzer und ohne Host-Mounts oder Privilegienerweiterung, sodass der Einbruch auf den Container beschränkt blieb
  • Die Angreifer nutzten unsichere Deserialisierung in Next.js Server Components, um eine schädliche Payload auszuführen und den Miner zu installieren
  • Der Vorfall zeigt die Bedeutung von Dependency-Management und sicheren Container-Einstellungen; der Autor verschärfte daraufhin seine Sicherheitsmaßnahmen mit aktivierter Firewall, gehärtetem SSH und regelmäßigen Updates

Der Hack und die erste Reaktion

  • Von Hetzner kam eine Warn-E-Mail, dass der Server externe Netzwerke gescannt habe
    • Einschließlich des Hinweises, dass der Server ohne Gegenmaßnahmen innerhalb von 4 Stunden gesperrt werden könnte
  • Nach dem Login per SSH zeigte sich ein Prozess mit 819 % CPU-Auslastung unter /tmp/.XIN-unix/javae sowie mehrere xmrig-Prozesse
  • Es stellte sich heraus, dass etwa 10 Tage lang Kryptowährungs-Mining betrieben worden war

Untersuchung des Angriffswegs

  • Alle schädlichen Prozesse liefen unter dem Benutzer mit UID 1001, was zum Umami-Container passte
  • Im Verzeichnis /app/node_modules/next/dist/server/lib/xmrig-6.24.0/ wurde die Miner-Binärdatei gefunden
  • Der Ausführungsbefehl enthielt die Adresse des Mining-Pools auto.c3pool.org:443 sowie einen Benutzerschlüssel

Next.js-Schwachstelle und Angriffsmethode

  • Ursache war die Deserialisierungs-Schwachstelle in React Server Components von Next.js (CVE-2025-66478)
    • Wenn Angreifer eine manipulierte HTTP-Anfrage senden, kann auf dem Server beliebiger Code ausgeführt werden
    • Dadurch wurde die Installation und Ausführung eines Kryptomining-Programms möglich
  • Der Autor war davon ausgegangen, „Next.js nicht direkt zu verwenden“, erkannte jedoch erst später, dass Umami auf Next.js basiert

Bestätigung der Container-Isolation

  • Es wurde bestätigt, dass /tmp/.XIN-unix/javae nicht im Host-Dateisystem existierte
    • Dass der Prozess in der Ausgabe von Docker-ps erschien, war lediglich ein Anzeigeeffekt; tatsächlich blieb die Isolation erhalten
  • Ergebnis von docker inspect:
    • Benutzer: nextjs
    • Privileged: false
    • Mounts: keine
  • Deshalb konnte die Schadsoftware nicht auf den Host zugreifen, keine Cronjobs eintragen, keine Systemdienste anlegen und kein Rootkit installieren

Wiederherstellung und Härtung der Sicherheit

  • Nach dem Stoppen und Löschen des infizierten Umami-Containers normalisierte sich die CPU-Auslastung
  • Durch das Aktivieren der UFW-Firewall wurden nur noch SSH, HTTP und HTTPS erlaubt
  • Nach dem Bericht der Untersuchungsergebnisse an Hetzner wurde das Ticket innerhalb einer Stunde geschlossen

Lehren und Verbesserungen

  • „Ich nutze X nicht“ gilt nicht automatisch für Abhängigkeiten
    • Man muss prüfen, aus welchem Technologie-Stack die verwendeten Tools bestehen
  • Die Wirksamkeit von Container-Isolation wurde bestätigt
    • Non-Root-Benutzer, nicht privilegierter Modus und der Verzicht auf unnötige Volumes verhinderten eine Ausweitung des Schadens
  • Notwendig ist eine mehrschichtige Sicherheitsstrategie (Defense in Depth)
    • Firewall, fail2ban, Monitoring und regelmäßige Updates sind essenziell
  • Hervorgehoben wurde die Bedeutung eines selbst geschriebenen Dockerfiles und minimaler Container-Berechtigungen

Maßnahmen nach dem Vorfall

  • Umami wurde auf die neueste Version aktualisiert und alle Third-Party-Container auditiert
    • Geprüft wurden Laufzeitbenutzer, Mounts, Update-Zeitpunkt und Notwendigkeit
  • Umstellung auf SSH-Schlüssel-basierte Authentifizierung, Deaktivierung des Passwort-Logins und Einrichtung von fail2ban
  • Ausbau des Monitorings mit Grafana und Node Exporter sowie sofortige Anwendung von Sicherheitsupdates

Fazit

  • Durch die Next.js-Schwachstelle in Umami wurde der Server 10 Tage lang zum Monero-Mining missbraucht,
    doch dank Container-Isolation und Non-Root-Konfiguration blieb der Schaden begrenzt
  • Durch diese Erfahrung erkannte der Autor die Wichtigkeit von Dependency-Transparenz, Sicherheitskonfiguration und Update-Management
  • Der Vorfall war in etwa zwei Stunden behoben und bleibt ein Praxisbeispiel für die tatsächliche Wirksamkeit von Container-Sicherheit

Noch keine Kommentare.

Noch keine Kommentare.