Il 24 agosto 2026 Trend Micro ha reso pubblica l'advisory ZDI-26-588 su una vulnerabilità nel metodo loadFromJSON di Fabric.js, libreria grafica JavaScript diffusa in applicazioni di rendering server-side. Il flaw, tracciato come CVE-2026-19504, consente attacchi Server-Side Request Forgery (SSRF) con conseguente divulgazione di informazioni sensibili da reti interne. La criticità emerge dal contrasto tra la natura client-side presumibile della libreria e il suo impiego reale in pipeline di generazione immagini e thumbnail su backend Node.js.
- La vulnerabilità ZDI-26-588 interessa il metodo
loadFromJSONdi Fabric.js, che segue URI embedded senza validazione - L'attacco SSRF si manifesta in ambienti server-side con accesso a risorse di rete interne, esfiltrando informazioni sensibili
- Il CVE assegnato è CVE-2026-19504, attualmente in stato reserved su cve.org senza dettagli tecnici completi
- Il fix, unito nella PR GitHub #11064 il 30 luglio 2026, introduce un callback per la validazione URL prima del caricamento
Come il parsing JSON diventa vector SSRF
Il metodo loadFromJSON di Fabric.js ricostruisce oggetti canvas a partire da rappresentazioni JSON, tipicamente serializzate in precedenza dal metodo toJSON(). Questo flusso è fondamentale per applicazioni che salvano, trasferiscono o riprendono sessioni di editing grafico. Il problema, documentato nell'advisory ZDI-26-588, risiede nell'assenza di validazione degli URI prima dell'accesso alle risorse remote.
Un attaccante può confezionare un payload JSON che incorpora URI verso servizi interni — tipicamente http://localhost, indirizzi RFC 1918, o endpoint cloud metadata — e sottoporlo a un'applicazione server-side che usa loadFromJSON per generare anteprime, esportare PDF, o renderizzare immagini. La libreria segue l'URI senza controlli, permettendo la richiesta dal server stesso e l'eventuale esfiltrazione della risposta.
"The specific flaw exists within the implementation of the loadFromJSON method. The issue results from the lack of proper validation of a URI prior to accessing resources"
— Advisory ZDI-26-588, Trend Micro Zero Day Initiative
La struttura del JSON di Fabric.js è profondamente nidificata: oggetti di tipo Image, Pattern, o Gradient possono contenere proprietà src o source in qualsiasi punto dell'albero. Senza ispezione ricorsiva e controllata, la superficie di attacco si estende oltre i parametri ovvi, rendendo impraticabile una difesa basata su parsing ad-hoc del JSON in ingresso.
La timeline: dalla segnalazione al fix pre-disclosure
La vulnerabilità è stata segnalata al vendor il 7 aprile 2026. L'intervallo di quattro mesi tra segnalazione e disclosure coordinata del 24 agosto 2026 ha permesso lo sviluppo e il rilascio di una correzione strutturale, non un semplice workaround.
Il 30 luglio 2026, circa tre settimane prima della pubblicazione dell'advisory, il maintainer asturur ha unito la PR #11064 nel repository ufficiale Fabric.js. Il cambiamento aggiunge un meccanismo di callback per le applicazioni server-side, consentendo di validare — e se necessario bloccare — gli URL prima che la libreria proceda al caricamento automatico delle risorse.
L'implementazione riflette una constatazione esplicita del maintainer: l'ispezione manuale di un oggetto JSON Fabric.js è insufficiente, poiché URL malevoli possono essere celati in sotto-proprietà arbitrarie. Esporre un hook di validazione è più robusto e più semplice per gli sviluppatori.
Perché è importante
Il dossier non specifica quali versioni di Fabric.js siano interessate, né quantifichi un punteggio CVSS o un vettore di severità. L'advisory ZDI non menziona exploit pubblici o attacchi in-the-wild, e il record CVE rimane in stato reserved senza dettagli tecnici accessibili. Questi limiti rendono impossibile stime quantitative del rischio o della superficie di attacco esposta.
La fonte non documenta misure correttive specifiche al di là dell'aggiornamento con callback. Il brief non elenca controlli di rete, sandbox URL, o politiche di segmentazione come mitigazioni consigliate dal vendor. L'onere della valutazione del perimetro interno ricade sugli operatori delle applicazioni che impiegano Fabric.js in backend con accesso a risorse sensibili.
Il maintainer ha motivato il fix con una considerazione di progettazione: "while everyone is in charge of his own security, exposing a callback is way easier for the developer instead of inspecting a custom fabricJSON that can hide a malicious url in any sub property". Questo riconoscimento esplicito della difficoltà difensiva — ispezionare JSON arbitrariamente complessi — costituisce l'elemento più rilevante per la valutazione del rischio.
Cosa fare adesso
Per gli operatori che usano Fabric.js in ambienti server-side, le azioni documentate nel brief sono le seguenti:
- Aggiornare Fabric.js alla versione che include il callback di validazione URL introdotto con la PR #11064
- Implementare il callback di validazione URL nel backend per intercettare e bloccare URI verso reti interne o servizi non autorizzati
- Verificare che le applicazioni che chiamano
loadFromJSONsu input utente operino in ambienti con limitazione di accesso di rete - Controllare i log per richieste HTTP in uscita generate dal processo Node.js di rendering in precedenza non previste
Il brief non specifica se esistano versioni di Fabric.js che correggono la vulnerabilità senza richiedere l'implementazione del callback. Gli operatori devono verificare il changelog ufficiale del progetto per identificare la release minima che include il merge della PR #11064.
Il problema più grande delle librerie grafiche su server
L'incidente CVE-2026-19504 rientra in un pattern sistemico: librerie concepite per il browser che migrano su server senza ridefinizione dei confini di sicurezza. Fabric.js, creato per manipolare canvas HTML5 in ambienti utente, è stato adottato in pipeline di generazione contenuti, conversioni batch, e microservizi di anteprima. In questi contesti, la stessa flessibilità che ne giustifica l'uso — caricamento trasparente di risorse remote per texture, pattern, o immagini di riferimento — diventa liability.
La mancata validazione URI è un difetto di progettazione comune in librerie grafiche, ma la gravità si manifesta solo nel momento in cui la libreria esce dal browser e ottiene accesso di rete non mediato dalle same-origin policy. Il caso Fabric.js richiama analoghi in altri ecosistemi — ImageMagick, Ghostscript, librerie di parsing documenti — dove la riproposizione server-side di funzionalità client-side ha generato classi di vulnerabilità durature.
La soluzione adottata — callback di validazione esplicito — preserva la compatibilità retroattiva pur offrendo un punto di intervento. Non risolve però il problema generale: sviluppatori che ignorano l'origine server-side del proprio deployment continueranno a operare senza il callback attivato, espandendo la finestra di esposizione fino a incidente o audit.
FAQ
Fabric.js è vulnerabile anche in browser client-side?
Il brief non documenta impatti in ambienti client-side. La natura SSRF del flaw richiede un contesto server-side con accesso di rete a risorse interne non raggiungibili dal browser dell'utente.
Il callback di validazione è attivo di default?
Il brief non specifica se il callback sia obbligatorio o opzionale. La citazione del maintainer suggerisce che l'implementazione è un'opzione offerta agli sviluppatori, non un blocco automatico.
Quali applicazioni sono maggiormente a rischio?
Il brief identifica le applicazioni server-side che usano Fabric.js per generare immagini, thumbnail o preview da JSON utente. Nessun elenco specifico di prodotti o servizi è documentato.
Fonti
- http://www.zerodayinitiative.com/advisories/ZDI-26-588/
- http://www.zerodayinitiative.com/advisories/published/
- https://www.cve.org/CVERecord?id=CVE-2026-19504
- http://www.zerodayinitiative.com/advisories/upcoming/
- https://github.com/fabricjs/fabric.js/pull/11064
- https://www.trendmicro.com/
Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.