Охота на уязвимости: как большие языковые модели учатся на ошибках прошлого

Автор: Денис Аветисян


Новый подход позволяет повысить точность обнаружения уязвимостей в программном обеспечении, используя исторические данные и спецификации безопасности.

🚀 Квантовые новости

Подключайся к потоку квантовых мемов, теорий и откровений из параллельной вселенной.
Только сингулярные инсайты — никакой скуки.

Присоединиться к каналу
В системах поиска и извлечения знаний, эффективность обнаружения уязвимостей демонстрирует перевернутую U-образную зависимость от порога отбора знаний, где спецификации общего характера (Specrep) и детализированные случаи уязвимостей (VulSpec) достигают оптимального баланса, а случаи CVE (NVD), преобразованные в специфические спецификации, лишь дополняют этот процесс.
В системах поиска и извлечения знаний, эффективность обнаружения уязвимостей демонстрирует перевернутую U-образную зависимость от порога отбора знаний, где спецификации общего характера (Specrep) и детализированные случаи уязвимостей (VulSpec) достигают оптимального баланса, а случаи CVE (NVD), преобразованные в специфические спецификации, лишь дополняют этот процесс.

В статье представлен VulInstruct, метод, использующий знания, полученные из баз данных CVE и анализа патчей, для улучшения возможностей больших языковых моделей в области поиска уязвимостей.

Несмотря на значительный прогресс больших языковых моделей (LLM) в понимании кода, их эффективность в обнаружении уязвимостей остается ограниченной, особенно в различении уязвимого и исправленного кода. В статье ‘Specification-Guided Vulnerability Detection with Large Language Models’ предлагается подход VulInstruct, использующий исторические данные об уязвимостях и спецификации безопасности для повышения точности и обоснованности LLM. VulInstruct строит базу знаний спецификаций, извлекая общие принципы безопасного поведения и специфические для конкретных проектов нарушения, что позволяет моделям рассуждать на основе ожидаемого поведения, а не полагаться на поверхностные закономерности. Может ли данный подход не только улучшить автоматизированное обнаружение уязвимостей, но и способствовать созданию более безопасного программного обеспечения в будущем?


Эволюция Уязвимостей: От Сигнатур к Смыслу

Традиционные методы обнаружения уязвимостей, основанные на известных сигнатурах, ограничены в борьбе с новыми векторами атак. Это особенно критично в условиях постоянно развивающегося ландшафта киберугроз, где злоумышленники активно используют инновационные методы. Растущая сложность кодовых баз требует интеллектуальных и адаптивных решений. Необходимо анализировать код глубже, учитывая контекст его работы. Существующие методы часто упускают тонкие спецификации безопасности, неявно заложенные в знаниях разработчиков, приводя к ложноотрицательным результатам. В конечном счете, каждая система обречена на увядание, но искусство заключается в том, чтобы этот процесс был эволюционным.

Исследование конкретного случая обнаружения уязвимости CVE-2022-1533 демонстрирует эффективность предложенного подхода.
Исследование конкретного случая обнаружения уязвимости CVE-2022-1533 демонстрирует эффективность предложенного подхода.

Обучение на Спецификациях: Новый Взгляд на LLM

Метод `VulInstruct` предлагает новый подход к обучению моделей обнаружения уязвимостей, основанный на извлечении и применении спецификаций безопасности из исторических данных. В отличие от традиционных методов, требующих ручной разработки спецификаций, `VulInstruct` автоматизирует этот процесс, используя информацию о ранее обнаруженных и исправленных ошибках. Применение `Patch Analysis` позволяет `VulInstruct` выявлять обобщенные `General Security Specifications`, применимые к различным проектам. Выделенные спецификации не зависят от языка программирования или платформы, обеспечивая их широкую применимость. Такой подход значительно повышает эффективность LLM-based систем, позволяя им глубже понимать принципы безопасного кодирования и выявлять новые уязвимости.

VulInstruct представляет собой комплексную систему, предназначенную для обучения моделей обнаружения уязвимостей.
VulInstruct представляет собой комплексную систему, предназначенную для обучения моделей обнаружения уязвимостей.

PrimeVul: Надежный Эталон для Оценки

Набор данных `PrimeVul` представляет собой критически важный эталон для оценки методов обнаружения уязвимостей, решая ограничения более ранних наборов данных. Он предоставляет реалистичную и сложную среду тестирования для алгоритмов. В рамках `PrimeVul` используется метод `Temporal Splitting`, гарантирующий, что модели оцениваются на уязвимостях, возникших после их обучающих данных. Применение `VulInstruct` в сочетании с `PrimeVul` демонстрирует значительный прирост производительности, достигая F1-score в 45.0% (улучшение на 32.7%) и recall в 37.7%, значительно превосходя все базовые уровни.

Анализ уязвимостей в ImageMagick выявил повторяющийся механизм эксплуатации, связанный с использованием невалидированных полей длины как в исторических, так и в новых уязвимостях.
Анализ уязвимостей в ImageMagick выявил повторяющийся механизм эксплуатации, связанный с использованием невалидированных полей длины как в исторических, так и в новых уязвимостях.

Архитектуры для Усиления Рассуждений

Метод `VulInstruct` служит основой для более сложных систем, таких как `GPTLens` и `VulTrial`, использующих многоагентные фреймворки для аудита кода и критики рассуждений, повышая точность предсказаний уязвимостей. Кроме того, `VulInstruct` расширяется методами, такими как `ReVD`, демонстрируя путь к тонкой настройке и оптимизации обнаружения уязвимостей. `VulInstruct` достиг точности P-C в 17.2% (на 32.3% выше, чем у лучших базовых моделей). Таким образом, `VulInstruct` и его производные представляют собой значительный прогресс, однако долговечность их эффективности зависит от способности адаптироваться к постоянно меняющемуся ландшафту угроз.

Проактивная Безопасность: Предвидение Угроз

Интеграция обнаружения, управляемого спецификациями, с продвинутыми архитектурами, такими как `GPTLens`, открывает путь к проактивной митигации уязвимостей. Это позволяет не только выявлять существующие недостатки, но и прогнозировать потенциальные угрозы на основе анализа спецификаций и контекста кода. Использование `LLM-based Vulnerability Detection` в сочетании с глубоким пониманием `Code Context` позволяет перейти от реактивного исправления уязвимостей к их предотвращению на этапе разработки. Результаты исследований демонстрируют, что 24.3% обнаруженных уязвимостей являются уникальными и не были выявлены другими методами, что свидетельствует о потенциале предлагаемого подхода для обнаружения ранее неизвестных недостатков и создания более безопасного программного обеспечения.

Исследование демонстрирует, что эффективное обнаружение уязвимостей требует не просто анализа кода, но и глубокого понимания исторических данных и спецификаций безопасности. Этот подход, представленный в работе VulInstruct, подчёркивает важность контекста и эволюции систем. Как однажды заметил Давид Гильберт: «Мы должны знать, где мы находимся, чтобы знать, куда мы идем.» Эта фраза отражает суть VulInstruct – использование прошлых знаний (данных об уязвимостях и патчах) для более точного определения текущих рисков. Архитектура, лишенная истории, действительно хрупка, и данный метод предоставляет способ придать этой истории значимость, позволяя моделям рассуждать более обоснованно и эффективно.

Что впереди?

Представленный подход, безусловно, демонстрирует способность кэшировать знания об уязвимостях, однако иллюзия стабильности, создаваемая этим процессом, не должна вводить в заблуждение. Любая система, даже усиленная историческими данными и спецификациями, неизбежно стареет. Вопрос лишь в том, насколько грациозно она это делает. Задержка, возникающая при извлечении и применении этих знаний, — это неизбежный налог, который платит каждый запрос на обнаружение уязвимости.

В дальнейшем, необходимо сосредоточиться не только на улучшении точности обнаружения, но и на понимании контекста. Сама спецификация — лишь моментальный снимок намерения, который со временем искажается. Следующим шагом представляется разработка систем, способных к самообучению и адаптации к меняющимся условиям, то есть к системам, способным предвидеть не только известные уязвимости, но и те, что еще не проявились.

Очевидным направлением является исследование методов, позволяющих снизить эту «налоговую» задержку, возможно, путем разработки более эффективных механизмов кэширования или путем интеграции с системами предиктивного анализа. В конечном счете, задача состоит не в том, чтобы создать идеальную систему обнаружения уязвимостей, а в том, чтобы создать систему, способную достойно стареть в постоянно меняющемся потоке времени.


Оригинал статьи: https://arxiv.org/pdf/2511.04014.pdf

Связаться с автором: https://www.linkedin.com/in/avetisyan/

Смотрите также:

2025-11-09 18:06