← Ultimi articoli
💻 computer science

From Documentation to Zero-day Vulnerabilities: LLM-Driven Fuzzing of JavaScript Engines in PDF Readers

Questo articolo introduce PDFuzzer, un nuovo fuzzer guidato da LLM che sfrutta i grandi modelli linguistici per inferire le relazioni tra le API e generare sequenze di chiamate complesse, migliorando così significativamente la copertura del codice e scoprendo 31 vulnerabilità zero-day nei principali lettori PDF rispetto agli esistenti strumenti allo stato dell'arte.

Autori originali: Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel, Giovanni Vigna

Pubblicato 2026-08-20
📖 7 min di lettura🧠 Approfondimento

Autori originali: Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel, Giovanni Vigna

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immaginate un documento digitale che non si limita a stare su uno schermo; può pensare, calcolare e reagire. Questa è la promessa del Portable Document Format, o PDF, quando è dotato di un motore JavaScript integrato. Proprio come un libro fisico potrebbe avere un vano segreto che si apre solo quando viene girata una pagina specifica, un PDF può contenere del codice che viene eseguito all'interno dell'applicazione di lettura, permettendo moduli interattivi, controllo ortografico e menu dinamici. Tuttavia, questo potere comporta un rischio. Se un hacker riesce a trarre in inganno questo motore per fargli commetmente un errore, può potenzialmente prendere il controllo del computer che legge il file, rubando dati o installando software malevolo. Per anni, i ricercatori di sicurezza hanno cercato di trovare queste trappole nascoste lanciando variazioni casuali di documenti contro i lettori PDF, sperando di vedere il programma crashare. Ma questo metodo è spesso come lanciare freccette al buio; manca le sequenze di azioni complesse e specifiche necessarie per innescare i difetti più pericolosi.

Un team di ricercatori dell'Università della California, Santa Barbara, ha sviluppato un nuovo approccio a questo problema, passando dal cieco indovinare al ragionamento intelligente. Hanno creato uno strumento chiamato PDFuzzer, che agisce meno come un lanciatore di freccette e più come uno studente che ha studiato approfonditamente il manuale di istruzioni prima di tentare un compito. Invece di fare affidamento su comandi semplici e isolati, questo sistema impara come le diverse parti del linguaggio di programmazione del motore PDF dipendano l'una dall'altra. Capisce che per eseguire un'azione specifica, un utente potrebbe dover impostare prima una condizione, o che due diversi comandi devono usare esattamente lo stesso nome per lavorare insieme. Insegnando a un computer come leggere e comprendere la complessa documentazione scritta di questi motori software, i ricercatori sono stati in grado di generare casi di test altamente sofisticati che gli strumenti precedenti semplicemente non potevano concepire.

Il cuore di questo nuovo metodo risiede nel modo in cui gestisce le "regole" del software. In passato, gli strumenti di test automatizzati spesso faticavano perché comprendevano solo connessioni di base, come un comando che passa un risultato al successivo come un testimone in una staffetta. Perdevano relazioni più sottili, come quando due comandi devono usare lo stesso valore specifico per interagire correttamente, o quando un comando imposta uno stato nascosto su cui un comando successivo fa affidamento. PDFuzzer utilizza un modello linguistico di grandi dimensioni (large language model), un tipo di intelligenza artificiale addestrata su enormi quantità di testo, per leggere i manuali ufficiali e le tracce tecniche del software. Successivamente, costruisce una mappa dettagliata di come ogni funzione si relazzi con tutte le altre funzioni. Traduce queste descrizioni scritte in rigide regole logiche, assicurando che, quando genera un test, i parametri corrispondano perfettamente. Per esempio, se un comando richiede che venga usato un nome specifico, il sistema assicura che lo stesso nome sia usato nel comando successivo che ne ha bisogno, invece di indovinare casualmente.

Per testare la loro creazione, i ricercatori hanno applicato PDFuzzer a tre dei lettori PDF più popolari utilizzati in tutto il mondo: Adobe Acrobat Reader, Foxit PDF Reader e PDF-XChange Editor. Hanno eseguito il loro strumento per settimane, confrontando le sue prestazioni con i migliori metodi esistenti utilizzati oggi dagli esperti di sicurezza. I risultati sono stati sorprendenti. Mentre i vecchi strumenti riuscivano a esplorare solo una frazione della logica interna del software, PDFuzzer è arrivato significativamente più a fondo, coprendo fino al 48% in più del codice. Più importante ancora, questa esplorazione più profonda ha portato alla scoperta di 31 vulnerabilità di sicurezza precedentemente sconosciute, note come vulnerabilità zero-day. Non si trattava di glitch minori; molte erano problemi seri che potevano consentire a un attaccante di eseguire codice arbitrario, prendendo essenzialmente il pieno controllo del computer della vittima, o di far trapelare informazioni sensibili. Al contrario, gli altri strumenti hanno trovato al massimo sei tali vulnerabilità durante lo stesso periodo.

I ricercatori non si sono fermati alla ricerca dei bug; hanno lavorato direttamente con i produttori del software per risolverli. Attraverso un processo coordinato, hanno comunicato i dettagli delle 31 vulnerabilità alle aziende responsabili dei lettori PDF. L'industria ha risposto rapidamente, confermando e correggendo 26 dei problemi, e dieci di essi hanno ricevuto identificatori di sicurezza ufficiali per avvertire gli utenti. I ricercatori hanno anche ricevuto ricompense finanziarie, note come bug bounty, per un totale di 2.450 dollari per il loro lavoro. Questo risultato evidenzia il valore pratico del loro approccio: automatizzando il compito difficile di comprendere le complesse relazioni del software, sono stati in grado di trovare e correggere pericoli che gli esperti umani e i vecchi strumenti automatizzati avevano mancato.

Una parte chiave del successo è stata il modo in cui lo strumento ha gestito la vasta quantità di informazioni nei manuali del software. La documentazione per questi motori può essere lunga centinaia di pagine, piena di dettagli tecnici difficili da analizzare automaticamente per un computer. I ricercatori hanno scoperto che chiedere semplicemente a un'intelligenza artificiale di generare casi di test da zero era lento e spesso produceva nonsense. Invece, hanno usato l'IA per agire come un traduttore, convertendo il linguaggio naturale dei manuali in regole precise e leggibili dalle macchine. Hanno suddiviso il processo in passaggi: prima, estrarre la struttura di base dei comandi; secondo, inferire i dettagli nascosti per i comoli non completamente documentati; e terzo, utilizzare un risolutore matematico per garantire che i casi di test generati soddisfacessero tutti i vincoli logici. Questo approccio ibrido, che combina il potere di ragionamento dell'intelligenza artificiale con la precisione della logica matematica, si è dimostrato molto più efficiente ed efficace rispetto al semplice affidarsi all'IA da sola.

Lo studio ha anche rivelato che le vulnerabilità più pericolose richiedevano spesso una specifica sequenza di eventi che gli strumenti precedenti non potevano replicare. Ad esempio, un difetto coinvolgeva una situazione in cui un elemento dell'interfaccia utente veniva creato e poi immediatamente eliminato, ma un comando successivo cercava di usarlo di nuovo. Per innescare questo, il caso di test doveva creare l'elemento, usarlo, eliminarlo e poi provare ad accedervi di nuovo, il tutto assicurando che i nomi e i valori usati in ogni passaggio fossero identici. Gli strumenti più vecchi, che trattavano ogni comando come un evento isolato, non potevano generare questa specifica catena di eventi. PDFuzzer, comprendendo la relazione tra i comandi, poteva costruire la sequenza esatta necessaria per esporre il difetto. Questa capacità di modellare dipendenze complesse è stata il fattore decisivo nel trovare la maggior parte delle nuove vulnerabilità.

Oltre al successo immediato con i lettori PDF, i ricercatori suggeriscono che il loro metodo potrebbe essere applicato ad altre aree della sicurezza del software dove esiste una documentazione dettagliata. Hanno testato la loro pipeline sul linguaggio di programmazione utilizzato per le macro di Microsoft Word, un ambiente diverso ma similmente complesso, e hanno scoperto che gli stessi tipi di relazioni e dipendenze esistevano anche lì. Ciò indica che la sfida di comprendere come le componenti del software interagiscono non è esclusiva dei lettori PDF, ma è un problema diffuso nella moderna informatica. La capacità di trasformare automaticamente i manuali scritti in rigorose regole di test offre una nuova strada per mettere in sicurezza il software che alimenta le nostre vite quotidiane.

In definitiva, il lavoro dimostra che il futuro della sicurezza del software potrebbe risiedere nell'insegnare ai computer a leggere e comprendere le istruzioni che scriviamo per loro. Colmando il divario tra la documentazione scritta dagli umani e il testing generato dalle macchine, i ricercatori hanno dimostrato che possiamo trovare e correggere difetti pericolosi in modo più rapido e approfondito rispetto al passato. Le 31 vulnerabilità che hanno scoperto servono da promemoria di quanta complessità rimanga nascosta nel software che usiamo ogni giorno, e di quanto più sicuri possiamo essere quando abbiamo strumenti abbastanza intelligenti da trovare le crepe prima che lo facciano i malintenzionati. Il processo non riguardava la magia o la fortuna, ma il costruire un sistema capace di ragionare sulla logica del software, assicurando che ogni caso di test fosse un tentativo significativo di rompere il sistema, piuttosto che un tentativo casuale.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →