Scopri di più sul libro di Benny Czarny “Cybersecurity Upside Down”

Per saperne di più
Per le traduzioni dei siti utilizziamo l'intelligenza artificiale e, sebbene ci sforziamo di essere accurati, non sempre le traduzioni sono precise al 100%. La vostra comprensione è apprezzata.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

Di Luan Pham, tester di penetrazione associato

I file immagine sono generalmente considerati file sicuri e vengono spesso gestiti senza la consapevolezza dei potenziali rischi per la sicurezza. Questi file immagine, in particolare quelli in formato SVG, rappresentano vettori di attacco comuni per sferrare attacchi pericolosi quali il Cross-Site Scripting (XSS) o l’iniezione di entità esterne XML (XXE). A differenza degli attacchi XSS, gli attacchi di iniezione XXE non interessano il lato client, ma potrebbero avere un impatto significativo sul lato server, causando gravi conseguenze. In questo articolo del blog esploreremo la natura degli attacchi XXE, in particolare quelli che utilizzano il formato Scalable Vector Graphics (SVG) come vettore di attacco, analizzeremo un esempio reale e forniremo strategie di mitigazione con i prodotti dell’ OPSWAT .

Informazioni di base

Prima di approfondire la vulnerabilità, esamineremo innanzitutto il formato dei file XML e SVG e la causa alla base della tecnica di iniezione XXE.

Formato file XML

XML (eXtensible Markup Language) è un formato di file indipendente dalla piattaforma per l'archiviazione e lo scambio di dati strutturati. L'XML supporta la struttura gerarchica ed è quindi ideale per rappresentare relazioni complesse tra i dati. I dati in formato XML sono organizzati in tag, attributi e contenuti, allo stesso modo dell'HTML. Tuttavia, XML è altamente personalizzabile ed estensibile, consentendo agli utenti di definire i propri tag e attributi in base alle proprie esigenze. La figura seguente mostra i dati del reparto IT in formato XML.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

Entità XML

In XML, le entità sono segnaposto per i dati che consentono di incorporare testo o interi documenti nel documento corrente. Sintatticamente, un'entità in XML è racchiusa da una virgola (&) e da un punto e virgola (;). Nell'esempio seguente, due entità sono definite in Document Type Definition e si riferiscono al contenuto del file XML. La differenza tra le due entità è che l'entità interna è definita e referenziata all'interno del documento corrente, mentre il contenuto dell'entità esterna proviene da un documento esterno. Dopo aver analizzato e risolto le entità, queste vengono sostituite con i dati corrispondenti.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

Formato file SVG

SVG (Scalable Vector Graphics) è un formato di file versatile, ampiamente utilizzato nello sviluppo web, nella progettazione grafica e nella visualizzazione dei dati. A differenza dei formati immagine tradizionali come JPEG o PNG, SVG utilizza il formato XML per descrivere la grafica vettoriale bidimensionale. In particolare, le immagini SVG sono composte da forme geometriche come linee, curve e poligoni, definite da equazioni matematiche piuttosto che da singoli pixel. Di conseguenza, la grafica SVG può essere scalata all'infinito senza perdere qualità, il che la rende ideale per il web design reattivo e i display ad alta risoluzione. A causa della natura XML del formato SVG, esso fornisce anche potenziali vettori di attacco per exploit legati a XML.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

Tecnica di iniezione XXE e impatti

La tecnica di iniezione XXE abusa del meccanismo di risoluzione delle entità esterne. In particolare, quando il parser incontra un'entità esterna, recupera il contenuto corrispondente in base al tipo di file della risorsa.

Se il file di risorse è locale, il parser recupera il contenuto del file e sostituisce l'entità con i dati corrispondenti. Ciò consentirebbe a un aggressore di mostrare dati sensibili come la configurazione del server, le credenziali, ecc. Per sfruttare con successo la vulnerabilità, l'aggressore dichiara un'entità esterna che fa riferimento al contenuto di file sensibili, ad esempio /etc./password.

Tuttavia, se la risorsa è remota o un servizio interno, il parser cercherà di recuperare i dati richiedendo l'URL definito. Questo potrebbe essere sfruttato per eseguire la falsificazione della richiesta lato server (SSRF). In questo caso, invece di fare riferimento a un file locale, l'aggressore cambierà il payload con l'URL del servizio vulnerabile da richiedere per conto del server.

Attacco XXE tramite gestione errata di file SVG: Un caso di studio

Analizzeremo una XXE per un caso reale, la libreria SVGLIB fino alla versione 0.9.3. La vulnerabilità è stata scoperta nel 2020 e assegnata a CVE-2020-10799. Esamineremo prima il flusso della libreria, analizzeremo il frammento di codice vulnerabile e infine dimostreremo lo sfruttamento tramite un servizio di conversione da SVG a PNG. L'obiettivo sono le applicazioni web autoimplementate che utilizzano versioni vulnerabili di SVGLIB per la conversione.

Pacchetto svglib

svglib è una libreria puramente Python progettata per convertire il formato SVG in altri formati come PNG, JPG, PDF, ecc. utilizzando il toolkit Open-Source di Report Lab. Poiché i file SVG utilizzano il formato XML, anche il parsing e la gestione di XML sono una parte importante del flusso principale della libreria. Le 3 fasi principali della libreria sono le seguenti:

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

Sfruttamento

La vulnerabilità risiede nel processo di parsing dei file SVG che, se configurato in modo errato, provoca la perdita di dati sensibili sul server e potenzialmente la vulnerabilità SSRF. Da un ulteriore esame del codice sorgente del pacchetto svglib, la vulnerabilità XXE è causata dall'utilizzo della configurazione predefinita per l'analisi e la gestione del formato XML durante il caricamento del file SVG. Il pacchetto ha utilizzato il pacchetto lxml, in cui il valore predefinito per gli attributi resolve_ entities della classe XMLParser è True.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

Bonifica

La causa principale del problema è il parsing XML non sicuro, implementato in modo non corretto nella libreria svglib e parte della dipendenza lxml. Di conseguenza, l'utilizzo di una versione vulnerabile di questa libreria può comportare la divulgazione di informazioni sensibili, la contraffazione di richieste lato server o persino la potenziale esecuzione di codice remoto, a seconda dell'ambiente di distribuzione e della funzionalità dell'applicazione. Le vulnerabilità introdotte dalle librerie di terze parti rappresentano un grave problema per la sicurezza delle applicazioni di grandi dimensioni, poiché le loro dipendenze potrebbero essere complesse e non trasparenti.

MetaDefender Software Supply Chain

OPSWAT MetaDefender Software Supply Chain offre una maggiore visibilità e una solida difesa contro i rischi della catena di fornitura grazie a una combinazione di più tecnologie. OPSWAT Software Bill of Materials (SBOM) consente di ottenere visibilità sui pacchetti software open-source di terze parti e di identificare le dipendenze software, le vulnerabilità o altri potenziali rischi presenti sotto ogni livello dell'immagine di un container. Grazie all'integrazione di oltre 30 motori antivirus combinati, il tasso di rilevamento del malware della tecnologiaMultiscanning raggiunge oltre il 99,99%. Inoltre, la tecnologiaProactive DLP (Data Loss Prevention) identifica credenziali come password, segreti, token, chiavi API o altre informazioni sensibili lasciate nel codice sorgente. Grazie alle nostre tecnologie di rilevamento e prevenzione delle minacce a fiducia zero, il ciclo di vita dello sviluppo del software (SDLC) è protetto da malware e vulnerabilità, rafforzando la sicurezza delle applicazioni e la conformità.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice

MDSSC rileva la CVE trovata in svglib. Inoltre, segnala il livello di gravità della CVE nel rapporto SBOM e identifica la versione del software vulnerabile.

MetaDefender Core Tecnologia Deep CDR™

Un altro motivo che rende possibile l'exploit è che l'applicazione elabora un file SVG iniettato con un payload dannoso. Di conseguenza, se il file immagine viene sanificato prima di essere inviato al servizio di conversione, il payload verrebbe eliminato, impedendo così l'attacco. La tecnologia Deep Content Disarm and Reconstruction CDR) di MetaDefender Core dalle minacce note e sconosciute trasmesse tramite file, sanificando e ricostruendo i file. Con il supporto di oltre 160 tipi di file comuni e centinaia di opzioni di ricostruzione dei file, la tecnologia Deep CDR™ OPSWATneutralizza qualsiasi potenziale minaccia incorporata, garantendo che il file sanificato mantenga la piena usabilità con contenuti sicuri.

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
Il file SVG dannoso
SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
Il file SVG dopo essere stato sanificato con MetaDefender Core Deep CDR™ Technology
SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
MetaDefender Core Risultato ripulito dalla tecnologia Deep CDR™

SVG svelato: Comprendere le vulnerabilità XXE e difendere la propria base di codice
Biografia dell'autore

Luan Pham ha partecipato al Critical Infrastructure Cybersecurity Graduate Fellowship Program di OPSWAT e attualmente è un Associate Penetration Tester presso OPSWAT. È appassionato di salvaguardia dei prodotti di OPSWAT contro potenziali minacce e di condivisione delle sue conoscenze.

Luan Pham
Tester di penetrazione associato

Rimanete aggiornati con OPSWAT!

Iscriviti oggi stesso per ricevere gli ultimi aggiornamenti sull'azienda, le notizie, le informazioni sugli eventi e molto altro ancora.