
CVE-2024-4367
Este proyecto demuestra y analiza CVE-2024-4367, una vulnerabilidad de alta gravedad en la biblioteca PDF.js de Mozilla que permite la ejecución arbitraria de JavaScript mediante una verificación de tipos incorrecta en el código de manejo de fuentes. Nuestra investigación muestra cómo un PDF maliciosamente diseñado puede ejecutar JavaScript en contextos como aplicaciones Electron, potencialmente escalando a ejecución remota de código.
🔗 Repositorio de GitHub: Hacking-pdf.js-vulnerability
fontMatrix sin sanitizar en fuentes incrustadas.ex1.pdf y ex-gist.pdf muestran alertas o ejecución de scripts remotos.src/components/ReactPdfViewer.tsx – Visor React construido con react-pdf 5.7.2 (incluye la vulnerable pdfjs-dist 2.16.105)ex1.pdf – PDF malicioso que desencadena una alertaex-gist.pdf – PDF malicioso que obtiene y ejecuta JS remotoCVE-2024-4367_Report_Hacking_Project.pdf – informe técnico completo y análisis del exploitLos elementos del array fontMatrix de PDF.js no se validaban correctamente, aceptando cadenas inyectadas directamente en JavaScript compilado con new Function(...). Esto permite a los atacantes crear datos de fuente maliciosos, provocando la ejecución arbitraria de código cuando se permiten operaciones similares a eval.
Ejemplo de ruta de código vulnerable:
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 vulnerabilidad y proteger las aplicaciones que incorporan PDF.js (o bibliotecas que lo incluyen), adopte las siguientes medidas:
isEvalSupported = false en PDF.js para desactivar la compilación dinámica de Function.typeof en todos los valores proporcionados por el usuario (por ejemplo, el array fontMatrix).package.json/yarn.lock actualizados y aplique automáticamente parches de seguridad.Agregue una Content-Security-Policy estricta:
Content-Security-Policy: script-src 'self'; object-src 'none';