LLM4SAST segnala difetti in sei analizzatori di codice per Java e Rust
In parole semplici
Il paper presenta un framework per testare strumenti software che cercano problemi di sicurezza nel codice. Un modello linguistico modifica programmi di esempio in tre modi: ne conserva il comportamento, corregge una vulnerabilità oppure ne aggiunge una.
Il framework controlla le modifiche e confronta le segnalazioni dello scanner con quelle attese. Su sei strumenti per Java e Rust, i ricercatori hanno segnalato 66 difetti distinti.
La tabella dettagliata degli stati elenca 12 difetti corretti e 24 confermati, ma l’abstract e il testo sui contributi dicono che 32 erano confermati o corretti. Le cifre sono in conflitto; 30 segnalazioni erano ancora in attesa.
La ricerca
Se i test generano modifiche al codice troppo limitate o non valide, una segnalazione mancata o in più dello scanner può essere scambiata per un difetto del test.
Come si può coprire una varietà di modifiche al codice controllando al tempo stesso che ogni programma modificato rispetti davvero il cambiamento previsto?
LLM4SAST fa creare a un modello linguistico tre tipi di modifiche al codice, controlla che corrispondano a quelle previste e poi testa gli scanner confrontando le segnalazioni risultanti.
LLM4SAST registra le segnalazioni di uno scanner e poi usa un modello linguistico per conservare il comportamento, correggere una vulnerabilità oppure aggiungerne una.
I controlli di compilazione, esecuzione e analisi dinamica filtrano le varianti prima che le nuove segnalazioni dello scanner vengano confrontate con gli schemi attesi.
Su sei strumenti per Java e Rust, i ricercatori hanno segnalato 66 difetti distinti. La tabella dettagliata degli stati elenca 12 difetti corretti e 24 confermati, ma l’abstract e il testo sui contributi riportano 32 difetti confermati o corretti: la fonte dà quindi cifre in conflitto.
Altre 30 segnalazioni erano in attesa. I risultati mostrano che l’approccio ha fatto emergere possibili difetti negli strumenti testati.
La valutazione ha riguardato sei strumenti selezionati per Java e Rust e le relative regole di sicurezza. Alcune varianti non valide potrebbero essere rimaste e il raggruppamento ha lasciato alcune varianti senza analisi; sono quindi ancora possibili segnalazioni errate o difetti non rilevati.
Analisi
Dettagli
- Autori del paper originale
- Huaien Zhang, Yu Pei, Hao Chen, Shin Hwei Tan
- Inviato ad arXiv
- Licenza
- CC BY 4.0