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 un limite di tempo e — su macOS — anche limiti di memoria e di CPU e 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 un timeout e, su macOS, con tetto di memoria e di CPU. 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 completo imposto dal sistema operativo è attivo su macOS (profilo sandbox-exec): niente rete, niente scrittura fuori dalla cartella di lavoro, nessun processo figlio, limiti di memoria e di CPU. Su Windows è parziale: l'helper gira in un Job object del sistema operativo, con memoria e CPU limitate e senza poter avviare altri processi, ma rete e scrittura su disco non sono ancora negate. 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 un timeout, un tetto di memoria (1,5 GiB) e di CPU (30 s per ogni processore che può usare, fino a 16): 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; su Windows gira in un Job object che limita memoria e CPU e gli impedisce di avviare 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'è.
Le pagine sono disegnate dallo stesso motore in sandbox della vista e passate al dialogo di stampa del sistema: il PDF non viene consegnato a un altro programma, quindi stampare un documento sospetto non significa aprirlo con Acrobat o Anteprima. Si stampa ciò che si vede, modifiche e redazioni comprese.
Il testo del PDF si seleziona e si copia come in un lettore normale, senza che il documento esegua nulla.
Un PDF salvato più volte conserva le versioni precedenti: Probatio le elenca con data, programma e firme che coprono ciascuna, le apre come file a sé e le confronta con l'attuale, pagina per pagina, con la mappa delle differenze. È il modo di vedere che cosa è cambiato dopo una firma.
Livelli accesi e spenti (anche quelli nascosti all'apertura), file allegati con impronta, campi del modulo esportabili in CSV e JSON, indice e collegamenti (mai aperti), caratteri e immagini incorporati con i metadati EXIF rimasti nei JPEG.
Le pagine scorrono una sotto l'altra, e la pagina più visibile è quella su cui lavorano gli strumenti; «Pagina per pagina» resta nel menu Layout. Miniature e colonna Ispezione si chiudono e la scelta viene ricordata; la barra degli strumenti sta su due righe fisse, il documento sopra e gli strumenti sotto.
I PDF di Crystal Reports e simili, con le tabelle interne scritte fuori standard, si aprono: Probatio corregge la lettura in memoria, senza toccare il file.