CVE-2019-17621
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply updates per vendor instructions or discontinue use of the product if updates are unavailable.
Summary
Falha de injeção de comando no endpoint UPnP /gena.cgi do roteador D-Link DIR-859 (firmware 1.05 e 1.06B01 Beta01), que permite a um atacante não autenticado executar comandos arbitrários como root a partir de uma requisição HTTP SUBSCRIBE manipulada. O CVSS de 9.8 reflete o impacto total (RCE root, sem autenticação), mas o próprio fornecedor destaca que a exploração exige acesso à rede local (LAN-side) — não é uma falha exposta diretamente à internet por padrão.
Technical detail
O serviço UPnP do DIR-859 implementa GENA (General Event Notification Architecture) através do CGI /gena.cgi, responsável por processar assinaturas de eventos UPnP via método HTTP SUBSCRIBE. A falha é uma injeção de comando de sistema operacional (CWE-78): dados de um campo da requisição SUBSCRIBE — controlado pelo atacante — são passados sem sanitização adequada para uma chamada de sistema no binário/script que trata a assinatura, permitindo a concatenação de comandos shell arbitrários.
Como o serviço UPnP nesses roteadores roda com privilégios de root (comum em firmware embarcado baseado em Linux), qualquer comando injetado é executado com privilégio máximo no dispositivo, comprometendo integralmente o roteador.
A vulnerabilidade foi descoberta e reportada por Miguel Mendez Z. (s1kr10s) e Pablo Pollanco (secenv), do centro de pesquisa da Telefónica Chile, que também identificaram falhas correlatas no mesmo firmware: CVE-2019-20213 (divulgação de informação) e CVE-2019-20215/20216/20217 (RCE via interpretador ssdpcgi() do MSEARCH UPnP), estas últimas afetando também outros modelos D-Link (DIR-818Lx, DIR-822, DIR-823, DIR-865L, DIR-868L, DIR-869, DIR-880L, DIR-885L, DIR-890L, DIR-895L).
How it’s exploited
O vetor é uma requisição HTTP SUBSCRIBE especialmente construída, enviada ao serviço UPnP do dispositivo (endpoint /gena.cgi). Não há autenticação envolvida — o serviço UPnP por design atende requisições sem credenciais dentro da rede local. O pré-requisito real, e o ponto mais importante da página, é que o atacante precisa estar na LAN do roteador (ou alcançar a interface onde o UPnP escuta): isso pode ocorrer por acesso físico à rede Wi-Fi/cabeada, comprometimento prévio de outro dispositivo na mesma rede, um convidado malicioso, ou técnicas como DNS rebinding via navegador de uma vítima na LAN acessando o IP interno do roteador. Isso não é, por padrão, uma falha explorável diretamente pela internet.
A complexidade técnica de exploração é baixa: existem PoC pública (Packetstorm, writeups do s1kr10s no Medium) e módulo Metasploit disponível, o que reduz a exploração a um processo automatizável para quem já tenha o pré-requisito de acesso à rede local. O resultado final é execução de comando como root, ou seja, controle total do roteador — possibilitando pivotagem para outros hosts da LAN, interceptação de tráfego, alteração de DNS/configuração, ou persistência via firmware malicioso.
A CVE está no catálogo KEV da CISA (adicionada em 29/06/2023, prazo de correção 20/07/2023), confirmando exploração ativa observada, embora não haja indicação de uso em campanhas de ransomware conhecidas.
Versions
How to protect
O fornecedor publicou correção via atualização de firmware, mas o processo exige duas etapas sequenciais no DIR-859 Rev. Ax: primeiro aplicar DIR859_FW107b02beta01_20190125_j1o9_middle.bin, depois DIR859_FW107b03_jbli_beta.bin, chegando à versão final v1.07b03_beta. Aplicar apenas uma das duas atualizações não fecha completamente a vulnerabilidade.
Se a atualização não for viável — o DIR-859 já está listado como produto legacy/EOL nos boletins da D-Link, e as correções vieram como firmware beta pós-EOL —, o paliativo real é desabilitar o serviço UPnP no dispositivo, o que elimina a superfície vulnerável mas também remove funcionalidades que dependem de UPnP (encaminhamento automático de porta para jogos, VoIP, etc.). Segmentar a rede de forma que dispositivos não confiáveis (IoT, convidados) não compartilhem a mesma LAN do roteador administrativo reduz a exposição, mas não elimina o risco de um host já comprometido na mesma rede.
O que não funciona: expor ou não expor a interface WAN é irrelevante para essa CVE específica, já que a falha é LAN-side por natureza — a mitigação de 'não expor UPnP à internet' (boa prática geral) não resolve este vetor, que já assume atacante interno à rede.
How to detect
Não há indicação de logging confiável nesse roteador para requisições HTTP SUBSCRIBE anômalas dirigidas a /gena.cgi — dispositivos consumer como o DIR-859 tipicamente não mantêm logs de acesso ao serviço UPnP acessíveis ao usuário. Em ambientes onde é possível capturar tráfego LAN (span port, IDS interno), o indicador é uma requisição HTTP com método SUBSCRIBE direcionada à porta do serviço UPnP do dispositivo, contendo caracteres de injeção de shell (como `;`, `|`, `` ` ``, `$()`) em campos de cabeçalho, especialmente no campo Callback típico de assinaturas GENA.