CVE-2020-15415
Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.
Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.
Resumen
Falha de injeção de comandos no endpoint cgi-bin/mainfunction.cgi/cvmcfgupload dos roteadores DrayTek Vigor3900, Vigor2960 e Vigor300B, explorável sem autenticação via um campo de nome de arquivo malformado em upload multipart/form-data. Está no catálogo KEV da CISA (exploração confirmada), o que eleva a prioridade de remediação mesmo em ambientes que julgam esses equipamentos 'legado' e fora de escopo de patch.
Detalle técnico
O endpoint cvmcfgupload processa uploads de arquivo de configuração enviados por multipart/form-data. Quando o Content-Type da parte enviada é text/x-python-script, o backend trata o valor do campo filename de forma inadequada e o repassa a uma chamada de shell sem neutralizar metacaracteres — classifica-se como CWE-78 (OS Command Injection). O atacante controla integralmente o conteúdo do parâmetro filename dentro do multipart, incluindo aspas, ponto e vírgula e outros caracteres que o interpretador de shell trata como separadores de comando.
Cómo se explota
O vetor demonstrado publicamente é uma requisição POST para /cgi-bin/mainfunction.cgi/cvmcfgupload com corpo multipart/form-data, em que a parte enviada tem Content-Type: text/x-python-script e o campo filename contém uma sequência que fecha uma aspa aberta pelo processamento interno e injeta um comando adicional (ex.: encerrar a string, inserir ';', executar um binário arbitrário, reabrir a string). Não há evidência de exigência de autenticação prévia no PoC público — a requisição é enviada diretamente ao CGI, o que é coerente com o vetor CVSS AV:N/PR:N/UI:N atribuído à falha. Como o CGI normalmente roda com privilégios elevados no firmware do dispositivo, a exploração bem-sucedida resulta em execução de comando arbitrário no sistema operacional subjacente do roteador — controle total do dispositivo, incluindo tráfego que passa por ele.
Versiones
Cómo protegerse
O fornecedor corrigiu a falha na versão 1.5.1 do firmware, endereçada junto com a CVE-2020-14472 relacionada (mas distinta) na advisory DSA-2020-004, publicada em 24/06/2020. A ação recomendada é atualizar para 1.5.1 ou superior nos três modelos afetados. Onde a atualização não for viável de imediato, o paliativo real é remover a exposição do painel de gerenciamento/CGI à internet — restringir acesso ao endpoint via ACL de firewall, desabilitar administração remota e limitar acesso à interface de gerência apenas a redes de gestão confiáveis; isso reduz drasticamente a superfície mesmo sem eliminar a vulnerabilidade em si. Não há indicação de que WAF genérico neutralize com segurança esse tipo de payload em multipart/form-data sem inspeção específica de conteúdo — tratar isso como mitigação suficiente é o mito a evitar; a correção definitiva é o firmware.
Cómo detectar
Procurar em logs de acesso web/CGI requisições POST para /cgi-bin/mainfunction.cgi/cvmcfgupload cujo corpo multipart/form-data contenha, no campo filename, metacaracteres de shell (aspas simples, ponto e vírgula, crase, pipe) combinados com Content-Type: text/x-python-script na parte enviada — esse padrão é o indicador mais direto de tentativa de exploração, refletindo o PoC público conhecido. Não há assinatura oficial de detecção publicada pelo fornecedor; ambientes sem inspeção profunda de payload HTTP (DPI/WAF configurado especificamente para multipart) provavelmente não terão visibilidade dessas tentativas.