Тестирование крупных языковых моделей для обнаружения уязвимостей в программном обеспечении на нескольких языках
Benchmarking Large Language Models for Multi-Language Software Vulnerability Detection
March 3, 2025
Авторы: Ting Zhang, Chengran Yang, Yindu Su, Martin Weyssow, Hung Nguyen, Tan Bui, Hong Jin Kang, Yikun Li, Eng Lieh Ouh, Lwin Khin Shar, David Lo
cs.AI
Аннотация
Последние достижения в области генеративного искусственного интеллекта привели к широкому распространению больших языковых моделей (LLM) в разработке программного обеспечения, что позволило решить множество давних проблем. Однако всестороннее исследование, изучающее возможности LLM в обнаружении уязвимостей программного обеспечения (SVD), являющемся ключевым аспектом безопасности ПО, на данный момент отсутствует. Существующие исследования в основном сосредоточены на оценке LLM с использованием наборов данных на C/C++ и обычно исследуют лишь одну или две стратегии среди инженерии промптов, настройки инструкций и тонкой настройки классификации последовательностей для открытых LLM. В результате существует значительный пробел в знаниях относительно эффективности различных LLM в обнаружении уязвимостей в различных языках программирования. Чтобы устранить этот пробел, мы представляем всестороннее эмпирическое исследование, оценивающее производительность LLM в задаче SVD. Мы собрали обширный набор данных, включающий 8 260 уязвимых функций на Python, 7 505 на Java и 28 983 на JavaScript. Мы оцениваем пять открытых LLM с использованием нескольких подходов, включая инженерию промптов, настройку инструкций и тонкую настройку классификации последовательностей. Эти LLM сравниваются с пятью тонко настроенными небольшими языковыми моделями и двумя открытыми инструментами статического тестирования безопасности приложений. Кроме того, мы исследуем два пути для улучшения производительности LLM в SVD: а) С точки зрения данных: повторное обучение моделей с использованием сбалансированных наборов данных, подвергнутых даунсэмплингу. б) С точки зрения модели: изучение методов ансамблевого обучения, объединяющих предсказания нескольких LLM. Наши всесторонние эксперименты показывают, что SVD остается сложной задачей для LLM. Это исследование предоставляет глубокое понимание роли LLM в SVD и предлагает практические рекомендации для будущих достижений в использовании генеративного ИИ для улучшения практик обеспечения безопасности программного обеспечения.
English
Recent advancements in generative AI have led to the widespread adoption of
large language models (LLMs) in software engineering, addressing numerous
long-standing challenges. However, a comprehensive study examining the
capabilities of LLMs in software vulnerability detection (SVD), a crucial
aspect of software security, is currently lacking. Existing research primarily
focuses on evaluating LLMs using C/C++ datasets. It typically explores only one
or two strategies among prompt engineering, instruction tuning, and sequence
classification fine-tuning for open-source LLMs. Consequently, there is a
significant knowledge gap regarding the effectiveness of diverse LLMs in
detecting vulnerabilities across various programming languages. To address this
knowledge gap, we present a comprehensive empirical study evaluating the
performance of LLMs on the SVD task. We have compiled a comprehensive dataset
comprising 8,260 vulnerable functions in Python, 7,505 in Java, and 28,983 in
JavaScript. We assess five open-source LLMs using multiple approaches,
including prompt engineering, instruction tuning, and sequence classification
fine-tuning. These LLMs are benchmarked against five fine-tuned small language
models and two open-source static application security testing tools.
Furthermore, we explore two avenues to improve LLM performance on SVD: a) Data
perspective: Retraining models using downsampled balanced datasets. b) Model
perspective: Investigating ensemble learning methods that combine predictions
from multiple LLMs. Our comprehensive experiments demonstrate that SVD remains
a challenging task for LLMs. This study provides a thorough understanding of
the role of LLMs in SVD and offers practical insights for future advancements
in leveraging generative AI to enhance software security practices.Summary
AI-Generated Summary