Cyberattacchi alimentati dall'intelligenza artificiale: Come individuare, prevenire e difendersi dalle minacce intelligenti

Leggi ora
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.

Rivelazione e rimedio di una vulnerabilità della libreria Dompdf con OPSWAT MetaDefender Core 

da OPSWAT
Condividi questo post
Tai Tran e Hai Dang Bui, studenti della University of Information Technology, in posa per un ritratto professionale su uno sfondo blu
Gli studenti hanno partecipato al programma di borse di studio OPSWAT .

La rapida ascesa della tecnologia ha creato una forte domanda di sviluppatori qualificati. Il software open-source (OSS) è diventato uno strumento vitale per questa forza lavoro in crescita. Oggi esistono centinaia di migliaia di pacchetti OSS consolidati in diversi linguaggi di programmazione. Oltre il 90% degli sviluppatori sfrutta questi componenti open-source all'interno delle proprie applicazioni proprietarie, evidenziando l'efficienza e la proposta di valore dell'OSS. A sottolineare ulteriormente la sua importanza, si prevede che il mercato globale del software open-source raggiungerà gli 80,7 miliardi di dollari entro il 2030, con un tasso di crescita previsto del 16,7% annuo. 

Il Software è parte integrante delle operazioni aziendali in tutto il mondo ed è quindi spesso preso di mira dagli attori delle minacce. Nel 2023, la spesa per la sicurezza delle applicazioni è stata di circa 5,76 miliardi di dollari, con proiezioni che raggiungono i 6,67 miliardi di dollari nel 2024. Nell'ambito dell'AppSec, la sicurezza della catena di fornitura del software ha guadagnato importanza negli ultimi tre anni, rappresentando la categoria di attacco in più rapida crescita, con importanti violazioni ed exploit che fanno regolarmente notizia. 

Le organizzazioni spesso ritengono che la maggior parte dei rischi provenga dalle applicazioni Web rivolte al pubblico. Tuttavia, negli ultimi anni questa prospettiva è cambiata. Con decine di piccoli componenti in ogni applicazione, i rischi possono ora emergere da qualsiasi punto della base di codice. È più che mai fondamentale per le organizzazioni familiarizzare con le falle di sicurezza esistenti ed emergenti nel ciclo di vita dello sviluppo del software. In questo post del blog, i nostri Graduate Fellow danno un'occhiata più da vicino a CVE-2023-23924, una falla di sicurezza critica scoperta nella libreria dompdf, un potente strumento PHP che consente la generazione dinamica di documenti PDF da HTML e CSS. 

Attraverso un'analisi completa, esploreremo le complessità tecniche di questa vulnerabilità, le tecnologie correlate che svolgono un ruolo cruciale e una simulazione del processo di sfruttamento. Esamineremo anche come OPSWAT MetaDefender Corein particolare il suo Software Bill of Materials (SBOM) può essere sfruttato per rilevare e mitigare questa vulnerabilità, consentendo agli sviluppatori di software e ai team di sicurezza di essere sempre un passo avanti rispetto alle potenziali minacce. 

Informazioni su CVE-2023-23924 

Una vulnerabilità di sicurezza è stata scoperta nella versione 2.0.1 di dompdf e resa pubblica all'inizio del 2023:

  • La validazione dell'URI in dompdf 2.0.1 può essere aggirata nel parsing di SVG passando il codice <image> con lettere maiuscole. Ciò consente a un utente malintenzionato di chiamare URL arbitrari con protocolli arbitrari, portando a una non serializzazione arbitraria degli oggetti nelle versioni di PHP precedenti alla 8.0.0. Attraverso il wrapper URL PHAR, questa vulnerabilità può causare l'eliminazione arbitraria di file e persino l'esecuzione di codice remoto, a seconda delle classi disponibili. 
  • Gli analisti di NVD hanno assegnato un punteggio CVSS di 9,8 CRITICAL a CVE-2023-23924. 
Diagramma informativo che mostra le metriche per la versione 3.x di CVSS, comprese le stringhe di gravità e di vettore per le vulnerabilità di sicurezza.

Comprendere la vulnerabilità di Dompdf 

Per comprendere appieno la vulnerabilità CVE-2023-23924 in dompdf, è essenziale familiarizzare con due tecnologie strettamente correlate: Grafica vettoriale scalabile (SVG) e file PHAR. 

SVG (Grafica vettoriale scalabile) 

SVG (Scalable Vector Graphics) è un formato di immagine versatile che si è diffuso grazie alla sua capacità di rendere grafica di alta qualità sul Web, rimanendo al contempo leggero e scalabile. A differenza delle immagini raster, gli SVG si basano sul markup XML, consentendo un controllo preciso su elementi quali linee, forme e testo. Uno dei vantaggi principali degli SVG è la loro capacità di scalare senza problemi senza perdere la qualità dell'immagine, il che li rende ideali per il web design reattivo e per i display ad alta risoluzione.  

Snippet di codice per la visualizzazione di SVG con poligoni multipli in colori diversi, che illustra la programmazione in formato XML.
File PHAR 

PHAR (PHP Archive) è analogo al concetto di file JAR, ma per PHP. Consente una facile distribuzione, raggruppando tutto il codice PHP e il file delle risorse in un unico file di archivio.  

Un file PHAR è composto da 4 sezioni:  

  • Stub: contiene il codice per avviare l'archivio. 
  • Manifest: contiene i metadati dell'archivio. I metadati sono memorizzati in formato serializzato, che potrebbe essere usato per innescare un attacco deserializzato PHP in un file PHAR dannoso. 
  • Contenuto del file: contiene il contenuto dell'archivio, compreso il codice PHP e i file di risorse. 
  • Firma (opzionale): contiene dati per verificare l'integrità del file. 

Poiché i metadati sono memorizzati in formato seriale, la combinazione del wrapper PHAR e dei metadati del file PHAR potrebbe potenzialmente innescare un attacco di deserializzazione quando viene utilizzato come input in funzioni PHP quali file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), o filesize(). Questa mancanza di sicurezza potrebbe consentire agli aggressori di eseguire codice remoto tramite un file PHAR. 

Tabella che illustra il formato di base di un file manifest di un archivio Phar, comprese le dimensioni in byte e le descrizioni di ogni parte.

Come Dompdf genera un file PDF

Diagramma di flusso che illustra il processo di conversione di un file HTML in formato PDF, evidenziando le fasi intermedie e i formati di file.

Attraverso l'analisi, i borsisti di OPSWAT hanno individuato che ci sono tre fasi nel processo di conversione di dompdf. Per convertire un file HTML in formato PDF, la libreria dompdf analizza innanzitutto il file di input in un albero DOM e memorizza le informazioni di posizionamento e layout di ciascun oggetto. Successivamente, viene analizzato lo stile CSS e applicato a ciascun oggetto. Infine, gli oggetti vengono riorganizzati per adattarsi alla pagina e resi nel file PDF finale.  

Vulnerabilità di sicurezza in Dompdf

Per migliorare la sicurezza, dompdf implementa la validazione per garantire la sicurezza degli input URI prima di procedere alla fase successiva. Questo processo di validazione è evidente durante l'elaborazione del file SVG all'interno del valore di xlink:href attributo. 

Esempio di codice PHP per la gestione di file SVG, che mostra le funzioni per il parsing e la validazione dei contenuti SVG.

Se il file di input SVG contiene l'opzione <image> sotto il tag <svg> è stata implementata una condizione per consentire solo alcuni protocolli, come ad esempio http://, https:// e file://, per il xlink:href campo.

Interfaccia web per un servizio PDF Converter che consente agli utenti di caricare file HTML o SVG da convertire in PDF.

Il resolve_url() convaliderà l'URI prima di elaborarlo con la funzione disegnareImmagine() funzione. Se lo schema dell'URI non è tra i protocolli consentiti, la funzione resolve_url() restituirà un'eccezione all'applicazione. 

Script PHP che mostra come gestire gli URI dei dati, illustrando la gestione degli errori e la verifica del protocollo nelle applicazioni web.

Se l'URI supera la validazione, verrà passato al metodo disegnareImmagine() che utilizza la funzione file_get_contents() per gestire il valore URI all'interno del file xlink:href attributo. La vulnerabilità della sicurezza si presenta a questo punto: un attacco di deserializzazione PHAR potrebbe essere scatenato se un aggressore riuscisse a bypassare la validazione e a passare un wrapper PHAR nell'URI. 

Dopo l'analisi, si scopre che la validazione viene applicata solo ai tag con l'immagine del nome esatto. 

Esempio di manipolazione di immagini in PHP, con funzioni per l'estrazione di immagini da URL di dati e per la gestione dei contenuti dei file.

Di conseguenza, può essere facilmente aggirato capitalizzando uno o più caratteri nel nome del tag, come ad esempio Image. Di conseguenza, un file SVG appositamente creato che utilizza Image al posto di image potrebbe eludere questa convalida. 

Nella fase successiva, il disegnareImmagine() viene invocata, passando l'URI del file SVG alla funzione file_get_contents() funzione. Pertanto, la combinazione dell'aggiramento della convalida e di un attacco di deserializzazione su un file PHAR consente a un utente malintenzionato di eseguire codice remoto. Questa vulnerabilità consente a un malintenzionato di compromettere il server dell'applicazione attraverso un file SVG se gestito da una versione vulnerabile di dompdf. 

Simulazione di sfruttamento di Dompdf

Applicazione vulnerabile

Per simulare questo sfruttamento come uno scenario reale, i borsisti di OPSWAT hanno sviluppato un'applicazione web con conversione da HTML a PDF utilizzando la libreria dompdf versione 2.0.1. L'applicazione consente agli utenti di caricare tipi di file come HTML, XML o SVG e di convertirli in file PDF. Questa applicazione consente agli utenti di caricare tipi di file come HTML, XML o SVG e di convertirli in file PDF. 

Schermata di uno strumento PDF Converter basato sul web con un avatar umanoide, che sottolinea le funzionalità di caricamento e conversione dei file.

Un utente malintenzionato seguirà questi passaggi per sfruttare questa vulnerabilità in un'applicazione che utilizza una versione di dompdf vulnerabile (versione 2.0.1): 

Snippet di codice PHP che mostra l'uso della libreria Dompdf per convertire l'HTML in un file PDF in formato orizzontale
Lo snippet del file Composer.json specifica il requisito della versione 2.0.1 della libreria Dompdf per un progetto PHP.
Flusso di sfruttamento
Un diagramma grafico che spiega il processo in quattro fasi per sfruttare i file SVG utilizzando la vulnerabilità Dompdf per eseguire una reverse shell.

In primo luogo, un aggressore genera un oggetto dannoso che crea una shell inversa quando viene chiamato il distruttore. 

Esempio di codice PHP che illustra la vulnerabilità di deserializzazione degli oggetti in PHP che porta all'esecuzione di codice remoto tramite una shell inversa.

In secondo luogo, l'aggressore crea un file PHAR contenente l'oggetto di metadati dannoso. Quando il file PHAR viene invocato dal wrapper PHAR nel file file_get_content() i metadati vengono deserializzati e l'oggetto specificato viene elaborato. Durante questo processo di deserializzazione, vengono attivati i distruttori ed eseguita la shell inversa. 

Script PHP che dimostra la creazione di un archivio Phar che include dati di oggetti serializzati per l'esecuzione di un comando remoto.

In definitiva, l'attaccante inserisce il link URI contenente il wrapper PHAR nel valore di xlink:href nel tag Image per aggirare la convalida, eseguire codice dannoso e caricare il file dannoso nell'applicazione. 

Frammento di codice SVG che dimostra come incorporare un exploit di deserializzazione remota in PHP attraverso un riferimento all'immagine.

Durante l'elaborazione del file SVG dannoso caricato, l'applicazione stabilisce una connessione inversa con l'aggressore, consentendogli di compromettere il server dell'applicazione. 

Interfaccia web di un convertitore PDF che mostra le opzioni per caricare e convertire file HTML/SVG in PDF, con un modello umano digitale
Schermata di una console Metasploit che mostra una connessione TCP inversa riuscita e i dettagli della configurazione di rete.
Schermata del terminale che mostra la configurazione di rete e le credenziali recuperate da un sistema Unix.

Proteggere i componenti open-source con OPSWAT MetaDefender Core 

Per rilevare e mitigare la vulnerabilità CVE-2023-23924 in dompdf, i nostri Graduate Fellows hanno utilizzato OPSWAT MetaDefender Core , un prodotto di cybersecurity multilivello che offre tecnologie avanzate di prevenzione e rilevamento del malware, tra cui l'SBOM. 

OPSWAT SBOM protegge la catena di fornitura del software fornendo un inventario completo dei componenti per il codice sorgente e i contenitori. Analizzando la libreria dompdf e le sue dipendenze, OPSWAT SBOM è in grado di identificare rapidamente la presenza della versione 2.0.1 vulnerabile e di avvisare gli utenti del rischio potenziale. 

Inoltre, OPSWAT SBOM è in grado di rilevare tecnologie correlate, come i file SVG e PHAR, che sono essenziali per comprendere e mitigare la vulnerabilità CVE-2023-23924. Questa visione olistica dei componenti software dell'applicazione consente ai team di sicurezza di prendere decisioni informate e di intraprendere azioni appropriate per affrontare i rischi identificati. 

Interfaccia di analisi della sicurezza che mostra un file JavaScript bloccato a causa di vulnerabilità con risultati di valutazione dettagliati

Oltre a rilevare la versione vulnerabile di dompdf, OPSWAT SBOM fornisce anche preziose informazioni sui componenti interessati, sulle loro versioni e su eventuali aggiornamenti o patch disponibili. Queste informazioni consentono ai team di sicurezza di dare priorità agli sforzi di correzione e di garantire l'aggiornamento dell'applicazione a una versione sicura di dompdf, risolvendo efficacemente la vulnerabilità CVE-2023-23924. 

Visualizzazione dettagliata delle vulnerabilità in un file di notazione degli oggetti JavaScript, con l'elenco dei rischi critici e di alta sicurezza con identificatori CVE.

Sfruttando il motore SBOM all'interno di MetaDefender Core , le organizzazioni possono monitorare in modo proattivo la loro catena di fornitura del software, identificare potenziali vulnerabilità nei componenti open-source e implementare tempestivamente strategie di mitigazione, garantendo la sicurezza generale e l'integrità delle loro applicazioni. 

Pensieri conclusivi 

La scoperta di CVE-2023-23924 nella libreria dompdf sottolinea la necessità di vigilare sul panorama dinamico della sicurezza delle applicazioni. Sfruttando le intuizioni e le strategie descritte in questo blog post, i team di sicurezza possono individuare, mitigare e salvaguardare efficacemente le loro applicazioni da tali vulnerabilità, garantendo la sicurezza e l'integrità complessiva del loro ecosistema software. 

Rimanete aggiornati con OPSWAT!

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