ANVIL: Anomaly-based Vulnerability Identification without Labelled Training Data
Il documento introduce ANVIL, un framework di rilevamento delle vulnerabilità non supervisionato che sfrutta i Large Language Models per identificare anomalie nel codice attraverso la ricostruzione mascherata e un meccanismo di punteggio ibrido, dimostrando prestazioni superiori rispetto ai rilevatori supervisionati e scoprendo con successo vulnerabilità precedentemente sconosciute quando integrato con i fuzzer.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Immagina di cercare un singolo mattone, leggermente rotto, in un muro enorme composto da milioni di mattoni perfetti.
Il Problema: Il dilemma del "Lancio della moneta"
Di solito, per trovare questi mattoni rotti, hai bisogno di un team di esperti che abbiano studiato migliaia di esempi di oggetti rotti e abbiano imparato esattamente che aspetto hanno. È così che funzionano la maggior parte dei programmi informatici attuali: sono "apprendisti supervisionati". Ma c'è un grande problema: non abbiamo abbastanza esempi di codice rotto per insegnargli correttamente.
Recentemente, abbiamo avuto questi modelli di IA super intelligenti (chiamati Large Language Models, o LLM) che hanno letto quasi ogni pezzo di codice mai scritto. Potresti pensare: "Ottimo! Hanno visto tutto, quindi devono essere in grado di individuare gli errori". Ma sorprendentemente, quando chiedi loro semplicemente: "Questa riga di codice è rotta?", le loro prestazioni non sono migliori di un lancio di moneta: sono bravissimi a scrivere codice, ma terribili nel criticarlo, perché sono stati addestrati per imitare i pattern, non per individuare gli errori.
La Soluzione: ANVIL (Il gioco del "Trova le differenze")
I ricercatori dietro questo articolo, ANVIL, hanno deciso di ribaltare la situazione. Invece di cercare di insegnare all'IA che aspetto abbia un codice "rotto", hanno chiesto: "Cosa pensa l'IA che una riga di codice normale dovrebbe essere?".
Ecco come funziona ANVIL, usando una semplice analogia:
- Il Gioco del Mascheramento: Immagina di prendere una frase da una storia e coprire una riga con un pennarello nero. Poi chiedi all'IA di indovinare quale fosse la riga nascosta, basandosi solo sulle frasi prima e dopo di essa.
- L'Aspettativa: Se la riga nascosta è una riga di codice normale e standard, l'IA probabilmente indovinerà correttamente (o molto vicino ad esso) perché ha visto quel pattern un milione di volte.
- L'Anomalia: Se la riga nascosta è una riga di codice "vulnerabile" (rotta), è probabile che sia strana o insolita rispetto al resto dei dati di addestramento. L'IA farà fatica a indovinarla. Potrebbe indovinare qualcosa di totalmente diverso, o essere molto incerta.
- Il Punteggio: ANVIL misura quanto la previsione dell'IA differisca dalla riga originale. Se la previsione è molto lontana, o se l'IA sembra confusa, ANVIL segnala quella riga come "anomala" (sospetta).
Il Detective "Ibrido"
I ricercatori si sono resi conto che misurare solo la differenza non è sufficiente. A volte una piccola differenza (come cambiare > in >=) è un errore enorme, ma l'IA potrebbe non considerarlo un grosso problema. Così, hanno creato un "Punteggio Ibrido" che agisce come un detective con quattro diversi strumenti:
- Corrispondenza Esatta: L'IA ha ottenuto il risultato corretto al 100%? Se no, è un segnale di allarme.
- Misuratore di Confusione: Quanto era incerta l'IA? Se l'IA sta esitando, il codice potrebbe essere strano.
- Controllo della Complessità: La riga di codice è eccessivamente complicata? Il codice complesso è spesso dove si nascondono gli errori.
- Il Punteggio di "Loss": Una misura matematica di quanto l'IA sia stata "sorpresa" dalla riga originale.
I Risultati: Trovare l'ago nel pagliaio
Il team ha testato ANVIL su un enorme dataset di codice reale.
- Battere gli Esperti: Hanno confrontato ANVIL con i migliori strumenti esistenti che richiedono dati di addestramento. Nonostante ANVIL non abbia utilizzato alcun dato di addestramento, ha trovato vulnerabilità due volte più accuratamente rispetto agli altri.
- Il Trucco del Contesto: Hanno scoperto che dare all'IA l'intero file da leggere era in realtà fonte di confusione (come cercare un ago in un pagliaio guardando l'intero fienile). Invece, ANVIL utilizza un approccio di "contesto intelligente": guarda solo il blocco specifico di codice (la funzione) che circonda la riga sospetta. Questo lo ha reso più veloce e accurato.
- Successo nel Mondo Reale: Per dimostrare che funziona nel mondo reale, hanno collegato ANVIL a un "fuzzer" (uno strumento che cerca di rompere il software lanciandogli contro dati casuali). ANVIL ha aiutato il fuzzer a trovare due nuove vulnerabilità precedentemente sconosciute, una delle quali era così seria da ottenere un ID di sicurezza ufficiale (CVE).
Il Punto Fondamentale
ANVIL dimostra che non è necessario insegnare all'IA cosa sia il "male" per trovarlo. Devi solo chiedere all'IA cosa sia il "normale". Quando il codice non si adatta al pattern "normale", è probabile che sia rotto. È un modo più intelligente, veloce e generale per trovare falle di sicurezza senza aver bisogno di una massiccia libreria di errori passati da cui imparare.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.