CVE-2019-16920
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
The impacted product is end-of-life and should be disconnected if still in use.
Resumo
Múltiplos roteadores D-Link legados expõem a página /apply_sec.cgi sem autenticação, permitindo injeção de comandos via o parâmetro ping_ipaddr da função PingTest, com execução como root. O CVSS 9.8 é justificado: não exige autenticação, não exige interação do usuário e o impacto é comprometimento total do dispositivo. O detalhe que a manchete não deixa claro é que todos os modelos afetados estão em fim de vida (EOL) e o fornecedor não vai corrigir — a única solução real é substituir o equipamento.
Detalhamento técnico
A falha (CWE-78, injeção de comando) está no CGI /apply_sec.cgi, que é despachado internamente pelo binário /www/cgi/ssi no firmware desses roteadores D-Link. Essa página aceita a ação ping_test, que recebe um parâmetro ping_ipaddr — presumivelmente para popular o comando ping usado no diagnóstico de rede do dispositivo. O código que monta o comando de sistema a partir desse parâmetro não trata corretamente caracteres de nova linha (newline).
O atacante controla integralmente o conteúdo de ping_ipaddr. Ao inserir um caractere de newline seguido de comandos arbitrários, tudo que vem depois da quebra de linha é executado no shell do dispositivo com privilégios de root — não há sanitização de entrada nem separação entre o valor esperado (um endereço IP) e comandos de shell.
O segundo problema, tão grave quanto o primeiro, é que /apply_sec.cgi está acessível sem qualquer autenticação. Isso elimina qualquer barreira: não é necessário ter credenciais de administrador do roteador, nem sessão válida, para atingir o endpoint vulnerável — basta acesso de rede à interface de gerência (LAN ou, em configurações expostas, WAN).
Como é explorada
O vetor é uma requisição HTTP POST para /apply_sec.cgi com a ação ping_test e o parâmetro ping_ipaddr manipulado para incluir um newline seguido do comando desejado. Não há pré-requisito de autenticação, de configuração não padrão, nem de interação da vítima com nada além do envio da requisição — o CERT/CC observa inclusive que a exploração pode ocorrer 'como resultado de visualizar uma página web especialmente criada' (CSRF-like, via navegador de alguém na mesma rede que o roteador). A complexidade técnica é baixa: a única sofisticação está em montar corretamente o payload de injeção via newline, o que já está documentado publicamente e tem PoC e template Nuclei disponíveis.
O resultado final é execução de comando arbitrário como root no dispositivo — controle total do roteador, incluindo possibilidade de alterar DNS, interceptar tráfego, pivotar para a rede interna ou incorporar o dispositivo a uma botnet.
A CVE está no catálogo KEV da CISA desde 2022-03-25, confirmando exploração ativa em campo. Dado que os modelos afetados são amplamente distribuídos e sem suporte, é um alvo recorrente de botnets IoT.
Versões
Como se proteger
Não existe patch do fornecedor. O CERT/CC declarou explicitamente que não tem conhecimento de uma solução prática para o problema nos dispositivos listados, e a CISA, no KEV, orienta que o produto está em fim de vida e deve ser desconectado se ainda estiver em uso — a ação recomendada é substituição do equipamento, não atualização de firmware.
Como paliativo real até a substituição: bloquear acesso à interface de gerência HTTP do roteador a partir de qualquer rede não confiável (desabilitar administração remota/WAN, restringir a LAN local), e onde possível, segmentar o dispositivo em uma VLAN isolada sem acesso de outros hosts à interface web. Isso reduz a superfície mas não elimina o risco caso um host da própria LAN seja comprometido ou a vítima seja induzida a acessar uma página maliciosa via CSRF enquanto conectada à rede do roteador.
Não existe mitigação via firmware alternativo oficial nem flag de configuração documentada que desative especificamente o CGI vulnerável — trocar a senha de admin do roteador não mitiga, porque o endpoint é acessível sem autenticação.
Como detectar
Em logs de servidor web do dispositivo (quando acessíveis) ou em captura de tráfego de rede, procurar por requisições HTTP POST para /apply_sec.cgi contendo o parâmetro action=ping_test com ping_ipaddr carregando caracteres de nova linha seguidos de comandos de shell — esse é o padrão de exploração documentado. O PoC do CERT/CC provoca perda de conectividade de rede por cerca de um minuto no dispositivo afetado, o que pode servir como indício indireto de teste/exploração em campo caso se observe indisponibilidade intermitente do roteador coincidindo com tráfego HTTP anômalo direcionado à interface de gerência.
Não há assinatura única confiável além do padrão de payload no parâmetro ping_ipaddr, já que o endpoint não gera logs de autenticação (não há autenticação) nem alertas nativos do dispositivo — a maior parte dos ambientes não terá visibilidade de logs desses roteadores de consumo/SMB.