Una vulnerabilità di Ghostscript mette a rischio i caricamenti PDF
Una vulnerabilità di Ghostscript corretta nella versione 10.08.0 può consentire a un PDF appositamente creato di attivare l’esecuzione di codice in alcune configurazioni server che trasformano i PDF caricati in anteprime o thumbnail. Artifex ha rilasciato la build Ghostscript corretta l’8 settembre 2026, dopo che Wordfence Threat Intelligence, usando Wordfence Argus, aveva segnalato la flaw sedici giorni prima. Il problema è tracciato come CVE-2026-39919, con un punteggio Common Vulnerability Scoring System di 9,8 su 10 per CVSS 3.1 e 9,3 per CVSS 4.0.
Ghostscript è un document engine, cioè un software che legge file PDF e PostScript e converte le pagine in immagini per anteprima, stampa o visualizzazione. Molti proprietari di siti non lo installano mai direttamente e potrebbero non sapere che è presente, perché altri strumenti lo chiamano in background. In WordPress, il core è in grado dalla versione 4.7 di creare un’immagine dalla prima pagina di un PDF quando vengono generati i metadati dell’allegato. Sui server che usano l’estensione PHP Imagick, WordPress chiama ImageMagick, e ImageMagick avvia poi Ghostscript. La chain è WordPress, Imagick, ImageMagick, Ghostscript.
Wordfence ha riferito che il bug non si trova in WordPress né nel form plugin usato per i test. WordPress e il plugin erano soltanto la route attraverso cui il PDF raggiungeva Ghostscript. Un form che si limita a memorizzare un file caricato senza richiedere un’anteprima non avvia Ghostscript. Un form che aggiunge il file alla Media Library può avviarlo quando WordPress crea un’anteprima, se il software richiesto e le policy settings sono presenti. WordPress standard non consente ai visitatori anonimi di caricare PDF nella Media Library, quindi un container vulnerabile da solo non basta per un attacco anonimo.
La flaw è un heap buffer overflow, un errore di memoria in cui un programma scrive più dati in un’area riservata di quanti quell’area possa contenerne. Wordfence afferma che il percorso vulnerabile è il percorso di decodifica JPEG 2000 di Ghostscript quando è presente il decoder OpenJPEG. Le immagini JPEG 2000 sono composte da componenti, come luminosità o trasparenza, e questi componenti possono avere risoluzioni diverse e usare meno di otto bit per sample. Nel minimal public test case descritto da Wordfence, una riga contiene 1.024 sample a due bit. Ghostscript riserva correttamente 256 byte, ma il loop che riempie la riga scrive 1.024 byte, un byte per sample, invece di comprimere quattro sample in ciascun byte.
Questo overflow scrive 768 byte extra per riga oltre il buffer. Wordfence afferma che quei byte provengono da image sample scelti dal creatore del file, con vincoli imposti dal formato immagine e dal packing loop di Ghostscript, e possono corrompere dati di memory management che Ghostscript usa in seguito. Il PDF di test pubblico era di 1.029 byte e differiva da un file di controllo innocuo per un solo byte in un campo che descriveva la risoluzione del componente di trasparenza. Entrambi i file erano PDF validi contenenti immagini JPEG 2000 valide, quindi controllare solo le estensioni dei file, i MIME type o la struttura di base del file non identificherebbe il caso pericoloso.
Wordfence afferma di aver trasformato la corruzione della memoria in remote code execution non autenticata su un deployment di test WordPress costruito appositamente. Remote code execution significa che un attaccante può far eseguire codice al server. Non autenticata significa che non è necessario alcun login. Il codice viene eseguito con i permessi dell’account che elabora il PDF, non automaticamente come l’account più potente del sistema. Wordfence ha anche scoperto che la sandbox -dSAFER di Ghostscript, una modalità pensata per limitare ciò che i documenti possono fare tramite funzionalità supportate, non impediva questo bug di corruzione della memoria.
Il rischio pratico è serio ma non identico per ogni sito. Wordfence ha creato due proof-of-concept exploit per la propria build di laboratorio, poi li ha eseguiti 10.240 volte su altri dieci ambienti di pacchetti Linux su sistemi Intel e AMD a 64 bit: Debian, Ubuntu, Fedora, AlmaLinux, Alpine e il container WordPress ufficiale. Nessuno dei due exploit ha funzionato al di fuori della build corrispondente, mentre entrambi hanno continuato a funzionare su quella build. Quando Wordfence ha mantenuto invariato l’eseguibile Ghostscript ma ha cambiato font, impostazioni di lingua, configurazione dei font e una core system library, lo stesso exploit è riuscito comunque in tutte e quattro le configurazioni, anche se non a ogni tentativo.
Ciò significa che non si tratta di un singolo PDF che compromette automaticamente ogni server vulnerabile. Significa anche che lo sfruttamento specifico per build non è innocuo. Wordfence ha indicato la ricerca HEIF Heist di Hacktron come avvertimento rilevante: Hacktron ha usato lo sviluppo di exploit assistito dall’AI per trasformare un heap overflow in libheif in esecuzione di codice contro il forum Discourse di OpenAI, e ha riferito code execution o esposizione di dati in altri servizi e prodotti, incluse applicazioni Next.js. Hacktron ha riferito che adattare un exploit a ogni nuova azienda di solito richiedeva uno o due giorni, e alcuni tentativi hanno richiesto migliaia di immagini caricate. Wordfence ha dichiarato di non aver trovato prove pubbliche che CVE-2026-39919 sia oggi sfruttata.
Le versioni upstream Ghostscript interessate sono dalla 9.21 alla 10.07.1 dove è presente il percorso del decoder OpenJPEG. Il record CVE indica l’intervallo interessato come precedente alla 10.08.0, e Wordfence afferma che il blocco vulnerabile di sub-byte sampling è stato introdotto nella 9.21. La correzione di Artifex in Ghostscript 10.08.0 modifica il loop in modo che conti correttamente i sample e rifiuti le profondità di bit che questo code path non supporta. Gli amministratori non dovrebbero affidarsi solo a `gs --version`, perché le distribuzioni Linux possono backportare la correzione in numeri di versione più vecchi. Ubuntu 22.04, per esempio, ha corretto il problema nel pacchetto 9.55.0~dfsg1-0ubuntu5.14, che riporta ancora Ghostscript 9.55.0.
Wordfence ha testato dieci ambienti di pacchetti il 15 settembre e li ha trovati tutti vulnerabili in quel momento: l’immagine Docker WordPress ufficiale con 10.05.1~dfsg-1+deb13u1, Debian 13 trixie con lo stesso pacchetto, Debian 12 bookworm con 10.0.0~dfsg-11+deb12u8, Ubuntu 22.04 LTS con 9.55.0~dfsg1-0ubuntu5.13, Ubuntu 24.04 LTS con 10.02.1~dfsg1-0ubuntu7.8, Ubuntu 26.04 con 10.06.0~dfsg-3ubuntu1, Fedora 44 con 10.06.0-2.fc44, AlmaLinux 10 con 10.02.1-16.el10_0, Alpine 3.22 con 10.05.1-r0 e Alpine 3.23 con 10.06.0-r0. Il PDF di test ha mandato in crash Ghostscript su nove dei dieci sistemi. Debian 12 ha renderizzato quel file senza crash, ma 28 di 40 varianti con dimensioni dell’immagine modificate lo hanno mandato in crash.
Dopo quei test, Wordfence afferma che pacchetti corretti sono stati distribuiti per Ubuntu 22.04, 24.04 e 26.04, Debian 13 tramite il suo security repository e AlmaLinux 10 il 2 ottobre. Debian 12 risultava ancora elencata come vulnerabile. Al 9 ottobre, le pagine ufficiali dei pacchetti per Fedora 44, Alpine 3.22 e Alpine 3.23 elencavano ancora le revisioni più vecchie della tabella di test. I siti in container richiedono particolare attenzione: Wordfence afferma che lo snapshot dell’immagine Docker WordPress ufficiale testato aveva Ghostscript 10.05.1, l’estensione Imagick e un percorso di anteprima PDF funzionante. Gli utenti dovrebbero scaricare una base image aggiornata, ricostruire senza affidarsi a un layer in cache e ridistribuire.
Per i proprietari di siti, la domanda chiave è se visitatori o utenti con pochi privilegi possano caricare PDF che vengono poi convertiti in anteprime.