Как устроен мультиагентный сканер уязвимостей в Claude Code
Инструментов для поиска уязвимостей у разработчика обычно уже несколько: линтер, статический анализатор, ревью на пул-реквесте. Проблема не в их количестве, а в том, что каждый ловит свое – известные паттерны, синтаксические ошибки, то, что заметит человек при беглом просмотре диффа. Claude Security – плагин для Claude Code, который запускает мультиагентное сканирование уязвимостей прямо в рабочей сессии, до того как код вообще дойдет до ревью.
Как устроено сканирование
Внутри плагина работает не один агент, а команда. Один агент строит карту архитектуры проекта, второй на ее основе собирает модель угроз, третий охотится за конкретными уязвимостями. Ключевой момент – ни одна находка не попадает в отчет напрямую: каждую независимо перепроверяет отдельный агент-верификатор, прежде чем она вообще появится перед разработчиком. Именно это держит отчет коротким и осмысленным – непроверенные догадки отсеиваются до того, как их кто-то увидит.
Сканировать можно весь репозиторий целиком или только то, что изменилось: диф ветки перед мержем, конкретный коммит, открытый пул-реквест. На больших репозиториях плагин предлагает разбить работу на области – например, отдельно проверить слой API или код авторизации, и в отчете прямо указано, что было изучено, а что осталось за скобками конкретного запуска.
Что попадает в отчет
Результаты каждого запуска складываются в отдельную папку с меткой времени. Основной файл – отчет, где у каждой находки есть свой номер, описание влияния, сценарий эксплуатации, уровень серьезности, уровень уверенности и рекомендация. Рядом лежит машиночитаемая версия того же отчета и штамп ревизии – он фиксирует, какой именно коммит был проверен и попадали ли в скан незакоммиченные изменения.
Штамп ревизии важен не для галочки. Сканы недетерминированы: два запуска на одном и том же коде могут показать разные находки. Поэтому есть смысл гонять сканирование регулярно, а не один раз, и всегда сверяться со штампом – какой код на самом деле описывает конкретный отчет.
От находки к патчу
Дальше можно выбрать, какие находки чинить, и попросить плагин подготовить патчи. Каждый патч собирается в отдельной копии репозитория – исходные файлы остаются нетронутыми до тех пор, пока разработчик сам не применит изменения. Готовый патч проверяет агент, независимый от того, кто его написал: он прогоняет тесты проекта, если они есть, и отдельно читает дифф на предмет всего нового, что могла принести правка. Патч появляется только тогда, когда эта проверка может поручиться сразу за три вещи – находка закрыта, новой уязвимости не появилось, остальное поведение кода не изменилось. Если поручиться не за что, вместо патча приходит короткая заметка с объяснением.
Ничего не применяется автоматически. Каждый патч – это файл, который разработчик применяет сам, желательно в отдельном пул-реквесте.
Где эта проверка не панацея
Важная оговорка. Плагин работает в сессии разработчика и с его правами, дополнительной изоляции он не добавляет: настройки репозитория, хуки и инструкции применяются точно так же, как в любой другой сессии. Он создан для проверки кода, который вы контролируете, – вопрос тут в том, какие баги есть в коде, а не в том, не пытается ли сам код что-то сделать. Для проверки чужого или незнакомого репозитория нужна отдельная песочница на уровне всей сессии, а не просто запуск скана поверх нее.
Вывод
Claude Security не заменяет статические анализаторы, сканеры зависимостей или ревью на пул-реквесте – это еще один слой, который рассуждает о коде так, как это делал бы внимательный специалист по безопасности, и находит то, что структурно не видят инструменты, работающие по готовым паттернам. Детерминированные проверки при этом никуда не уходят – они остаются там, где справляются лучше.