CVE-2017-3881
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply updates per vendor instructions.
Resumen
Falha de execução remota de código não autenticada no processamento do Cluster Management Protocol (CMP) sobre Telnet em switches Cisco Catalyst e outros equipamentos com IOS/IOS XE. O CVSS 9.8 é real, mas a exploração depende de uma pré-condição frequentemente ignorada: o dispositivo precisa estar configurado para aceitar conexões Telnet (vty com transport input telnet) — algo cada vez mais raro em redes que migraram para SSH, mas ainda comum em switches de acesso legados.
Detalle técnico
O CMP é um protocolo interno da Cisco usado para comunicação de sinalização e comando entre membros de um cluster de switches, e ele reaproveita a sessão Telnet como canal de transporte, com opções específicas de Telnet (suboptions) carregando dados de CMP. O bug tem duas causas combinadas, como o próprio advisory descreve: (1) o dispositivo não restringe o processamento dessas opções CMP a comunicações internas entre membros do cluster — ele aceita e processa a suboption CMP em qualquer conexão Telnet recebida, inclusive de fora da rede de gerência; e (2) o parsing dessa suboption não valida corretamente o tamanho/formato dos dados recebidos.
Na prática, a suboption CMP (identificada no PoC público pelo código IAC SB 0x24) é processada com um buffer de tamanho fixo na pilha, sem checagem de limites — um buffer overflow clássico (CISA classifica como CWE-20, validação de entrada insuficiente, mas o efeito observado é overflow de pilha em arquitetura PowerPC). O atacante controla integralmente o payload enviado durante a negociação de opções Telnet, antes de qualquer autenticação, o que dá controle sobre dados que sobrescrevem o stack, incluindo endereços de retorno.
O PoC público de Artem Kondratenko (base do módulo em exploit-db e do Metasploit) demonstra isso construindo uma cadeia de ROP com gadgets do próprio binário IOS para redirecionar a função is_cluster_mode e forçar o retorno de nível de privilégio 15, criando uma sessão Telnet 'credless' com privilégio máximo — ou, alternativamente, apenas travando o processo e forçando reload do dispositivo.
Cómo se explota
O vetor é uma conexão TCP na porta 23 (Telnet) do dispositivo afetado. Não há autenticação prévia necessária: o payload malformado é enviado durante a fase de negociação de opções Telnet, antes do prompt de login, então o atacante não precisa de credenciais válidas — só de alcance de rede até a porta Telnet. A pré-condição real e frequentemente omitida nas manchetes é essa: o Telnet precisa estar habilitado nas linhas vty do equipamento. Dispositivos configurados apenas com SSH (transport input ssh) não expõem esse vetor.
A exploração pública, disponível desde 2017 (exploit-db 41872/41874, módulo Metasploit, template Nuclei), tem baixa complexidade para quem tem o binário/versão de IOS correspondente aos endereços de gadget usados no PoC — a cadeia de ROP é sensível à versão exata da imagem IOS, já que os endereços dos gadgets mudam entre releases e plataformas (PowerPC vs outras arquiteturas), então adaptar o exploit para uma versão diferente exige reengenharia dos offsets. Mesmo assim, o resultado documentado é: obtenção de shell com privilégio 15 (equivalente a admin total) sem qualquer credencial, ou, na variante mais simples, apenas provocar reload do equipamento (negação de serviço).
A CVE está no catálogo KEV da CISA (adicionada em 25/03/2022, prazo de correção 15/04/2022), confirmando exploração ativa observada, embora a CISA não classifique isso como associado a campanhas de ransomware conhecidas.
Versiones
Cómo protegerse
O advisory da Cisco (cisco-sa-20170317-cmp) afirma explicitamente que não existe workaround que corrija a falha em si — a correção definitiva é atualizar para uma versão fixa de IOS/IOS XE, específica por plataforma e trem de release, indicada pela ferramenta Cisco Software Checker referenciada no próprio advisory. Não foi possível confirmar aqui uma faixa única de versões vulneráveis/corrigidas válida para todos os modelos afetados (Catalyst 2960, 2970, 2975, 3550, 3560 e outros) — a lista de imagens afetadas e corrigidas é extensa e varia por hardware; consulte o advisory oficial e o Software Checker para o modelo/versão específico em uso.
Como controle compensatório real quando a atualização não é viável, desabilitar Telnet nas linhas vty (deixando apenas SSH) elimina o vetor de ataque, já que a falha depende inteiramente da negociação de opções Telnet. Isso não corrige o bug subjacente no código CMP, mas remove a superfície de exploração acessível remotamente. Restringir acesso às portas de gerência (Telnet/SSH) por ACL a hosts de gerência confiáveis reduz ainda mais a exposição.
O que não funciona: assumir que estar 'atrás de firewall' de borda mitiga o risco — switches de acesso costumam estar expostos a segmentos internos amplos, e o ataque só precisa de alcance à porta 23 do equipamento, não à internet.
Cómo detectar
Em nível de rede, monitorar sessões Telnet (TCP/23) para dispositivos Cisco em busca de sequências de negociação de opções fora do padrão — especificamente suboptions Telnet contendo o marcador de opção CMP (IAC SB 0x24) com dados de tamanho anômalo ou padrões repetitivos característicos de payloads de overflow/ROP. Reloads inesperados de switches correlacionados com conexões Telnet recentes, ou sessões Telnet que resultam em prompt de privilégio 15 sem autenticação, são indicadores fortes de tentativa ou sucesso de exploração. Não existe assinatura de log nativa do IOS documentada que identifique isso de forma confiável — a detecção depende de inspeção de tráfego Telnet (IDS/IPS com regra para a suboption CMP) ou dos artefatos citados (crash/reload, sessão anômala), já que o próprio ataque ocorre antes de qualquer registro de autenticação.