Transformer-basierte Schwachstellenerkennung im Code zur Bearbeitungszeit: Zero-Shot, Few-Shot oder Feinabstimmung?
Transformer-based Vulnerability Detection in Code at EditTime: Zero-shot, Few-shot, or Fine-tuning?
May 23, 2023
Autoren: Aaron Chan, Anant Kharkar, Roshanak Zilouchian Moghaddam, Yevhen Mohylevskyy, Alec Helyar, Eslam Kamal, Mohamed Elkamhawy, Neel Sundaresan
cs.AI
Zusammenfassung
Software-Schwachstellen verursachen Unternehmen erhebliche Kosten. Trotz umfangreicher Anstrengungen in Forschung und Entwicklung von Methoden zur Erkennung von Software-Schwachstellen setzen unentdeckte Schwachstellen Software-Besitzer und -Nutzer weiterhin einem Risiko aus. Viele derzeitige Methoden zur Schwachstellenerkennung erfordern, dass Code-Snippets kompilierbar und ausführbar sind, bevor eine Erkennung versucht wird. Dies führt leider zu einer langen Latenzzeit zwischen dem Zeitpunkt, an dem eine Schwachstelle eingeführt wird, und dem Zeitpunkt, an dem sie behoben wird, was die Kosten für die Behebung einer Schwachstelle erheblich erhöhen kann. Wir erkennen, dass die aktuellen Fortschritte im Bereich des maschinellen Lernens genutzt werden können, um anfällige Codemuster in syntaktisch unvollständigen Code-Snippets zu erkennen, während der Entwickler den Code schreibt, also zur EditTime. In diesem Artikel präsentieren wir ein praktisches System, das Deep Learning auf einem umfangreichen Datensatz von anfälligen Codemustern nutzt, um komplexe Manifestationen von mehr als 250 Schwachstellentypen zu erlernen und anfällige Codemuster zur EditTime zu erkennen. Wir diskutieren Zero-Shot-, Few-Shot- und Fine-Tuning-Ansätze auf dem neuesten Stand der Technik vortrainierter Large Language Models (LLMs). Wir zeigen, dass unser Ansatz im Vergleich zu den derzeit besten Modellen zur Schwachstellenerkennung den Stand der Technik um 10 % verbessert. Wir evaluieren unseren Ansatz auch zur Erkennung von Schwachstellen in automatisch generiertem Code durch Code-LLMs. Die Auswertung auf einem Benchmark von Hochrisiko-Code-Szenarien zeigt eine Reduzierung der Schwachstellen um bis zu 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.