CVE-2020-8515
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha de injeção de comandos OS (CWE-78) na interface web de administração dos roteadores/gateways DrayTek Vigor2960, Vigor3900 e Vigor300B, explorável sem autenticação via requisições ao endpoint cgi-bin/mainfunction.cgi. Um atacante remoto injeta metacaracteres de shell em parâmetro processado por esse CGI e executa comandos arbitrários como root no sistema operacional embarcado do equipamento. Está no catálogo KEV da CISA com exploração confirmada e é candidata natural a scanning em massa por expor gestão web diretamente na internet.
Detalhamento técnico
O componente vulnerável é o CGI cgi-bin/mainfunction.cgi, que centraliza várias funções administrativas da WebUI do firmware DrayTek nesses três modelos. O advisory do fornecedor não detalha o parâmetro exato nem a rotina interna comprometida — apenas confirma que o problema está na página de gerenciamento web ("Web Management Page Vulnerability"). A CISA classifica a falha como CWE-78 (OS Command Injection), consistente com a descrição pública: dados de entrada enviados a esse CGI são passados para uma chamada de shell no sistema sem sanitização adequada de metacaracteres (como ; | ` $() entre outros), permitindo que a entrada do atacante escape do contexto esperado e seja interpretada como comando pelo interpretador de shell subjacente.
O ponto crítico é que a exploração não exige autenticação prévia — a falha está exposta em rotas do CGI de gestão sem exigir sessão válida, o que a diferencia de boa parte das injeções de comando em CGIs administrativos que normalmente pedem login. Isso, combinado com o fato de esses equipamentos serem roteadores/gateways frequentemente expostos com a interface de administração acessível pela WAN, explica o vetor de ataque direto pela internet.
O processo do servidor web nesses appliances roda com privilégios de root, portanto qualquer comando injetado herda esse nível de acesso — não há camada de sandboxing ou drop de privilégios entre o CGI e o shell do sistema. Isso resulta em controle total do dispositivo: manipulação de configuração de rede, VPN, ACLs, criação de usuários administrativos e persistência.
Como é explorada
O vetor é uma requisição HTTP/HTTPS não autenticada para cgi-bin/mainfunction.cgi contendo metacaracteres de shell em um ou mais parâmetros processados por esse CGI. Não há pré-requisito de conta, sessão ou configuração não padrão além do essencial: a interface de gestão web precisa estar acessível ao atacante — o que, em roteadores DrayTek historicamente vendidos com administração remota habilitada por padrão em muitos ambientes SOHO/SMB, é comum. A complexidade de exploração é baixa (AC:L no vetor CVSS) e não exige interação do usuário.
O resultado final é execução de comando arbitrário como root no sistema operacional embarcado do dispositivo, o que na prática significa controle completo: alteração de configuração de VPN e regras de firewall/ACL, criação de contas administrativas ocultas, redirecionamento de tráfego, instalação de persistência e uso do equipamento como pivô para a rede interna ou como nó de botnet.
A CISA confirma exploração ativa (presença no catálogo KEV desde novembro de 2021) e existem PoC pública e template Nuclei documentados, o que reduz a barreira técnica para exploração em massa via scanning de internet. O próprio advisório da DrayTek registra que a empresa tomou conhecimento de uma possível exploração real em 30 de janeiro de 2020, antes mesmo da correção estar disponível.
Versões
Como se proteger
A correção definitiva é atualizar o firmware para a versão 1.5.1 ou posterior nos três modelos afetados (Vigor300B, Vigor2960, Vigor3900) — não há versões de correção diferenciadas por ramo, o fornecedor unificou a versão fixa em 1.5.1 para todos.
Se a atualização não puder ser aplicada imediatamente, o próprio fornecedor recomenda paliativos: desabilitar o acesso remoto de administração (WebUI/admin) se não for estritamente necessário; se for necessário, restringir por ACL (lista de IPs permitidos) — mas atenção, o fornecedor alerta que a ACL não se aplica a conexões SSL VPN na porta 443, então SSL VPN remoto também deve ser desabilitado temporariamente até a atualização. Habilitar logging via syslog para monitorar eventos anormais é recomendado como controle compensatório de detecção, não de prevenção.
Depois de aplicar a correção, o fornecedor recomenda validar que nenhum usuário administrativo ou perfil de acesso remoto (VPN dial-in, teleworker, LAN-to-LAN) foi adicionado indevidamente durante o período de exposição, e que nenhuma ACL foi alterada por um possível atacante — sinal de que a compromissão pode deixar rastros de persistência que sobrevivem à simples atualização de firmware. Restringir exposição da interface de gestão à WAN por si só reduz drasticamente a superfície, mas não corrige a vulnerabilidade subjacente enquanto o firmware não for atualizado.
Como detectar
Procurar em logs de acesso web (se syslog remoto estiver habilitado no dispositivo — não é padrão) requisições para cgi-bin/mainfunction.cgi contendo metacaracteres de shell (;, |, `, $(), &&, etc.) em parâmetros de query ou corpo da requisição, especialmente originadas de IPs externos sem sessão administrativa válida associada. Como o CGI é usado normalmente por várias funções legítimas da WebUI, o sinal relevante é a presença de sintaxe de shell nos valores dos parâmetros, não o acesso ao endpoint em si.
Não há garantia de rastro confiável: muitos desses equipamentos não mantêm log persistente por padrão e o próprio fornecedor recomenda habilitar syslog apenas como medida reativa pós-incidente. Na ausência de logging habilitado antes do ataque, a detecção fica limitada a indicadores indiretos no próprio dispositivo — usuários administrativos desconhecidos, ACLs alteradas ou perfis de VPN/acesso remoto criados sem registro, conforme apontado no advisório do fornecedor.