Rilevamento delle Vulnerabilità nel Codice basato su Transformer al momento della Modifica: Zero-shot, Few-shot o Fine-tuning?
Transformer-based Vulnerability Detection in Code at EditTime: Zero-shot, Few-shot, or Fine-tuning?
May 23, 2023
Autori: Aaron Chan, Anant Kharkar, Roshanak Zilouchian Moghaddam, Yevhen Mohylevskyy, Alec Helyar, Eslam Kamal, Mohamed Elkamhawy, Neel Sundaresan
cs.AI
Abstract
Le vulnerabilità del software comportano costi significativi per le aziende. Nonostante gli sforzi estesi nella ricerca e nello sviluppo di metodi per il rilevamento delle vulnerabilità del software, le vulnerabilità non individuate continuano a mettere a rischio i proprietari e gli utenti del software. Molti degli attuali metodi di rilevamento delle vulnerabilità richiedono che i frammenti di codice possano essere compilati e costruiti prima di tentare il rilevamento. Questo, purtroppo, introduce una lunga latenza tra il momento in cui una vulnerabilità viene introdotta e il momento in cui viene rimossa, il che può aumentare sostanzialmente il costo di riparazione di una vulnerabilità. Riconosciamo che i progressi attuali nel machine learning possono essere utilizzati per rilevare modelli di codice vulnerabile in frammenti di codice sintatticamente incompleti mentre lo sviluppatore sta scrivendo il codice, in tempo reale (EditTime). In questo articolo presentiamo un sistema pratico che sfrutta il deep learning su un ampio dataset di modelli di codice vulnerabile per apprendere manifestazioni complesse di oltre 250 tipi di vulnerabilità e rilevare modelli di codice vulnerabile in tempo reale. Discutiamo approcci zero-shot, few-shot e di fine-tuning su modelli linguistici pre-addestrati all'avanguardia (Large Language Models, LLMs). Dimostriamo che, rispetto ai modelli di rilevamento delle vulnerabilità all'avanguardia, il nostro approccio migliora lo stato dell'arte del 10%. Valutiamo inoltre il nostro approccio per rilevare vulnerabilità nel codice generato automaticamente da LLMs. La valutazione su un benchmark di scenari di codice ad alto rischio mostra una riduzione delle vulnerabilità fino al 90%.
English
Software vulnerabilities bear enterprises significant costs. Despite
extensive efforts in research and development of software vulnerability
detection methods, uncaught vulnerabilities continue to put software owners and
users at risk. Many current vulnerability detection methods require that code
snippets can compile and build before attempting detection. This,
unfortunately, introduces a long latency between the time a vulnerability is
injected to the time it is removed, which can substantially increases the cost
of fixing a vulnerability. We recognize that the current advances in machine
learning can be used to detect vulnerable code patterns on syntactically
incomplete code snippets as the developer is writing the code at EditTime. In
this paper we present a practical system that leverages deep learning on a
large-scale data set of vulnerable code patterns to learn complex
manifestations of more than 250 vulnerability types and detect vulnerable code
patterns at EditTime. We discuss zero-shot, few-shot, and fine-tuning
approaches on state of the art pre-trained Large Language Models (LLMs). We
show that in comparison with state of the art vulnerability detection models
our approach improves the state of the art by 10%. We also evaluate our
approach to detect vulnerability in auto-generated code by code LLMs.
Evaluation on a benchmark of high-risk code scenarios shows a reduction of up
to 90% vulnerability reduction.