
CVE-2024-4367
Este projeto demonstra e analisa CVE-2024-4367, uma vulnerabilidade de alta gravidade na biblioteca PDF.js da Mozilla que permite execução arbitrária de JavaScript devido à verificação inadequada de tipos no código de tratamento de fontes. Nossa pesquisa mostra como um PDF maliciosamente elaborado pode executar JavaScript em contextos como aplicativos Electron, potencialmente escalando para execução remota de código.
🔗 Repositório GitHub: Hacking-pdf.js-vulnerability
fontMatrix não sanitizada em fontes incorporadas.ex1.pdf e ex-gist.pdf mostram alertas ou execução remota de script.src/components/ReactPdfViewer.tsx – Visualizador React construído com react-pdf 5.7.2 (inclui o vulnerável pdfjs-dist 2.16.105)ex1.pdf – PDF malicioso que dispara um alertaex-gist.pdf – PDF malicioso que busca e executa JS remotoCVE-2024-4367_Report_Hacking_Project.pdf – relatório técnico completo e análise de exploitOs elementos do array fontMatrix do PDF.js foram validados inadequadamente — aceitando strings injetadas diretamente no JavaScript compilado com new Function(...). Isso permite que atacantes criem dados de fonte maliciosos, causando execução arbitrária de código quando operações do tipo eval são permitidas.
Exemplo de código vulnerável:
fontMatrix = ["alert('XSS')", 0, 0, 1, 0, 0]; // Injected payload
// Results in compiled function like:
function drawGlyph() {
transform("alert('XSS')", 0, 0, 1, 0, 0); // Unsafe execution
}
Para mitigar esta vulnerabilidade e proteger aplicações que incorporam PDF.js (ou bibliotecas que o incluem), adote as seguintes medidas:
isEvalSupported = false no PDF.js para desativar a compilação dinâmica de Function.typeof em todos os valores fornecidos pelo usuário (ex.: o array fontMatrix).package.json/yarn.lock atualizados e aplique automaticamente patches de segurança.Adicione uma Content-Security-Policy rigorosa:
Content-Security-Policy: script-src 'self'; object-src 'none';