Marcus Chen, YuSMP Group
Marcus Chen Staff Engineer (Backend & Cloud), YuSMP Group · sicurezza applicativa e cloud per team di prodotto negli Stati Uniti e in Europa
Una fotografia disturbata che va in frantumi in schegge di vetro e flussi di codice binario rosso che scendono in una condotta dati di una sala server buia, a illustrare un’immagine malevola che innesca l’esecuzione di codice remoto

In breve

HEIF Heist è un insieme di errori di corruzione della memoria in libheif e libde265 – i decoder nativi C/C++ delle immagini HEIF, HEIC e AVIF – che permettono a una sola immagine malevola di innescare l’esecuzione di codice remoto o, come minimo, una fuga di memoria. Poiché queste librerie si trovano sotto ImageMagick, libvips e Sharp, la falla ha raggiunto Slack, Meta, GitHub Enterprise (CVE-2026-19118), Discourse e Next.js. È stata resa pubblica il 18 settembre 2026.

La parte scomoda per i team di sviluppo è che quasi nessuno elenca libheif tra le proprie dipendenze. La libreria arriva in modo transitivo, viene eseguita su ogni foto caricata ed esegue codice nativo al di sotto della sicurezza della memoria del vostro linguaggio applicativo. Se il vostro prodotto accetta immagini – una foto profilo, un allegato a un ticket di assistenza, un AVIF servito da una pipeline di immagini Next.js –, avete ereditato questa superficie d’attacco senza averla mai scelta. La correzione è disponibile (libheif v1.23.2 e l’ultima libde265), ma il vero lavoro è trovare ogni copia che distribuite.

Che cosa ha pubblicato Hacktron?

Il 18 settembre 2026 la società di ricerca sulla sicurezza Hacktron ha pubblicato HEIF Heist, frutto di un’indagine durata mesi su come le applicazioni moderne decodificano le immagini. Il team – Harsh Jaiswal, Mohan SRK, Rahul Maini e Sudhanshu Rajbhar – richiama una celebre vignetta di xkcd: un’enorme pila di software che poggia su un piccolo componente oscuro che quasi nessuno mantiene. In questo caso il componente è libheif (con il suo decoder HEVC libde265), la libreria di fatto standard per leggere i formati HEIF, HEIC e AVIF che smartphone e browser oggi producono di default.

Il difetto principale è un classico bug di basso livello: durante l’elaborazione di un’immagine a griglia, un singolo calcolo sulla larghezza o sull’altezza provoca un integer overflow, che genera un buffer troppo piccolo, oltre il cui limite il decoder poi scrive – un heap buffer overflow. Da qui i ricercatori hanno costruito exploit funzionanti, sottolineando però che per fare danni non serve nemmeno l’esecuzione completa di codice. Secondo Hacktron, anche quando la RCE non è subito raggiungibile, le primitive di attacco possono consentire la lettura arbitraria dello heap: un attaccante può leggere la memoria adiacente, che può contenere token, chiavi o dati di altri utenti.

A dare peso alla pubblicazione è stato l’elenco dei bersagli. Hacktron ha dimostrato l’esecuzione di codice remoto su Slack, nei prodotti principali di Meta tramite caricamento di immagini, una RCE autenticata su GitHub Enterprise tracciata come CVE-2026-19118, una RCE autenticata in Discourse e una RCE senza autenticazione in Next.js tramite la funzione AVIF Image Optimization. Il team ha anche concatenato il bug delle immagini con una debolezza del single sign-on per compromettere account di dipendenti di OpenAI e raggiungere repository di codice interni – un’operazione che, secondo i ricercatori, ha richiesto meno di 72 ore. Le correzioni sono in libheif v1.23.2 e nell’ultima libde265, insieme a patch specifiche dei fornitori coinvolti.

Perché una libreria di immagini è ovunque?

HEIF Heist tocca così tanti prodotti diversi per via della forma del moderno grafo delle dipendenze. Quasi nessuna applicazione parla direttamente con libheif. I team usano strumenti di alto livello – ImageMagick per la conversione, libvips per miniature veloci, Sharp per le pipeline Node.js – e questi strumenti includono o collegano in silenzio libheif e libde265 per supportare i formati più recenti. Il decoder nativo gira diversi livelli sotto il codice scritto dallo sviluppatore, e di solito sotto il linguaggio sulla cui sicurezza della memoria si contava.

Per questo un normale audit dei pacchetti non se ne accorge. Un lockfile JavaScript o Python mostra con orgoglio «sharp» o «imagemagick», ma non la libreria C che sotto esegue il parsing rischioso. Il codice vulnerabile è reale, è raggiungibile da qualsiasi endpoint che accetti un’immagine, eppure resta invisibile agli strumenti sulle dipendenze di cui si fida la maggior parte dei team. È lo stesso punto cieco delle dipendenze native transitive che ha già colpito il settore con librerie come libwebp e libxml2: un singolo parser oscuro sotto una montagna di applicazioni.

La conseguenza pratica è che per proteggersi serve visibilità sulla build, non solo sul codice sorgente. I team che generano già una SBOM (software bill of materials) e analizzano le dipendenze native nella propria pipeline cloud e DevOps rispondono in pochi minuti alla domanda «dove distribuiamo libheif, e in quale versione?». Gli altri devono tirare a indovinare quali servizi decodificano l’immagine di un attaccante con codice vulnerabile – proprio la domanda che una finestra di risposta agli incidenti di 24 ore pretenderà.

Che cosa significa per i team italiani?

La prima lezione è che il caricamento di immagini è un confine di esecuzione del codice, non una funzione di archiviazione. Ovunque un utente, un partner o un’integrazione automatica possa passare un’immagine al vostro backend – avatar, scansioni di documenti per il KYC, allegati in chat, foto prodotto, pipeline da e-mail a ticket –, byte controllati da un attaccante raggiungono un parser nativo. Questo cambia il modo di progettare la funzione: le immagini vanno decodificate in un contesto isolato e con privilegi minimi, non nello stesso processo che custodisce le credenziali del database.

La seconda lezione riguarda la velocità di sfruttamento. Con gli assistenti di AI che riducono lo sviluppo di un exploit a pochi giorni, l’idea che i bug di memoria restino «teorici» finché qualcuno non ci dedica un mese non regge più. Per i settori regolamentati questo si somma a obblighi già esistenti: con gli obblighi di segnalazione del Cyber Resilience Act, in vigore dall’11 settembre 2026, e la regola delle 72 ore del GDPR, una falla sfruttata e confermata in un prodotto venduto nell’UE fa partire un orologio normativo molto stretto.

La terza lezione è che si tratta di un problema di supply chain gestibile solo con un inventario. Non si può correggere ciò che non si vede, e libheif è proprio il tipo di componente che si nasconde. Che sviluppiate internamente o con un team partner per realizzare software su misura, la soluzione duratura è un processo che censisca di continuo le dipendenze native in ogni container e in ogni artefatto di build, così che la prossima divulgazione di questo tipo si risolva con una patch in giornata e non con una caccia al tesoro di una settimana.

Che cosa fare adesso?

  1. Aggiornate i decoder ovunque. Passate a libheif v1.23.2 o successiva e all’ultima libde265 – non solo nei pacchetti di sistema, ma in ogni copia inclusa o containerizzata di ImageMagick, libvips o Sharp che distribuite. Ricostruite le immagini e rifate il deploy: un pacchetto aggiornato sull’host non aiuta un container che porta con sé la propria copia.
  2. Applicate gli advisory dei fornitori. Se usate GitHub Enterprise, Discourse o applicazioni self-hosted basate sull’ottimizzazione delle immagini di Next.js, aggiornate alle versioni corrette indicate in ciascun advisory. Il percorso Next.js non richiede autenticazione: date priorità alle istanze esposte su Internet.
  3. Censite dove decodificate immagini. Elencate ogni endpoint e ogni job in background che legge input HEIF, HEIC o AVIF e generate una SBOM che mostri le librerie native, non solo i pacchetti del linguaggio. Dovete sapere quali servizi sono raggiungibili con un’immagine fornita da un attaccante.
  4. Disattivate ciò che non serve. Se un servizio non ha mai bisogno di accettare HEIF o AVIF, disattivate quella decodifica per i caricamenti non attendibili. Limitare i formati in ingresso riduce subito la superficie d’attacco, prima ancora che arrivi una patch.
  5. Isolate l’elaborazione delle immagini. Decodificate in una sandbox rinforzata, effimera e con privilegi minimi – un processo, container o worker separato, senza segreti e senza rete –, così che un crash del decoder resti contenuto invece di diventare esecuzione di codice nell’applicazione principale.

Domande frequenti

Che cos’è HEIF Heist?

HEIF Heist è il nome che la società di sicurezza Hacktron ha dato a una classe di errori di corruzione della memoria nei decoder di immagini nativi libheif e libde265, che leggono immagini HEIF, HEIC e AVIF. Un’immagine malevola può innescare un integer overflow che porta a un heap buffer overflow, consentendo l’esecuzione di codice remoto o, come minimo, la lettura arbitraria della memoria. La falla è stata resa pubblica il 18 settembre 2026.

Quali prodotti sono stati colpiti?

Hacktron ha dimostrato percorsi di attacco contro Slack, i prodotti principali di Meta (tramite caricamento di immagini), GitHub Enterprise (RCE autenticata, CVE-2026-19118), Discourse e Next.js (RCE senza autenticazione tramite AVIF Image Optimization). Un exploit concatenato, che univa la falla nelle immagini a una debolezza del single sign-on di OpenAI, ha raggiunto repository di codice interni di OpenAI. L’elenco non è esaustivo: qualsiasi servizio che decodifica immagini HEIF, HEIC o AVIF non attendibili può essere esposto.

Perché una sola libreria colpisce così tante applicazioni?

libheif e libde265 sono decoder C/C++ di basso livello che si trovano sotto strumenti molto diffusi come ImageMagick, libvips e Sharp, usati per miniature, ridimensionamento e ottimizzazione delle immagini in innumerevoli backend web e mobile. Quasi nessun team elenca libheif nel proprio file delle dipendenze, quindi la superficie d’attacco resta invisibile in un normale audit dei pacchetti, anche se viene eseguita su ogni immagine caricata.

Come si corregge e si mitiga HEIF Heist?

Aggiornate a libheif v1.23.2 o successiva e all’ultima versione di libde265, anche nelle copie incluse o containerizzate di ImageMagick, libvips e Sharp. Applicate gli advisory di Next.js, GitHub Enterprise e Discourse. Dove la decodifica HEIF e AVIF non serve, disattivatela per i caricamenti non attendibili, e isolate l’elaborazione delle immagini in una sandbox rinforzata ed effimera, così che un crash del decoder non diventi esecuzione di codice nel servizio principale.

Quali obblighi di notifica valgono in Italia?

Se la falla viene sfruttata e sono coinvolti dati personali, il GDPR impone di notificare la violazione al Garante per la protezione dei dati personali entro 72 ore. I soggetti che rientrano nella disciplina NIS2, recepita in Italia con il D.Lgs. 138/2024, devono inoltre inviare una pre-notifica entro 24 ore al CSIRT Italia in caso di incidente significativo. I fabbricanti di prodotti con elementi digitali venduti nell’UE sono poi soggetti, dall’11 settembre 2026, agli obblighi di segnalazione del Cyber Resilience Act per le vulnerabilità attivamente sfruttate.

Fonti

HEIF Heist — pubblicazione di Hacktron
CyberScoop — Researchers use AI to find widespread software decoder flaw
Tom’s Hardware — Hackers breach OpenAI using Claude tools via image-parser flaw