В работе рассматривается проблема обеспечения безопасности программных систем на C/C++, для которых статический анализ кода является одним из ключевых инструментов выявления уязвимостей, но остается дорогим в сопровождении из?за сложности разработки правил и taint?спецификаций. Анализируются существующие подходы: промышленные статические анализаторы (Svace, Irbis), IFDS?анализ, решения на основе ML/NN и гибридные схемы с участием больших языковых моделей (LLM), применяемых для фильтрации предупреждений, генерации кода и автоматического синтеза правил (QLPro, KNighter, CodePatchLLM). Показано, что прямое использование LLM в роли самостоятельного детектора уязвимостей дает высокую полноту, но сопровождается значительным числом ложных срабатываний и галлюцинаций. В качестве альтернативы предложен многоагентный модуль для SAST?инструмента CodeQL, ориентированный на C/C++, который использует LLM для генерации, валидации и эволюции правил на языке запросов QL в замкнутом контуре «генерация, проверка, доработка, фильтрация, ранжирование». Описана архитектура системы с агентом?генератором, валидатором, рефайнером, фильтром и ранкером, оркестрация которой осуществляется с помощью LangGraph и PostgreSQL. Валидация правил выполняется по CodeQL?базам Juliet, SARD и реальных проектов с расчетом метрик Precision, Recall, F1, FPR и Specificity и с учетом CVSS?баллов, что позволяет отбирать правила приемлемого качества и снижать нагрузку на разработчиков за счет автоматизированной эволюции базы правил.
1.??QLPro: Automated code vulnerability discovery via LLM and static code analysis integration / J. Hu, X. Jin, Y. Zeng, Y. Liu, Y. Li, D. Du, K. Xie, H. Zhu // arXiv preprint. – 2025. – arXiv:2506.23644v1.
2.??О??безопасности критической информационной инфраструктуры Российской Федерации: Федеральный закон от 14.06.2023 № 187-ФЗ // Собрание законодательства Российской Федерации. – 2023. – № 25. – Ст. 4–5, 8, 10.
3.??О персональных данных: Федеральный закон от 27.07.2006 № 152-ФЗ // Собрание законодательства Российской Федерации. – 2006. – № 31. – Ст. 19.
4.??Белеванцев А.А. Многоуровневый статический анализ исходного кода программ для обеспечения качества программ // Программирование. – 2017. – № 6. – С. 3–25.
5.??Шимчик Н.В., Игнатьев В.Н., Белеванцев А.А. Irbis: статический анализатор помеченных данных для поиска уязвимостей в программах на C/C++ // Труды Института системного программирования РАН. – 2022. – Т. 34, вып. 6.?– С. 51–66. – DOI: 10.15514/ISPRAS-2022-34(6)-4.
6.??Леонов Н.В., Буйневич М.В. Машинное обучение vs поиск уязвимостей в программном обеспечении: анализ применимости и синтез концептуальной системы // Труды учебных заведений связи. – 2023. – Т. 9, № 6. – С. 83?94. – DOI: 10.31854/1813-324X-2023-9-6-83-94.
7.??Повышение точности статического анализа кода при помощи больших языковых моделей / Д.Д. Панов, Н.В. Шимчик, Д.А. Чибисов, А.А. Бе-леванцев, В.Н. Игнатьев // Труды Института системного программирования РАН. – 2025. – Т. 37, вып. 6, ч. 1. – С. 83–100. – DOI: 10.15514/ISPRAS-2025-37(6)-5.
8.??Шайхелисламов Д.С., Дробышевский М.Д., Белеванцев А.А. Интерактивная генерация кода на основе LLM: эмпирическая оценка // Труды Института системного программирования РАН. – 2025. – Т. 37, вып. 5. – С. 123–130. – DOI: 10.15514/ISPRAS-2025-37(5)-9.
9.??KNighter: Transforming static analysis with LLM-synthesized checkers / C. Yang, Z. Zhao, Z. Xie, H. Li, L. Zhang // Proceedings of the ACM SIGOPS 31st Symposium on Operating Systems Principles. – ACM, 2025. – P. 1–15. – DOI: 10.1145/3731569.3764827.
10.??Software vulnerability detection using large language models / M.D. Purba, A. Ghosh, B.J. Radford, B. Chu // IEEE 34th International Symposium on Software Reliability Engineering Workshops (ISSREW). – IEEE, 2023. – P. 112–119. – DOI: 10.1109/ISSREW60843.2023.00058.
11.??Eghbali A., Pradel M. De-hallucinator: Mitigating LLM hallucinations in code generation tasks via iterative grounding // arXiv preprint. – 2024. – arXiv:2401.01701v3.
12.??QL: Object-oriented queries on relational data / P. Avgustinov, O. Moor, M.P. Jones, M. Schäfer // 30th European Conference on Object-Oriented Programming (ECOOP 2016). – Schloss Dagstuhl–Leibniz-Zentrum für Informatik, 2016. – P. 2:1–2:25.