CVE-2020-25506
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply updates per vendor instructions.
Summary
Falha de command injection no CGI de gerenciamento do NAS D-Link DNS-320 (revisão Ax), que permite executar comandos arbitrários no sistema operacional do dispositivo sem autenticação prévia demonstrada na PoC pública. É grave não apenas pelo CVSS 9.8, mas porque o produto está em End-of-Life: a D-Link confirmou a vulnerabilidade e não vai lançar correção — a orientação oficial é aposentar o hardware.
Technical detail
A falha (CWE-78) está no binário system_mgr.cgi, especificamente na função cgi_ntp_time, responsável por configurar o servidor NTP do NAS. O valor do parâmetro f_ntp_server é lido via cgiFormString (limite de 64 bytes) e concatenado diretamente numa string de comando no formato 'sntp -r %s > /dev/null', que é passada para a função system() sem sanitização de metacaracteres de shell.
Como a concatenação é literal, qualquer caractere de shell (backtick, $(), ;, |, &&) presente em f_ntp_server é interpretado pelo interpretador de comandos do sistema embarcado, e não apenas como argumento do sntp. O atacante controla integralmente o conteúdo desse parâmetro via requisição HTTP ao CGI.
A função é acionada quando o parâmetro cmd da requisição ao system_mgr.cgi tem o valor cgi_ntp_time — isso foi identificado por engenharia reversa do binário (IDA) cruzando referências a essa string, conforme documentado pelo pesquisador que reportou a falha (Chaitin Security Research Lab).
How it’s exploited
O vetor é uma requisição HTTP para o endpoint /cgi-bin/system_mgr.cgi com os parâmetros cmd=cgi_ntp_time e f_ntp_server contendo a injeção de comando (a PoC pública usa notação com backticks). O vetor CVSS oficial (AV:N/AC:L/PR:N/UI:N) indica exploração remota, sem interação do usuário e sem privilégios — ou seja, na configuração testada pelo pesquisador não foi necessária autenticação prévia para acionar a função vulnerável, o que explica a criticidade máxima do score.
A exploração é trivial: não exige encadeamento de outras falhas, apenas acesso de rede à interface de gerenciamento do CGI, que em muitos casos está exposta diretamente na internet por configuração do usuário (NAS domésticos com port-forwarding ou UPnP habilitado). O resultado é execução de comando arbitrário com os privilégios do processo do CGI, tipicamente root em dispositivos embarcados desse tipo, permitindo acesso total ao sistema de arquivos e aos dados armazenados no NAS.
A CVE está no catálogo KEV da CISA desde novembro de 2021, confirmando exploração ativa no mundo real, não apenas prova de conceito acadêmica. Existe template Nuclei público para varredura automatizada, o que reduz a barreira de exploração em massa contra dispositivos expostos.
Versions
How to protect
Não existe correção. O advisory oficial da D-Link (SAP10183) declara o DNS-320 Revisão Ax como End-of-Service-Life desde 2018 nos EUA, sem desenvolvimento de firmware ativo, e recomenda diretamente a substituição do equipamento. A última versão de firmware listada (v2.06b01Beta) permanece vulnerável.
Como paliativo, a D-Link recomenda desabilitar a conexão do NAS com a internet — ou seja, remover completamente a exposição do dispositivo a redes não confiáveis. Na prática isso significa isolar o DNS-320 numa VLAN sem rota para a internet, bloquear qualquer port-forward ou UPnP que exponha a porta HTTP/HTTPS de gerenciamento, e restringir acesso à interface administrativa apenas a hosts de gerência via firewall. Trocar senha padrão e habilitar criptografia Wi-Fi, como sugere o vendor, não mitiga esta falha específica — a vulnerabilidade está no CGI de administração e é explorável independente da força da senha se o endpoint estiver acessível.
Não há workaround de configuração no próprio firmware (flag, patch de configuração) documentado pelo fornecedor além do isolamento de rede. Dado o EoL, a única mitigação definitiva é a substituição do hardware.
How to detect
Procurar em logs de acesso web (do próprio NAS ou de proxy/firewall à frente dele) por requisições a /cgi-bin/system_mgr.cgi contendo cmd=cgi_ntp_time combinado com o parâmetro f_ntp_server carregando metacaracteres de shell (backtick, $(), ;, |, &&, >, <) — isso é o indicador mais direto de tentativa de exploração, já que uma configuração legítima de NTP não contém esses caracteres. A existência de template Nuclei público também significa que varreduras automatizadas de internet scanners contra esse endpoint são esperadas; tráfego repetitivo e não autenticado ao CGI de múltiplas origens é sinal de scanning oportunista, não necessariamente ataque direcionado.