CVE-2026-25940 jsPDF PoC
Una prova di concetto per CVE-2026-25940 che dimostra come aspetto dei pulsanti radio AcroForm appositamente realizzati possa attivare JavaScript incorporato in visualizzatori PDF vulnerabili (ad es., Foxit). Il repository include un generatore basato su Node e un harness per visualizzatore browser per testare diversi percorsi di parsing.
⚠️ Utilizzare solo in ambienti isolati e non di produzione. I payload di esempio eseguono intenzionalmente JavaScript e possono invocare richieste di rete o programmi esterni. Non aprire il PDF generato con visualizzatori non attendibili su un host a cui tieni.
Contenuto del Repository
- poc.js: Genera un PDF dannoso con più opzioni di pulsanti radio e flussi di aspetto distinti per mostrare comportamenti diversi.
- viewer.html: Harness minimale per visualizzatore per generare il PoC nel browser o caricare un campione esistente, e renderizzarlo sia nativamente (iframe) che tramite PDF.js.
- package.json: Dichiara la dipendenza jsPDF per il PoC Node.
Prerequisiti
Configurazione
- Installare le dipendenze:
npm install
- (Opzionale) Servire il visualizzatore localmente per un caricamento più pulito di HTML/JS:
npx http-server .
# poi aprire http://localhost:8080/viewer.html
Generare il PDF PoC tramite Node
- Eseguire il generatore:
node poc.js
- Lo script scrive
test.pdf nella radice del progetto. Aprirlo con il visualizzatore PDF di destinazione per osservare il comportamento. Mantenere il blocco della rete se si vogliono evitare richieste in uscita.
Flusso di Lavoro del Visualizzatore Basato su Browser
- Aprire viewer.html direttamente in un browser o tramite un server locale.
- Fare clic su Genera PoC PDF per creare il documento dannoso nel browser e caricarlo sia nell'iframe (gestore nativo/browser) che nel canvas PDF.js.
- In alternativa, scegliere Carica file e selezionare un PDF generato con lo script Node.
- Osservare l'attività della console/rete per prove di esecuzione di JavaScript; alcuni visualizzatori possono sopprimere gli avvisi pur eseguendo comunque le azioni incorporate.
Note
- I payload sono ottimizzati per il comportamento di Foxit; altri visualizzatori possono mitigarli o bloccarli parzialmente.
- Se si adatta il payload, mantenere dimensioni simili per evitare di modificare gli offset degli oggetti su cui alcune catene di exploit fanno affidamento.
- Testare sempre in una VM o sandbox con egress di rete limitato.