
CVE-2024-4367
Questo progetto dimostra e analizza CVE-2024-4367, una vulnerabilità ad alta gravità nella libreria PDF.js di Mozilla che permette l'esecuzione arbitraria di JavaScript attraverso un controllo inadeguato dei tipi nel codice di gestione dei font. La nostra ricerca mostra come un PDF creato ad arte possa eseguire JavaScript in contesti come le applicazioni Electron, potenzialmente escalando fino all'esecuzione di codice remoto.
🔗 Repository GitHub: Hacking-pdf.js-vulnerability
fontMatrix non sanificato nei font incorporati.ex1.pdf e ex-gist.pdf mostrano avvisi o esecuzione di script remoti.src/components/ReactPdfViewer.tsx – Visualizzatore React costruito con react-pdf 5.7.2 (include pdfjs-dist vulnerabile 2.16.105)ex1.pdf – PDF malevolo che attiva un avvisoex-gist.pdf – PDF malevolo che recupera ed esegue JS remotoCVE-2024-4367_Report_Hacking_Project.pdf – Report tecnico completo e analisi dell'exploitGli elementi dell'array fontMatrix di PDF.js non erano validati correttamente—accettando stringhe iniettate direttamente nel JavaScript compilato con new Function(...). Ciò consente agli aggressori di creare dati di font malevoli, causando l'esecuzione di codice arbitrario quando sono permesse operazioni simili a eval.
Esempio di percorso di codice vulnerabile:
fontMatrix = ["alert('XSS')", 0, 0, 1, 0, 0]; // Payload iniettato
// Risulta in una funzione compilata come:
function drawGlyph() {
transform("alert('XSS')", 0, 0, 1, 0, 0); // Esecuzione non sicura
}
Per mitigare questa vulnerabilità e proteggere le applicazioni che incorporano PDF.js (o librerie che lo includono), adottare le seguenti misure:
isEvalSupported = false in PDF.js per disattivare la compilazione dinamica di Function.typeof su tutti i valori forniti dall'utente (es. l'array fontMatrix).package.json/yarn.lock e applicare automaticamente le patch di sicurezza.Aggiungere una Content-Security-Policy rigorosa:
Content-Security-Policy: script-src 'self'; object-src 'none';