Monday, March 31, 2025

LLM в анализе программного кода

Программное обеспечение подвержено уязвимостям безопасности. Инструменты анализа программ для их обнаружения имеют ограниченную эффективность на практике из-за их зависимости от маркированных человеком спецификаций. Большие языковые модели (или LLM) показали впечатляющие возможности генерации кода, но они не могут выполнять сложные рассуждения по коду для обнаружения таких уязвимостей, особенно потому, что эта задача требует анализа всего репозитория. Мы предлагаем IRIS, нейросимволический подход, который систематически объединяет LLM со статическим анализом для выполнения рассуждений всего репозитория для обнаружения уязвимостей безопасности. В частности, IRIS использует LLM для вывода спецификаций и выполнения контекстного анализа, устраняя необходимость в человеческих спецификациях и инспекции. Для оценки мы курируем новый набор данных CWE-Bench-Java, включающий 120 вручную проверенных уязвимостей безопасности в реальных проектах Java. Современный инструмент статического анализа CodeQL обнаруживает только 27 из этих уязвимостей, тогда как IRIS с GPT-4 обнаруживает 55 (+28) и улучшает средний показатель ложных срабатываний CodeQL на 5%. Кроме того, IRIS обнаруживает 4 ранее неизвестные уязвимости, которые не могут быть обнаружены существующими инструментами. IRIS доступен публично по адресу https://github.com/iris-sast/iris - IRIS: LLM-ASSISTED STATIC ANALYSIS FOR DETECTING SECURITY VULNERABILITIES

См. также другие публикации, посвященные LLM

No comments: