ChatPaper.aiChatPaper

Обнаружение уязвимостей в коде на основе Transformer во время редактирования: Нулевой, малый или тонкий подход к обучению?

Transformer-based Vulnerability Detection in Code at EditTime: Zero-shot, Few-shot, or Fine-tuning?

May 23, 2023
Авторы: Aaron Chan, Anant Kharkar, Roshanak Zilouchian Moghaddam, Yevhen Mohylevskyy, Alec Helyar, Eslam Kamal, Mohamed Elkamhawy, Neel Sundaresan
cs.AI

Аннотация

Уязвимости в программном обеспечении наносят предприятиям значительные убытки. Несмотря на обширные усилия в исследованиях и разработке методов обнаружения уязвимостей, невыявленные уязвимости продолжают подвергать риску владельцев и пользователей программного обеспечения. Многие современные методы обнаружения уязвимостей требуют, чтобы фрагменты кода могли быть скомпилированы и собраны перед попыткой обнаружения. К сожалению, это вносит значительную задержку между моментом внедрения уязвимости и её устранением, что может существенно увеличить стоимость исправления уязвимости. Мы признаем, что современные достижения в области машинного обучения могут быть использованы для обнаружения уязвимых паттернов кода в синтаксически неполных фрагментах кода в процессе их написания разработчиком, то есть на этапе редактирования (EditTime). В данной статье мы представляем практическую систему, которая использует глубокое обучение на крупномасштабном наборе данных уязвимых паттернов кода для изучения сложных проявлений более чем 250 типов уязвимостей и обнаружения уязвимых паттернов кода на этапе редактирования. Мы обсуждаем подходы с нулевым обучением (zero-shot), малым количеством примеров (few-shot) и тонкой настройкой (fine-tuning) на современных предварительно обученных больших языковых моделях (LLMs). Мы показываем, что по сравнению с современными моделями обнаружения уязвимостей наш подход улучшает текущие показатели на 10%. Мы также оцениваем наш подход для обнаружения уязвимостей в автоматически сгенерированном коде с использованием языковых моделей. Оценка на наборе высокорисковых сценариев кода показывает снижение уязвимостей до 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.
PDF11December 15, 2024