Lettura in sandbox
Il JavaScript del documento, le azioni all'apertura (OpenAction), i comandi esterni (Launch) e i link non vengono eseguiti, e la finestra non ha accesso alla rete: il codice attivo viene estratto e mostrato, non lanciato.
Un PDF che ti arriva via email, che scarichi o che ti passa un cliente non è un foglio di carta: è un formato con un linguaggio di programmazione dentro. Aprirlo con Acrobat o Anteprima significa eseguirlo — il suo JavaScript parte, le azioni all'apertura vengono seguite, e il documento può contattare l'esterno e far sapere a chi l'ha confezionato che è stato aperto, quando e da quale indirizzo IP. Il modulo PDF di Probatio lo apre invece in una finestra propria e in una sandbox a più strati: il documento viene interpretato, non eseguito; la finestra non ha rete; i byte grezzi vengono analizzati in un sottoprocesso isolato dal resto del sistema, con limiti di memoria e di tempo e — su macOS — un profilo del sistema operativo che gli nega rete e scrittura fuori dalla cartella di lavoro. È un lettore sicuro per chiunque debba aprire un allegato sospetto — analista, professionista, curioso prudente — e insieme un banco di lavoro forense per esaminarlo (provenienza, codice attivo, testo nascosto, firma) e lavorarci sopra (pagine, redazione, annotazioni, timbro) senza mai toccare l'originale.
Un PDF non è un foglio di carta: è un formato con un linguaggio di programmazione dentro. Aprire un documento di cui non ti fidi è a tutti gli effetti eseguire codice di un'origine potenzialmente ostile. Probatio non si limita a «disattivare il JavaScript»: separa ciò che il documento chiede di fare da ciò che il sistema gli concede di fare, e lo fa a tre livelli indipendenti — se cade il primo, restano gli altri due.
eval disabilitato, scripting spento, nessun layer di annotazioni attive: JavaScript, /OpenAction, /Launch e i link non partono. Il codice attivo viene estratto e mostrato.
probatio-pdf-helper) con tetto di memoria, tetto di CPU e timeout. Un PDF malformato fa cadere l'helper, non Probatio, e non porta con sé la sessione di lavoro.
sandbox-exec che nega la rete, nega la scrittura fuori dalla cartella di lavoro e nega l'avvio di altri processi. Provato: un tentativo di scrittura in /etc è respinto dal kernel, non da un controllo dell'app.
Fin dove arriva, e dove no. Il confinamento imposto dal sistema operativo è attivo su macOS (profilo sandbox-exec) e su Windows (Job object con token ristretto): niente rete, niente scrittura fuori dalla cartella di lavoro, nessun processo figlio. Su ogni sistema l'helper gira comunque come processo separato con limiti di risorse, così un file malformato fa cadere l'helper e non l'app. E nessuna sandbox rende innocuo un file: la sanificazione base toglie JavaScript, azioni automatiche e allegati, ma un exploit annidato in uno stream malformato o in un font resterebbe. Per aggredire proprio quel vettore Probatio offre la bonifica profonda: ricostruisce il documento, scarta i programmi font incorporati (rimappando i font su uno standard) e neutralizza le immagini a codec pericoloso — JBIG2 e JPX, la classe dell'attacco FORCEDENTRY. Sia la sanificazione sia la bonifica sono sempre una tua scelta, dichiarata, al momento del salvataggio — e quando il PDF è una prova da versare in atti, tieni presente che ripulirlo lo altera: la copia bonificata non è più l'originale.
Il JavaScript del documento, le azioni all'apertura (OpenAction), i comandi esterni (Launch) e i link non vengono eseguiti, e la finestra non ha accesso alla rete: il codice attivo viene estratto e mostrato, non lanciato.
I byte del PDF sono letti in un sottoprocesso a parte, con tetto di memoria (1,5 GiB), tetto di CPU (30 s) e timeout: un file malformato o malevolo può far cadere l'helper, non l'app. Su macOS un profilo del sistema operativo gli nega rete, scrittura fuori dalla cartella di lavoro e avvio di altri processi.
Programma che ha generato il PDF, date di creazione e modifica, file di origine (xmpMM:DerivedFrom), sistema operativo dedotto dalla stringa del generatore — dichiarato come inferenza, perché nessun PDF registra il proprio sistema — e pacchetto XMP completo.
Tutti gli oggetti del documento vengono attraversati alla ricerca dei dizionari di azione: JavaScript, Launch, URI, SubmitForm. Il codice si legge per esteso nella colonna Ispezione. Cercarlo solo nelle «posizioni note» ne lascerebbe sempre fuori una.
Testo bianco su bianco, in modalità di render invisibile o in corpo microscopico: invisibile sulla pagina, ma letto da chi estrae il testo — perizie automatiche, indicizzazione e modelli di intelligenza artificiale. Probatio lo elenca per pagina e ci porta sopra con un clic.
Zoom, ricerca nel testo con evidenziazione dei riscontri, miniature delle pagine, vista a pagina singola o doppia e doppia visualizzazione (divisione verticale od orizzontale) per confrontare due pagine lontane dello stesso documento.
Elimina, ruota, riordina e inserisci pagine da un altro PDF, trascinandolo nel punto scelto fra le miniature: le pagine importate arrivano complete, con gli attributi ereditati dal documento d'origine. Si lavora sempre su una copia di sessione, con annulla e ripristina a fotografie complete del documento.
L'oscuramento rimuove i glifi dal file, non ci mette sopra un rettangolo nero: il testo redatto non è più estraibile con un copia-incolla né con pdftotext. Vanno via anche le immagini e le annotazioni nell'area; il documento viene riserializzato, così la revisione precedente non resta dentro il file.
Evidenziazioni in cinque colori, note (post-it) e frecce. Sono annotazioni PDF vere, ciascuna con il proprio flusso d'aspetto: le legge Acrobat, le legge Anteprima, e si tolgono senza toccare il contenuto.
Applica un'immagine (es. una firma PNG con trasparenza) e ridimensionala a proporzioni bloccate. Le immagini incorporate stanno in una libreria con miniature e lightbox, ingrandibili 1:1 alla loro risoluzione reale: i JPEG si salvano bit-identici al flusso incorporato, così l'hash dell'immagine estratta torna.
Un badge segnala se il PDF è firmato; alla prima modifica avverte che la firma verrà invalidata. Il dettaglio (validità, integrità, firmatario, eIDAS/QSCD, catena, marche, OCSP) si verifica sul file originale, non sulla copia di lavoro: verificare la copia racconterebbe una bugia sul documento ricevuto.
All'apertura una scansione YARA avvisa se c'è codice noto come sospetto — e se le regole non si scaricano lo dice: «non ho potuto guardare» non è «pulito». Al salvataggio di un documento con codice attivo scegli tu fra copia sanificata e file originale così com'è.