Il Trend Micro ha pubblicato l'advisory ZDI-26-360 su una vulnerabilità di esecuzione remota di codice nel viewer di documenti Atril, componente del desktop environment MATE. La criticità è doppia: il formato EPUB, spesso considerato innocuo, funge da vettore d'attacco; e la patch correttiva era stata già rilasciata su GitHub il , nove giorni prima del disclosure coordinato. Questa inversione di timeline rispetto allo standard — dove l'advisory precede o accompagna la fix — solleva questioni sulla comunicazione tra ricercatori e distribuzioni Linux che mantengono branch LTS di MATE.
- ZDI-26-360 identifica un heap-based buffer overflow nel parsing di attributi XML in file EPUB, con conseguente esecuzione remota di codice nel contesto del processo Atril.
- L'exploit richiede interazione utente: apertura di un file EPUB malevolo o visita a una pagina web che lo serva automaticamente.
- La patch, mergeata in GitHub PR #700 il 2 giugno 2026, sostituisce un loop di copia manuale byte-per-byte con la funzione
g_strndup, eliminando la condizione di overflow. - La release 1.26.4 include la correzione, distribuita esplicitamente per distro che non adottano il branch 1.28, secondo quanto dichiarato dal maintainer nel thread della pull request.
Il meccanismo: da attributo XML a buffer heap corrotto
Il difetto risiede nel parser del container EPUB di Atril. Il formato EPUB è essenzialmente un archivio ZIP che incapsula documenti XML, tra cui il file META-INF/container.xml. Questo file definisce il percorso del contentuto principale attraverso l'attributo full-path dell'elemento rootfile.
Secondo l'advisory ZDI, il codice vulnerabile copiava i dati forniti dall'utente — il contenuto dell'attributo full-path — in un buffer allocato sull'heap senza validare preventivamente la lunghezza. La citazione tecnica dell'advisory è inequivocabile: "The specific flaw exists within the parsing of XML attributes within epub files. The issue results from the lack of proper validation of the length of user-supplied data prior to copying it to a heap-based buffer."
Il risultato è un heap-based buffer overflow classico: dati eccedenti la capacità del buffer sovrascrivono metadata di allocazione adiacenti, aprendo la strada a tecniche di heap exploitation che portano all'esecuzione arbitraria di codice. L'advisory conferma che l'attacco si concretizza "nel contesto del processo corrente" — ovvero con i privilegi dell'utente che ha aperto il file.
La correzione in GitHub: g_strndup al posto della copia manuale
La pull request #700 nel repository ufficiale mate-desktop/atril documenta la correzione con precisione tecnica. Il cambiamento sostituisce il loop di copia manuale byte-per-byte con la funzione g_strndup della GLib, che accetta esplicitamente un parametro di lunghezza massima. La descrizione del commit è chiara: "Replace manual byte-by-byte copy loop with g_strndup when extracting the directory component from the epub container's full-path attribute."
Il test di regressione allegato alla PR conferma la vulnerabilità e la sua risoluzione. Un file test_longpath.epub con percorso deliberatamente lungo provoca, sulla versione non patchata, un errore malloc seguito dal crash dell'interfaccia grafica. Con la patch applicata, il viewer gestisce gracefulmente il fallimento: l'interfaccia si avvia normalmente e il documento viene rifiutato senza compromettere il processo. Questa evidenza empirica corrobora la natura del difetto e la completezza della correzione.
Il maintainer ha esplicitamente rilasciato la versione 1.26.4 per includere la patch, motivando la scelta con la necessità di coprire "alcune distro che non distribuiscono il branch 1.28". Questo dettaglio rivela una frammentazione nel canale di distribuzione che le amministrazioni di sistema devono considerare.
Perché un viewer di ebook è diventato un vettore RCE
La superficie di attacco di un document viewer tradizionale viene spesso sottovalutata nella sicurezza applicativa. Il formato EPUB, basato su XML e ZIP, introduce complessità di parsing che si sovrappone a quella dei formati più notoriamente pericolosi come PDF o Office. La differenza percettiva — un ebook è innocuo, un documento aziendale è sensibile — non corrisponde a una differenza tecnica reale nel codice di parsing.
Atril è il viewer predefinito di MATE Desktop, ambiente grafico derivato da GNOME 2 e mantenuto attivo in numerose distribuzioni Linux orientate alla leggerezza e alla retrocompatibilità. Questo profilo di utilizzo — desktop Linux in ambienti enterprise, educational o governativi che privilegiano stabilità su cicli di rilascio aggressivi — espone un parco installato significativo a rischi di supply chain documentale. Un file EPUB condiviso via email, repository interno o piattaforma di publishing accademico può attraversare filtri di sicurezza focalizzati su eseguibili e macro Office, non su archivi XML-ZIP.
L'advisory ZDI specifica due vettori di consegna: apertura diretta del file o visita a pagina web malevola. Quest'ultimo scenario implica una possibile catena di attacco via browser, dove il download automatico o il preview integrato del file EPUB innesca il parsing senza azione esplicita dell'utente su Atril. Il brief non documenta exploit in-the-wild né tecniche di distribuzione osservate.
Timeline invertita: patch prima dell'advisory, un caso non standard
La coordinazione della disclosure presenta un'anomalia rilevante per la pratica della sicurezza. La vulnerabilità è stata riportata al vendor il . La patch è stata mergeata il . L'advisory pubblico è uscito il .
In un ciclo standard di coordinated disclosure, l'advisory e la release della patch sono sincronizzati o la patch precede l'advisory di ore, non di giorni. Qui l'intervallo di nove giorni crea una finestra informativa asimmetrica: gli sviluppatori di MATE avevano la correzione, ma la comunità di sicurezza e le distribuzioni non avevano il contesto di rischio per prioritizzarla. Il record CVE-2026-52849, in stato reserved al momento della verifica, non fornisce punteggio CVSS né vettore di valutazione, lasciando senza metrica standard le valutazioni di priorità degli scanner di vulnerabilità.
Questa situazione evidenzia un limite strutturale: la disponibilità tecnica della patch non equivale alla disponibilità operativa per gli utenti finali, specialmente quando il canale di distribuzione passa attraverso maintainer di distribuzioni che applicano le loro policy di backporting e testing.
Cosa fare adesso
Le azioni prioritarie emergono dai fatti documentati nel dossier:
- Verificare la versione installata di Atril: la release 1.26.4 include la correzione, e il branch 1.28 la contiene dal merge di PR #700.
- Per amministratori di distribuzioni con branch LTS di MATE: valutare il backport della patch specifica di PR #700, dato che il maintainer ha esplicitamente rilasciato la 1.26.4 per coprire questa esigenza.
- Monitorare l'aggiornamento del record CVE-2026-52849 per l'eventuale pubblicazione di punteggio CVSS e vettore di valutazione, che consentirà una prioritizzazione quantitativa nei sistemi di gestione vulnerabilità.
- Esaminare i log di accesso a file EPUB da fonti non attendibili nel periodo antecedente al , data di disponibilità della patch, per identificare eventuali tentativi di exploit non rilevati.
La natura dell'attacco — richiedente interazione utente con file apparentemente innocui — rende la prevenzione basata su filtri di tipo MIME e controlli di provenienza dei documenti una misura complementare alla patch, anche se non documentata esplicitamente nelle fonti tecniche disponibili.
Il caso ZDI-26-360 solleva una questione più ampia sulla sicurezza del parsing di formati documentali compositi. Mentre l'industria ha maturato pratiche su PDF, Office e postscript, l'ecosistema EPUB — con il suo intreccio di XML, ZIP, CSS e font — riceve attenzione discontinua. Il rischio non è nel formato in sé, ma nella complessità implicita che i parser devono gestire, e nella tendenza a considerare "sicuri" i software che non eseguono codice attivo ma semplicemente ne interpretano la struttura.
La disponibilità anticipata della patch, in questo caso, è stata una risposta tecnica corretta che non si è tradotta in una comunicazione di rischio tempestiva. La discrepanza tra merge del codice e pubblicazione dell'advisory è un campanello d'allarme sui limiti della coordinated disclosure quando il coordinamento non include la distribuzione.
Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.
Fonti
- http://www.zerodayinitiative.com/advisories/ZDI-26-360/
- https://www.cve.org/CVERecord?id=CVE-2026-52849
- http://www.zerodayinitiative.com/advisories/upcoming/
- https://github.com/mate-desktop/atril/pull/700
- https://www.trendmicro.com/