← back
CVE-2020-15415criticalunder attackCWE-78

CVE-2020-15415

95Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 85%
from disclosure to weapon
Published on NVDJun 30
CISA KEV+1553d
exploitation probability
85%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
Action required by CISAfederal deadline: 2024-10-21

Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
DrayTek Vigor3900, Vigor2960 e Vigor300B em versões de firmware anteriores à 1.5.1.
Fixed in
Firmware 1.5.1 (e posteriores), conforme DSA-2020-004 de 24/06/2020.

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
On DrayTek Vigor3900, Vigor2960, and Vigor300B devices before 1.5.1, cgi-bin/mainfunction.cgi/cvmcfgupload allows remote command execution via shell metacharacters in a filename when the text/x-python-script content type is used, a different issue than CVE-2020-14472.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
n/a · n/a