LLM-агент Excalibur ломает четыре из пяти хостов в AD-лаборатории за $28.50 в API-кредитах. RapidPen получает shell за 200–400 секунд при стоимости меньше доллара. Впечатляющие цифры из бенчмарков 2026 года. Но вот что происходит, когда ту же модель просят разобрать реальную функцию парсинга на C: она уверенно диагностирует use-after-free в коде, который вообще не работает с динамической памятью.
🎯 Между рекламными бенчмарками и реальным аудитом кода — пропасть из галлюцинаций, потери контекста и ложных срабатываний. Вопрос не в том, работают ли LLM для поиска уязвимостей, а в том, где именно в цепочке аудита их ставить и как не утонуть в шуме.
Ключевой инсайт: LLM — не замена SAST-сканеру и не замена ручному разбору. Это прослойка между ними. Статический анализатор отработал, нашёл подозрительные паттерны, а вы ещё не начали вручную раскручивать call chain'ы. Вот тут модель реально полезна.
⚡ Практический workflow выглядит так:
• Прогоняете
semgrep с правилами p/security-audit и p/owasp-top-ten — получаете JSON с координатами подозрительных мест• Строите граф зависимостей через
tree-sitter или cscope, чтобы понять, какие файлы связаны с находками• Выделяете attack surface — HTTP-хендлеры, парсеры, десериализаторы идут первыми
• Скармливаете LLM конкретные файлы с контекстом вызовов и типов, а не весь репозиторий
Скармливать модели весь codebase — антипаттерн. Даже 128K токенов — это порядка 300–400 страниц кода. Средний open-source проект сильно больше. Модель подавится и выдаст generic-ответ из учебника.
🔑 Ещё одна ловушка — промпты. «Найди уязвимости в этом коде» — прямой путь к мусору на выходе. Рабочий промпт строится по блокам: роль и ограничение, конкретный контекст проекта, тип уязвимости, который ищете, формат ответа и требование обосновать каждый вердикт ссылкой на строку кода. Без структуры модель галлюцинирует.
Где LLM реально хорош: внутренний пентест с доступом к исходникам и bug bounty по open-source целям. Публичный код плюс история коммитов дают модели максимум контекста. Где плохо: аудит бинарей без исходников — декомпилированный код теряет семантику, и модель плывёт.
🛡️ Важный момент для NDA-проектов: код, отправленный в облачный API, покидает ваш контур. Для таких задач — только локальные модели через
Ollama с DeepSeek Coder или CodeLlama.В полной статье — детальный разбор каждого шага workflow, готовые шаблоны промптов и конкретные примеры с реальным кодом.
https://codeby.net/threads/llm-dlya-poiska-uyazvimostei-v-kode-prakticheskii-workflow-ot-sast-do-poc.93750/
