Migliorare il rilevamento delle vulnerabilità nel software
Un nuovo metodo migliora l'accuratezza nell'identificare le vulnerabilità del software.
― 5 leggere min
Indice
Trovare difetti o debolezze nel software è fondamentale per mantenere la sua qualità e sicurezza. Questi difetti possono portare a problemi di sicurezza, poiché possono essere sfruttati dagli attaccanti. Molti di questi difetti sorgono a causa del riutilizzo del codice in diversi prodotti software, soprattutto quando si utilizzano ampiamente librerie di terze parti.
Le Vulnerabilità spesso ricompaiono nelle nuove versioni del software perché gli sviluppatori potrebbero non correggere tutte le lacune in modo efficace. Gli esperti di cybersicurezza hanno bisogno di modi per identificare queste vulnerabilità ripetute, in particolare quelle ben conosciute, spesso chiamate vulnerabilità a 1 giorno o N giorni. Rilevare questi problemi diventa essenziale per mantenere il software sicuro.
Purtroppo, i metodi esistenti per la rilevazione delle vulnerabilità non sempre funzionano bene. Molti metodi si basano sul controllo se esiste una patch per una vulnerabilità piuttosto che confermare se una vulnerabilità è effettivamente presente. Inoltre, spesso inferiscono le firme di vulnerabilità direttamente dal codice binario, il che può portare a imprecisioni. Questo articolo spiega un nuovo approccio per estrarre e identificare vulnerabilità utilizzando queste firme binarie in modo più accurato.
Le Sfide nella Rilevazione delle Vulnerabilità
Gli esperti umani possono analizzare molte vulnerabilità esistenti e imparare a identificare difetti simili nel codice. Tuttavia, con la vastità del codice disponibile, è difficile per un umano rivedere tutto manualmente. Questo crea la necessità di soluzioni automatizzate per individuare potenziali vulnerabilità direttamente o per restringere il codice per una revisione umana.
Una sfida significativa è che il codice binario, che è il codice a livello macchina che i computer eseguono, è molto complicato da comprendere per gli esseri umani. È essenziale fare affidamento su metodi automatizzati per svolgere questo compito al fine di ridurre l'errore umano e migliorare l'efficienza.
Ci sono tipicamente tre tipi principali di ricerca in quest'area:
Rilevazione della Somiglianza del Codice Binario: Questo comporta il confronto di campioni binari per trovare i frammenti di codice più simili in un database di vulnerabilità note. Questo metodo, tuttavia, è spesso limitato perché può produrre molti falsi positivi e non indica Istruzioni specifiche collegate alle vulnerabilità.
Rilevazione dell'Esistenza di Patch: Questo approccio controlla se è stata applicata una patch a un pezzo di codice. Tuttavia, solo perché non c'è una patch non significa che non ci sia una vulnerabilità presente. Molti codici vulnerabili potrebbero esistere in versioni precedenti che non sono ancora state corrette.
Rilevazione delle Firme delle Vulnerabilità: Questo metodo identifica firme specifiche nel codice binario che corrispondono a vulnerabilità note. Tuttavia, confrontare direttamente versioni binarie può portare a considerare istruzioni irrilevanti come parte della firma di vulnerabilità.
Per migliorare l'accuratezza di questi metodi, è necessario un nuovo approccio che possa rilevare efficacemente l'esistenza di vulnerabilità basate su firme più precise.
Un Nuovo Approccio alla Rilevazione delle Vulnerabilità
L'approccio proposto mira a generare firme di vulnerabilità accurate e dettagliate. Questo nuovo metodo si concentra sull'estrazione di istruzioni binarie specifiche relative alle vulnerabilità per creare firme di vulnerabilità definitive.
Passo 1: Raccolta Dati
Il primo passo prevede la raccolta di dati su vulnerabilità note, inclusa l'informazione sui corrispondenti file di codice sorgente. Queste informazioni includono le funzioni colpite dalle vulnerabilità, quali versioni sono state impattate e quali versioni hanno ricevuto patch.
Passo 2: Individuazione delle Istruzioni Binari Correlate
Per migliorare l'accuratezza, l'approccio estrae istruzioni dal codice sorgente relative alle vulnerabilità e le abbina con le corrispondenti istruzioni binarie. Questo passaggio aiuta a identificare quali istruzioni binarie riguardano le vulnerabilità senza includere codice irrilevante.
Passo 3: Costruzione di Firme Contestualmente Consapevoli
Una volta identificate le istruzioni binarie rilevanti, l'approccio costruisce firme che sono consapevoli del contesto in cui si trovano. Queste firme catturano non solo le istruzioni vulnerabili ma anche il loro contesto circostante, il che aiuta a ridurre i falsi positivi durante i match successivi.
Passo 4: Abbinamento delle Firme
L'ultimo passaggio comporta il controllo di un dato binario per l'esistenza delle firme generate. Questo metodo non cerca solo corrispondenze esatte ma valuta anche il contesto attorno alle istruzioni per identificare accuratamente le vulnerabilità.
Valutazione del Metodo
L'efficacia di questo nuovo approccio è stata testata utilizzando vari progetti open source, ottenendo prestazioni convincenti rispetto agli strumenti esistenti. Il metodo ha mostrato un'accuratezza migliorata nell'identificare vulnerabilità sia in codice noto che in codice reale.
Confronto con Strumenti Esistenti
Quando testato contro strumenti popolari, questo nuovo approccio ha superato i precedenti offrendo una rilevazione delle vulnerabilità più accurata riducendo al contempo i falsi positivi. Gli utenti del metodo hanno ricevuto spiegazioni sui match effettuati, il che è utile per comprendere perché un pezzo di codice è stato segnalato come potenzialmente vulnerabile.
Test nel Mondo Reale
Il metodo è stato ulteriormente convalidato utilizzando firmware reali di dispositivi IoT. Questi dispositivi spesso contengono vulnerabilità note a causa del riutilizzo di componenti software. I risultati hanno dimostrato che questo metodo può identificare con successo vulnerabilità in situazioni pratiche.
I Tipi di Vulnerabilità Rilevate
L'analisi ha rivelato vari tipi di vulnerabilità basate sulla Common Weakness Enumeration (CWE). Questa classificazione aiuta a comprendere le diverse tipologie di vulnerabilità che sono apparse nel software testato.
I principali tipi di vulnerabilità rilevate includono:
- Restrizioni Improprie sulle Operazioni di Buffer: Una vulnerabilità comune in cui le operazioni sui buffer di memoria non sono controllate correttamente.
- Uso Dopo la Liberazione: Un difetto che si verifica quando un programma continua a utilizzare la memoria dopo che è stata liberata, il che può portare a comportamenti imprevedibili.
Conclusione
Rilevare le vulnerabilità nel software rimane un compito critico per garantire sicurezza e qualità. Con l'aumento della dipendenza da codice e librerie di terze parti, le possibilità che queste vulnerabilità compaiano ripetutamente in diverse versioni del software aumentano.
Il nuovo approccio discusso qui offre una soluzione promettente, generando firme binarie precise per vulnerabilità note. Concentrandosi su istruzioni specifiche e il loro contesto, questo metodo non solo migliora l'accuratezza, ma aiuta anche a comprendere le ragioni dietro la rilevazione delle vulnerabilità.
Il lavoro futuro potrebbe coinvolgere il perfezionamento di questi metodi e l'estensione della loro applicabilità a diversi paradigmi di programmazione e architetture hardware. In questo modo, possiamo migliorare la sicurezza del software in generale, rendendolo più sicuro per utenti e organizzazioni.
Titolo: VulMatch: Binary-level Vulnerability Detection Through Signature
Estratto: Similar vulnerability repeats in real-world software products because of code reuse, especially in wildly reused third-party code and libraries. Detecting repeating vulnerabilities like 1-day and N-day vulnerabilities is an important cyber security task. Unfortunately, the state-of-the-art methods suffer from poor performance because they detect patch existence instead of vulnerability existence and infer the vulnerability signature directly from binary code. In this paper, we propose VulMatch to extract precise vulnerability-related binary instructions to generate the vulnerability-related signature. VulMatch detects vulnerability existence based on binary signatures. Unlike previous approaches, VulMatch accurately locates vulnerability-related instructions by utilizing source and binary codes. Our experiments were conducted using over 1000 vulnerable instances across seven open-source projects. VulMatch significantly outperformed the baseline tools Asm2vec and Palmtree. Besides the performance advantages over the baseline tools, VulMatch offers a better feature by providing explainable reasons during vulnerability detection. Our empirical studies demonstrate that VulMatch detects fine-grained vulnerability that the state-of-the-art tools struggle with. Our experiment on commercial firmware demonstrates VulMatch is able to find vulnerabilities in real-world scenario.
Autori: Zian Liu, Lei Pan, Chao Chen, Ejaz Ahmed, Shigang Liu, Jun Zhang, Dongxi Liu
Ultimo aggiornamento: 2024-01-17 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2308.00288
Fonte PDF: https://arxiv.org/pdf/2308.00288
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.