
Note di ricerca che documentano CVE-2024-30350, una lettura fuori dai limiti nella gestione delle annotazioni di Foxit PDF Reader, che coprono triage, divulgazione e linee guida difensive.
CVE-2024-30350 è una vulnerabilità di divulgazione di informazioni da lettura fuori dai limiti (out-of-bounds read) in Foxit PDF Reader. Il problema è stato pubblicato da Trend Micro Zero Day Initiative come ZDI-24-333 e tracciato prima della divulgazione come ZDI-CAN-22708.
L'avviso pubblico descrive l'area vulnerabile come la gestione degli oggetti Annotation da parte di Foxit PDF Reader. Un PDF appositamente creato può indurre l'applicazione a leggere oltre la fine di un buffer allocato. Lo sfruttamento richiede l'interazione dell'utente, come l'apertura di un file PDF malevolo o la visita a una pagina che ne distribuisca uno. L'impatto immediato è la divulgazione di informazioni sensibili, e l'avviso osserva che la condizione può essere utile se concatenata con altre vulnerabilità.
Questo repository documenta la vulnerabilità, il flusso di lavoro di ricerca, il processo di triage e le note di divulgazione. Non include intenzionalmente un proof of concept weaponizzato.
| Campo | Valore |
|---|
| CVE | CVE-2024-30350 |
| Avviso ZDI | ZDI-24-333 |
| Caso ZDI | ZDI-CAN-22708 |
| Prodotto | Foxit PDF Reader |
| Fornitore | Foxit |
| Componente | Gestione degli oggetti Annotation |
| Debolezza | Lettura fuori dai limiti |
| CWE | CWE-125 |
| Impatto | Divulgazione di informazioni |
| CVSS | 3.3 |
| Vettore | CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N |
| Data di segnalazione al fornitore | 2023-12-20 |
| Data dell'avviso pubblico | 2024-03-28 |
| Data di aggiornamento dell'avviso | 2024-07-01 |
| Risolto da | Aggiornamenti di sicurezza di Foxit PDF Reader 2024.1 e Foxit PDF Editor 2024.1 |
Secondo il bollettino di sicurezza di Foxit del 5 marzo 2024, le versioni Windows interessate includevano Foxit PDF Reader 2023.3.0.23028 e precedenti, e diverse linee di rilascio di Foxit PDF Editor fino alle versioni elencate nel bollettino.
Le annotazioni PDF sono rappresentate come dizionari collegati alle pagine tramite l'array /Annots della pagina. Un lettore deve analizzare il dizionario dell'annotazione, risolvere valori diretti e indiretti, normalizzare i dati di geometria e aspetto, e collegare il risultato ai percorsi di rendering, selezione, modifica, JavaScript e accessibilità.
La classe di bug per CVE-2024-30350 è un fallimento di validazione dei limiti in quella pipeline di analisi delle annotazioni. Un oggetto annotazione malformato potrebbe indurre Foxit PDF Reader a fidarsi di una lunghezza derivata o di una forma dell'oggetto che non corrispondeva più al buffer sottostante. Nel percorso vulnerabile, il programma potrebbe leggere oltre il limite dell'oggetto allocato. La modalità di errore osservata era una violazione di accesso durante la gestione delle annotazioni; con la memoria disposta diversamente, lo stesso primitivo potrebbe esporre memoria adiacente del processo.
Il problema non era una vulnerabilità di rete attivabile con un clic. L'attaccante doveva convincere l'utente target ad aprire un documento appositamente creato o a raggiungere una pagina di distribuzione che causasse l'apertura del documento. Ciò si riflette nel requisito di interazione utente del CVSS.
L'indagine originale è iniziata come un audit mirato di famiglie complesse di oggetti PDF, piuttosto che come un'esecuzione generale di fuzzing sul formato di file. La gestione delle annotazioni è stata scelta perché le annotazioni si trovano in una densa intersezione di logica del parser, comportamento dell'interfaccia utente, esposizione a JavaScript e aggiornamenti incrementali del documento.
Il corpus iniziale mescolava documenti ordinari con pagine sintetiche contenenti dizionari di annotazioni ad alta variabilità. Il generatore variava lunghezze di array, indirezione degli oggetti, valori null, tipi primitivi inattesi, riferimenti ricorsivi e combinazioni di stream di aspetto. I campioni più utili non erano completamente casuali. Erano sufficientemente consapevoli della grammatica da raggiungere il codice di normalizzazione delle annotazioni, ma comunque abbastanza malformati da testare le assunzioni nel parser nativo.
Il primo segnale è stato un crash che si riproduceva solo quando una pagina conteneva una specifica struttura di annotazione malformata e l'annotazione veniva forzata attraverso il percorso di gestione interattiva. L'apertura del documento era sufficiente per analizzare la pagina, ma la riproduzione affidabile migliorava quando la vista veniva aggiornata, la pagina veniva ingrandita, o l'albero delle annotazioni veniva toccato dal codice di selezione o rendering.
Il debug ha ristretto il problema a una lettura oltre la fine di un'allocazione heap durante l'elaborazione dell'oggetto annotazione. Il crash non assomigliava a un dereferenziamento null. L'istruzione fallita consumava memoria adiacente a un buffer correlato all'annotazione, e le relazioni di dimensione nel campione minimizzato suggerivano una discrepanza tra un conteggio logico analizzato e lo spazio di archiviazione reale disponibile per quell'oggetto.
Il campione è stato minimizzato rimuovendo ripetutamente oggetti PDF non correlati, risorse di pagina, font, metadati e stream fino a quando sono rimasti solo l'albero delle pagine, la pagina target e la struttura dell'annotazione. Il file ridotto preservava la stessa firma di crash, il che lo rendeva adatto alla divulgazione coordinata.
Dopo il triage, la scoperta è stata inviata tramite Zero Day Initiative. La data di segnalazione al fornitore nell'avviso pubblico è 2023-12-20. L'avviso coordinato è stato pubblicato il 2024-03-28, e Foxit ha risolto il problema nella linea di aggiornamento 2024.1.
L'impatto diretto è la divulgazione di memoria dal processo di Foxit PDF Reader. Isolatamente, ciò di solito significa un impatto di riservatezza limitato. In una catena di exploit più completa, tuttavia, una lettura fuori dai limiti può essere preziosa per far trapelare contenuti dell'heap, puntatori a oggetti, layout di allocazione o altro stato del processo necessario per rendere affidabile una vulnerabilità separata di corruzione della memoria.
Questo spiega il basso punteggio CVSS autonomo pur rendendo comunque il problema significativo per il rafforzamento delle catene di exploit.
Gli utenti dovrebbero aggiornare Foxit PDF Reader e Foxit PDF Editor alle versioni corrette. Le organizzazioni che gestiscono PDF non attendibili dovrebbero anche mantenere abilitati Protected View, Safe Reading Mode, i controlli di reputazione dei file, il filtraggio degli allegati e le mitigazioni degli exploit a livello di endpoint.
Per gli sviluppatori di parser, la lezione principale è che i dizionari delle annotazioni dovrebbero essere trattati come input strutturato non attendibile anche quando il PDF circostante è sintatticamente valido. Lunghezze derivate, array normalizzati, oggetti indiretti risolti e rappresentazioni di oggetti in cache dovrebbero essere validati a ogni confine tra codice di parser, renderer, scripting e interfaccia utente.
| Percorso | Scopo |
|---|---|
README.md | Panoramica principale della vulnerabilità |
docs/discovery-process.md | Narrazione end-to-end della ricerca |
docs/advisory-notes.md | Fatti e riferimenti dell'avviso pubblico |
docs/triage-checklist.md | Checklist generale utilizzata per il triage dei crash dei lettori PDF |