Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2025-32433-erlang_ssh_rce_reproduction — Reproduktion von cve-2025-32433-erlang_ssh_rce_reproduction | Kitploit
Tools/GitHubGitHub/razureink/cve-2025-32433-erlang_ssh_rce_reproduction
SchwachstellenanalyseExploitationPenetrationstestsLernen & BildungRemote-Access-ToolBinary-Exploitation
GitHubrazureink/cve-2025-32433-erlang_ssh_rce_reproduction

cve-2025-32433-erlang_ssh_rce_reproduction

Reproduktion von cve-2025-32433-erlang_ssh_rce_reproduction

Repository anzeigen
11vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-32433: Erlang/OTP-SSH-Daemon – Pre-Auth-Remote-Codeausführung

CVSS-Score: 10.0 (KRITISCH)
Status: Wird aktiv in freier Wildbahn ausgenutzt
Offenlegung: Juni 2025


Überblick

CVE-2025-32433 ist eine kritische Schwachstelle für nicht authentifizierte Remote-Codeausführung in der SSH-Server-Implementierung (der Anwendung ssh), die mit Erlang/OTP ausgeliefert wird. Der Fehler liegt in der SSH-Verbindungsbehandlungslogik, bevor die Authentifizierung abgeschlossen ist, d. h. es sind keine gültigen Anmeldedaten erforderlich, um die Ausnutzung auszulösen. Ein Angreifer, der einen verwundbaren Erlang-SSH-Port erreichen kann (üblicherweise Port 22 oder von RabbitMQ, Riak, CouchDB usw. verwendete benutzerdefinierte Ports), kann beliebige Shell-Befehle auf dem Zielsystem ausführen.

Die Schwachstelle wurde vom Sicherheitsforscher Felix „xcz" Lange entdeckt und über den OTP-Sicherheitsoffenlegungsprozess gemeldet. Innerhalb von 72 Stunden nach der Sicherheitswarnung tauchte öffentlicher PoC-Code auf, und unmittelbar nach der Offenlegung wurden mehrere Bedrohungsakteure dabei beobachtet, wie sie nach verwundbaren SSH-Bannern (SSH-2.0-Erlang/OTP-*) scannten.


Technische Details

Grundursache

Die Schwachstelle befindet sich in Erlangs SSH-Implementierung, die in der Anwendung ssh von OTP enthalten ist. Konkret liegt der Fehler darin, wie der SSH-Daemon Key-Exchange-Initierungsnachrichten vor der Authentifizierungsphase verarbeitet.

Die Module ssh_bind.erl und ssh_connection_handler.erl validieren den Übergang der Zustandsmaschine nicht ordnungsgemäß, wenn bestimmte ungeordnete oder fehlerhafte SSH-Protokollnachrichten verarbeitet werden. Indem ein Angreifer während der Key-Exchange-Phase ein manipuliertes SSH_MSG_KEXINIT-Paket oder eine speziell konstruierte Service-Request-Nachricht sendet, kann er die Erlang-VM dazu veranlassen:

  1. die Authentifizierungszustandsprüfung zu umgehen
  2. angreiferkontrollierte Daten in Erlang-Terme zu deserialisieren
  3. über unsicheres Term-Decoding beliebige Funktionsaufrufe auszulösen

Im Kern handelt es sich um eine unsichere Deserialisierung von Erlang-Termen in Kombination mit einer State-Machine-Umgehung. Erlangs Funktion binary_to_term/1 wird auf angreiferkontrollierte Eingaben angewendet, ohne dass der Modus safe aktiviert ist, wodurch die Instanziierung beliebiger Atome und der Aufruf beliebiger registrierter Prozesse ermöglicht wird.

Ausnutzungsmechanismus

Attacker                        Vulnerable Erlang SSH Server
   │                                      │
   │──── TCP Connect (port 22) ──────────→│
   │                                      │
   │←── SSH-2.0-Erlang/OTP-26.x banner ──│
   │                                      │
   │──── SSH_MSG_KEXINIT (crafted) ──────→│
   │                                      │
   │──── [malformed service request] ────→│  ← State machine confused
   │                                      │
   │──── [binary_to_term payload] ───────→│  ← Unsafe deserialization
   │                                      │
   │←── Remote shell / cmd execution ────│

Der entscheidende Punkt ist, dass der SSH-Verbindungshandler in einen unerwarteten Zustand gerät, in dem er binary_to_term auf eingehende Daten anwendet, bevor der Sicherheits-Handshake abgeschlossen ist. Durch das Einbetten eines bösartigen Erlang-Terms, der ein Payload zur Befehlsausführung kodiert (z. B. mithilfe von erlang:open_port/2 mit spawn), erlangt der Angreifer Codeausführung mit den Rechten des Erlang-VM-Prozesses.

Payload-Struktur

Ein typischer Payload verwendet Erlangs externes Termformat, um Folgendes zu kodieren:

{run, "cmd.exe /c <command>"}
-- or --
{spawn, "<command>"}

Nach der Dekodierung durch binary_to_term/1 interagieren diese Terme mit der Zustandsmaschine der SSH-Verbindung, um Systembefehle auszuführen.


Betroffene Versionen

ProduktBetroffene VersionenBehobene Versionen
Erlang/OTP< 27.3.2, < 26.2.6, < 25.3.327.3.2+, 26.2.6+, 25.3.3+
Elixir (über Erlang)Alle Versionen mit verwundbarem OTPNeu kompiliert mit gepatchtem OTP
RabbitMQ< 3.12.14, < 3.13.7 (bei verwundbarem OTP)3.12.14+, 3.13.7+ mit gepatchtem OTP
Riak KV/TS< KV 2.9.6, < TS 1.5.5 (bei verwundbarem OTP)Aktualisierte Pakete mit gepatchtem OTP
CouchDB< 3.3.3 (bei Verwendung von Erlang-SSH)3.3.3+ oder SSH deaktivieren
Ejabberd< 24.06 (bei verwundbarem OTP)24.06+ mit gepatchtem OTP

Identifizierung verwundbarer Dienste

Ein Banner-Grab ist in der Regel ausreichend:

# A vulnerable service responds with:
SSH-2.0-Erlang/OTP-26.1
SSH-2.0-Erlang/OTP-25.2
SSH-2.0-Erlang/OTP-27.0

# A patched service responds with:
SSH-2.0-Erlang/OTP-26.2.6
SSH-2.0-Erlang/OTP-27.3.2

Jede Erlang/OTP-Version unterhalb der oben genannten behobenen Versionsnummern ist verwundbar.


Reproduktionsschritte

Voraussetzungen

  • Python 3.8+
  • paramiko oder Roh-Socket-Zugriff (der PoC verwendet Roh-Sockets)
  • Ein Testziel, das eine verwundbare Erlang/OTP-Version mit aktiviertem SSH ausführt

Einrichtung einer verwundbaren Testumgebung (Docker)

# Build a vulnerable Erlang container
FROM erlang:26.1-alpine
RUN echo "root:toor" | chpasswd && \
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
CMD ["erlexec", "ssh:daemon(8222)"]

Oder verwenden Sie einen vorhandenen verwundbaren Dienst in Ihrem Netzwerk.

Schritte

  1. Identifizieren Sie ein verwundbares Ziel per Banner-Grab:

    nc -w 3 <target> 22
    # Look for: SSH-2.0-Erlang/OTP-
    
  2. Führen Sie den PoC-Exploit aus:

    python exploit.py --target 192.168.1.100 --port 22 --command "whoami"
    
  3. Verifizieren Sie die Ausführung:

    • Bei Erfolg wird die Befehlsausgabe zurückgegeben
    • Wenn das Ziel gepatcht ist, wird die Verbindung sauber abgelehnt oder eine Authentifizierung verlangt

Erwartete Ausgabe

[+] CVE-2025-32433 Erlang/OTP SSH Pre-Auth RCE
[+] Target: 192.168.1.100:22
[+] Banner: SSH-2.0-Erlang/OTP-26.1
[+] Triggering vulnerability...
[+] Payload sent.
[+] Response: root
[!] Exploit succeeded

Proof of Concept

Das bereitgestellte exploit.py implementiert einen funktionierenden PoC, der:

  1. eine Verbindung zum SSH-Port des Ziels herstellt
  2. das SSH-Banner empfängt
  3. einen manipulierten SSH-Handshake sendet, der die Pre-Auth-Deserialisierung auslöst
  4. einen Erlang-Externterm-Payload injiziert, der einen Systembefehl kodiert
  5. die Befehlsausgabe aus der Verbindung liest

PoC-Details

Der Exploit nutzt drei Schlüsselkomponenten:

  • Banner-Erkennung: Identifiziert Erlang/OTP-SSH-Dienste anhand ihrer Bannerzeichenfolge
  • Manipulierte KEXINIT: Sendet eine fehlerhafte Key-Exchange-Initierungsnachricht, die die Zustandsmaschine in einen verwundbaren Zustand versetzt
  • Term-Payload: Kodiert den Zielbefehl als Erlang-Externterm, den der Server deserialisiert und ausführt

Wichtige Hinweise

  • Die genauen Byte-Offsets und Nachrichtensequenzen wurden aus den verwundbaren Quelldateien ssh_bind.erl und ssh_transport.erl per Reverse Engineering ermittelt
  • Je nachdem, ob das Ziel unter Windows oder Unix läuft, existieren einige Payload-Varianten
  • Aufgrund interner Zustandsänderungen können für verschiedene OTP-Minorversionen geringfügige Anpassungen am Exploit erforderlich sein

Gegenmaßnahmen

Sofortmaßnahmen

Tool herunterladen