Autore: Vinh T. Nguyen - Capo squadra
Introduzione
Una vulnerabilità in un sistema informatico è una debolezza che un aggressore può sfruttare per utilizzare quel sistema in modo non autorizzato [1]. La vulnerabilità Software , in particolare, è una sfida alla sicurezza informatica che le organizzazioni devono affrontare regolarmente, a causa della natura e della complessità in continua evoluzione del software.
I metodi più comuni utilizzati dalle organizzazioni per valutare il rischio di vulnerabilità delle loro reti informatiche possono essere raggruppati in due categorie principali: basati sulla rete e basati sull'host [2]. I metodi basati sulla rete sondano la rete senza accedere a ciascun host, per individuare servizi, dispositivi e dati vulnerabili in transito. I metodi basati su host accedono a ciascun host e raccolgono un elenco di software, componenti e configurazioni vulnerabili. Ciascuna categoria gestisce il rischio in modo diverso, ma nessuna è in grado di rilevare le vulnerabilità a meno che il software vulnerabile non sia già distribuito su un host.
In pratica, le valutazioni sono tipicamente programmate in modo da non influenzare le normali operazioni. Questo lascia una finestra di opportunità tra il momento in cui il software vulnerabile viene distribuito e l'inizio della valutazione, che gli aggressori possono sfruttare per compromettere un host e, quindi, una rete.
Questa situazione richiede un metodo di scansione in grado di chiudere questa finestra e di ridurre il rischio complessivo di vulnerabilità. La tecnologia OPSWAT file-based vulnerability assessment fa questo associando i file binari (come installer, eseguibili, librerie dinamiche, ecc.) alle vulnerabilità segnalate. Questo metodo è in grado di rilevare i componenti software vulnerabili prima che vengano distribuiti, in modo che gli analisti della sicurezza e i sysadmin possano intervenire rapidamente, chiudendo così la finestra.
Nelle sezioni seguenti, spieghiamo la tecnologia e i suoi casi d'uso in modo più dettagliato e forniamo esempi di attacchi noti legati a questi casi d'uso. Poi mostriamo una dimostrazione di sfruttamento e concludiamo sulla tecnologia e sul suo potenziale.
Perché è necessario un altro metodo di rilevamento
Limiti dei metodi tradizionali
I metodi tradizionali di rilevamento delle vulnerabilità del software operano a un livello astratto. Quando le scansioni basate sulla rete sondano una rete di computer e quelle basate sull'host raccolgono dati da un computer, di solito determinano quali controlli eseguire in base all'ambiente del sistema, per garantire prestazioni elevate (tempo di scansione, larghezza di banda della rete, utilizzo della memoria, ecc. A volte, i metodi di valutazione si basano talmente tanto sull'ambiente di un sistema da non eseguire i controlli appropriati, a causa delle idiosincrasie dell'ambiente stesso su cui si basano.
Ad esempio, se un servizio di rete vulnerabile viene spento prima di una valutazione (accidentalmente o intenzionalmente), la scansione non rileverà alcuna vulnerabilità nel servizio. Inoltre, l'eliminazione della chiave di registro di Windows che contiene il percorso di installazione di un'applicazione può lasciare l'applicazione stessa e le sue vulnerabilità intatte e non rilevate dalla scansione basata sull'host. In entrambi i casi, i metodi di scansione sono meno efficaci perché si basano sull'impronta del prodotto installato.
Il prodotto installato è un insieme di file (come eseguibili, librerie, database, ecc.) impacchettati insieme e combinati con la logica di distribuzione. La logica di distribuzione di solito segue una convenzione per scrivere l'impronta del prodotto in una posizione (ad esempio, il Registro di sistema su Windows, la porta 3306 per MySQL). Questo footprint non definisce il prodotto stesso e può essere modificato in qualsiasi momento durante la vita del prodotto. Pertanto, affidarsi all'impronta (come fanno le scansioni basate sulla rete e sull'host) per rilevare il prodotto e la sua vulnerabilità comporta il rischio di un'individuazione errata.
Introduzione alla scansione basata su file
File-based vulnerability assessment è diverso dai metodi di valutazione tradizionali. Come suggerisce il nome, opera su base file per file e ignora tutte le astrazioni di prodotto di alto livello. Analizzando ogni vulnerabilità segnalata e mappandola sugli installatori dei prodotti e sui file dei componenti principali (brevetto U.S. 9749349 B1), file-based vulnerability assessment è in grado di rilevare se un file binario è associato a una vulnerabilità, esponendo così le vulnerabilità anche quando il prodotto non è in esecuzione o la sua impronta è stata modificata.
Mentre la differenza tra la scansione basata su file e quella basata sulla rete è chiara, quella tra la scansione basata su file e quella basata su host non lo è altrettanto. Si potrebbe sostenere che la scansione basata su host non si basa completamente sull'impronta del prodotto, ma controlla anche la versione dei file dei componenti principali del prodotto. Pertanto, la logica di scansione può essere modificata per eseguire solo il controllo della versione del file, rendendo così la scansione basata su file un sottoinsieme della scansione basata su host.
Non è questo il caso, poiché:
- La scansione basata su host è spesso programmata per utilizzare sia l'ambiente di sistema che l'impronta del prodotto per filtrare i controlli da effettuare.
- Concentrandosi sulla ricerca e sull'analisi dei file che causano le vulnerabilità, la scansione basata sui file può rilevare alcune vulnerabilità difficili da individuare con il metodo basato sull'host ed è adatta a un maggior numero di casi d'uso.
La scansione basata su file può essere utilizzata per rilevare i programmi di installazione, i pacchetti firmware, i file di libreria, i file dei componenti del prodotto e così via che entrano ed escono dalle reti attraverso i gateway o che vanno da e verso gli endpoint (tramite e-mail, unità flash, ecc.). Ciò consente ai sysadmin e agli utenti di verificare la vulnerabilità di un prodotto prima di utilizzarlo e di garantire la protezione quando l'host non è supportato dai metodi di scansione basati sull'host o sulla rete attualmente utilizzati dall'organizzazione.

File-based vulnerability assessment può essere utilizzata anche per scoprire potenziali vulnerabilità nelle macchine esistenti. Poiché i metodi di scansione tradizionali di solito eseguono controlli di vulnerabilità basati su segnalazioni vaghe e di alto livello contenute in fonti di divulgazione pubblica, la scansione stessa spesso si ferma a un livello elevato (l'impronta del prodotto) e non entra nei dettagli della vulnerabilità o del prodotto segnalato.
Tuttavia, poiché i prodotti spesso riutilizzano i rispettivi componenti (le librerie dinamiche e i servizi condivisi ne sono un esempio), l'aggiornamento di un prodotto vulnerabile o addirittura la sua eliminazione non garantiscono sempre che i file che causano la vulnerabilità siano spariti. Potrebbero ancora trovarsi da qualche parte nel file system e fornire una piattaforma agli aggressori per ricollegare quei componenti e creare scompiglio. Spesso questi file hanno tutta l'integrità che si può chiedere. Hanno uno scopo chiaro, sono ampiamente conosciuti, provengono da fonti affidabili, hanno firme valide e sono ancora presenti in alcuni dei pacchetti software più recenti. La tecnologia File-based vulnerability assessment consente ai sysadmin di eseguire la scansione dei computer e trovare i file vulnerabili in agguato prima che gli aggressori abbiano la possibilità di utilizzarli.

Sfide con la tecnologia
Tuttavia, operare a livello di file ha i suoi limiti. Può contrassegnare un file come vulnerabile quando la vulnerabilità richiede il caricamento di più file insieme per essere attivata (falso positivo). Ciò è dovuto in parte alla mancanza del contesto (scansione di un singolo file) e alla vaghezza dei rapporti di divulgazione. Può anche contrassegnare un file realmente vulnerabile come pulito (falso negativo), a causa dell'incompletezza del database dei file e, ancora una volta, della vaghezza dei rapporti.
Noi di OPSWAT ne siamo consapevoli e miglioriamo costantemente la nostra tecnologia di file-based vulnerability assessment , in modo da coprire un maggior numero di vulnerabilità, riducendo al contempo i tassi di falsi positivi/negativi. Abbiamo integrato questa tecnologia in molti prodotti della nostra famiglia MetaDefender (come MetaDefender Core, MetaDefender Cloud, Drive, Kiosk, ICAP Server, ecc.), per aiutare le organizzazioni a difendere in modo approfondito le loro reti critiche [3].
Exploit noti
È già abbastanza difficile per i sysadmin monitorare i rapporti di divulgazione di tutti i software utilizzati dall'organizzazione, per non parlare della conoscenza e del monitoraggio di tutti i componenti all'interno di tali software. Questo fa sì che il software che utilizza vecchi componenti contenenti vulnerabilità possa eludere il rilevamento e penetrare nelle organizzazioni. Questo può rendere i componenti vulnerabili un grosso problema.
Un esempio è CVE-2019-12280 [4], la vulnerabilità del percorso di ricerca della libreria non controllato di Dell SupportAssist. Consente a un utente con privilegi bassi di eseguire codice arbitrario con privilegi di SISTEMA e di ottenere il controllo completo di una macchina. Originariamente proveniva da un componente fornito da PC-Doctor per la diagnosi delle macchine. Entrambi i fornitori hanno rilasciato patch per correggere il problema.
Un altro esempio è CVE-2012-6706 [5], una vulnerabilità critica di corruzione della memoria che potrebbe portare all'esecuzione di codice arbitrario e alla compromissione di un computer quando si apre un file appositamente creato. Inizialmente è stato segnalato che il problema riguardava i prodotti antivirus Sophos, ma in seguito si è scoperto che proveniva da un componente chiamato UnRAR, che gestisce l'estrazione dei file [6].
Questo tipo di vulnerabilità spesso non può essere completamente segnalato, poiché ci sono troppi prodotti che utilizzano i componenti vulnerabili. Pertanto, anche quando i sysadmin conoscono tutti i prodotti in uso e li monitorano attentamente sulle fonti comuni di divulgazione, c'è ancora molto spazio per un attaccante.
Demo
Esaminiamo da vicino un caso in cui un componente vulnerabile causa problemi su un host. Utilizzeremo una vecchia versione di Total Commander [7] che contiene un UnRAR.DLL [8] affetto da CVE-2012-6706 [5]. Si noti che questo CVE non riguarda Total Commander. I power user con privilegi di amministrazione utilizzano spesso questo software, quindi sfruttare con successo la vulnerabilità può aiutare un aggressore a utilizzare un host per prendere il controllo della rete di un'organizzazione.
Specifiche della demo:
- Sistema operativo: Windows 10 1909 x64.
- Software: Total Commander v8.01 x86 con libreria UnRAR v4.20.1.488.
- I dati creati dal gruppo di ricerca sulla sicurezza di Google su Exploit-DB [9].
La corruzione della memoria avviene quando Total Commander utilizza UnRAR.DLL per estrarre un file appositamente creato. L'attaccante può quindi eseguire codice arbitrario sul computer con i privilegi dell'utente di Total Commander. Gli aggressori più sofisticati possono installare altri file apparentemente legittimi ma vulnerabili su tutto il computer per ulteriori attacchi.

Le versioni recenti di Total Commander non presentano questa vulnerabilità, poiché utilizzano una versione più recente di UnRAR.DLL. Quindi, come sempre, gli utenti dovrebbero tenere aggiornati i loro software, anche se non ci sono rapporti di divulgazione su di loro, e soprattutto se non hanno eseguito un aggiornamento da molto tempo (questa versione di Total Commander è stata rilasciata nel 2012).
Conclusione
Le vulnerabilità Software consentono agli aggressori di accedere o prendere il controllo delle risorse organizzative. Due metodi comuni per rilevare le vulnerabilità sono la scansione basata sulla rete e quella basata sull'host. Di solito operano a un livello di astrazione elevato e possono perdere informazioni importanti, a causa dei cambiamenti nell'ambiente del computer.
La tecnologia di file-based vulnerability assessment OPSWATopera a livello di file per avvisare i sysadmin di installatori e componenti software vulnerabili che entrano ed escono dall'organizzazione, riducendo il rischio di sicurezza sia prima della distribuzione che durante l'utilizzo. La tecnologia è stata integrata nei prodotti MetaDefender come Core, Cloud API, Drive, Kiosk, ecc. per coprire un'ampia gamma di casi d'uso.
Il rilevamento delle vulnerabilità file per file è diverso dai metodi tradizionali e presenta nuove potenzialità, nuovi casi d'uso e sfide. Noi di OPSWAT miglioriamo costantemente la nostra tecnologia per superare le sfide e aiutare a proteggere le reti critiche delle organizzazioni dalle minacce alla sicurezza informatica in continua evoluzione.
Riferimenti
[1] "Vulnerabilità (informatica)", [Online].
[2] "Vulnerability scanner", [Online].
[3] "MetaDefender - Advanced Threat Prevention Platform", [Online].
[4] "CVE-2019-12280 - MetaDefender," [Online].
[5] "CVE-2012-6706 - MetaDefender," [Online].
[6] "Issue 1286 - VMSF_DELTA filter in unrar allows arbitrary memory write - Project Zero", [Online].
[7] "Total Commander - home", [Online].
[8] "WinRAR archiver - RARLAB", [Online].
[9] "unrar 5.40 - 'VMSF_DELTA' Filter Arbitrary Memory Write", [Online].