Transformer-gebaseerde kwetsbaarheidsdetectie in code tijdens het bewerken: Zero-shot, Few-shot, of Fine-tuning?
Transformer-based Vulnerability Detection in Code at EditTime: Zero-shot, Few-shot, or Fine-tuning?
May 23, 2023
Auteurs: Aaron Chan, Anant Kharkar, Roshanak Zilouchian Moghaddam, Yevhen Mohylevskyy, Alec Helyar, Eslam Kamal, Mohamed Elkamhawy, Neel Sundaresan
cs.AI
Samenvatting
Softwarekwetsbaarheden brengen bedrijven aanzienlijke kosten met zich mee. Ondanks uitgebreide inspanningen in onderzoek en ontwikkeling van methoden voor het detecteren van softwarekwetsbaarheden, blijven onopgemerkte kwetsbaarheden software-eigenaren en gebruikers in gevaar brengen. Veel huidige methoden voor het detecteren van kwetsbaarheden vereisen dat codefragmenten kunnen worden gecompileerd en gebouwd voordat detectie wordt geprobeerd. Dit introduceert helaas een lange latentie tussen het moment waarop een kwetsbaarheid wordt geïntroduceerd en het moment waarop deze wordt verwijderd, wat de kosten voor het oplossen van een kwetsbaarheid aanzienlijk kan verhogen. Wij erkennen dat de huidige vooruitgang in machine learning kan worden gebruikt om kwetsbare code-patronen te detecteren in syntactisch onvolledige codefragmenten terwijl de ontwikkelaar de code schrijft, op het moment van bewerken (EditTime). In dit artikel presenteren we een praktisch systeem dat gebruikmaakt van deep learning op een grootschalige dataset van kwetsbare code-patronen om complexe manifestaties van meer dan 250 kwetsbaarheidstypen te leren en kwetsbare code-patronen te detecteren tijdens het bewerken. We bespreken zero-shot, few-shot en fine-tuning benaderingen op state-of-the-art vooraf getrainde Large Language Models (LLMs). We laten zien dat onze aanpak in vergelijking met state-of-the-art kwetsbaarheidsdetectiemodellen de stand van de techniek met 10% verbetert. We evalueren ook onze aanpak om kwetsbaarheden te detecteren in automatisch gegenereerde code door code-LLMs. Evaluatie op een benchmark van hoogrisico codescenario's toont een reductie van kwetsbaarheden tot wel 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.