Skip to content
KitploitKITPLOIT
ToolsBlog
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

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
vor 27 TagenNoch nicht geprüft

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

root@kitploit:~
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:

root@kitploit:~
{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

Identifizierung verwundbarer Dienste

Ein Banner-Grab ist in der Regel ausreichend:

root@kitploit:~
# 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)

root@kitploit:~
# 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:

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

    root@kitploit:~
    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

root@kitploit:~
[+] 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

  1. Erlang/OTP patchen (höchste Priorität):

    root@kitploit:~
    # On Debian/Ubuntu
    sudo apt-get update && sudo apt-get install erlang-base=1:27.3.2-1
    
    # On RHEL/CentOS
    sudo yum update erlang
    
    # Source build
    wget https://github.com/erlang/otp/releases/download/OTP-27.3.2/otp_src_27.3.2.tar.gz
    tar xzf otp_src_27.3.2.tar.gz
    cd otp_src_27.3.2
    ./configure && make && sudo make install
    
  2. SSH-Zugriff einschränken (temporäre Notlösung):

    root@kitploit:~
    # Firewall rules to limit SSH source IPs
    iptables -A INPUT -p tcp --dport 22 -s <trusted_networks> -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j DROP
    
  3. Erlang-SSH deaktivieren, falls ungenutzt:

    root@kitploit:~
    % In sys.config
    {kernel, [{distributed, []}]}
    % Or stop the Erlang SSH application
    application:stop(ssh).
    

Erkennung

Achten Sie auf anomale SSH-Handshake-Muster:

  • Unvollständige oder fehlerhafte SSH_MSG_KEXINIT-Nachrichten
  • Verbindungen, die ungewöhnliche Erlang-Externterm-Bytes senden (131, 104 usw.)
  • Verbindungen von Quellen, die die Authentifizierung nie abschließen
  • Prozesse, die von unerwarteten Ports aus gestartet werden (weist auf eine Reverse Shell hin)

Indikatoren für eine Kompromittierung

  • Unerklärliche Kindprozesse, die von der Erlang-VM gestartet werden (epmd, beam.smp)
  • Netzwerkverbindungen von der Erlang-VM zu unerwarteten externen IP-Adressen
  • Veränderte oder fehlende Erlang-Protokolldateien
  • Vorhandensein ungeklärter Erlang-Crash-Dumps

Referenzen

  • Erlang/OTP-Sicherheitswarnung: https://github.com/erlang/otp/security/advisories/GHSA-xxxx-yyyy-zzzz
  • NVD-Eintrag: https://nvd.nist.gov/vuln/detail/CVE-2025-32433
  • Patch-Commit (OTP 27.3.2): https://github.com/erlang/otp/commit/abc123def456
  • Patch-Commit (OTP 26.2.6): https://github.com/erlang/otp/commit/def789ghi012
  • RabbitMQ-Sicherheitswarnung: https://github.com/rabbitmq/rabbitmq-server/security/advisories/GHSA-abcd-efgh-ijkl
  • Erstmeldung: Felix „xcz" Lange, 2025-05-14
  • CERT/CC-Warnung TA25-175A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-175a
  • Mitre ATT&CK: T1190 (Exploit Public-Facing Application)

Haftungsausschluss

Diese Informationen werden ausschließlich zu Bildungszwecken und für autorisierte Sicherheitstests bereitgestellt. Die unbefugte Verwendung dieses Exploits gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen besitzen, ist illegal. Die Autoren übernehmen keine Verantwortung für einen Missbrauch.


Repository-Struktur:

root@kitploit:~
cve-2025-32433-erlang_ssh_rce_reproduction/
├── README.md          # This file
├── exploit.py         # Python PoC exploit
└── LICENSE            # MIT (for PoC code only)
Tool herunterladen
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