
Мы строим системы обнаружения автономных ИИ-атакующих. Чтобы делать это хорошо, нужно понимать, как разные модели ведут себя в атаке: что они пробуют первым, что игнорируют, где осторожничают, а где лезут напролом. Поэтому весь последний год мы гоняем модели по контролируемым лабораторным целям и записываем каждый шаг. Одна из недавних серий тестов показала то, чего мы вообще не искали, и это говорит о состоянии продакшен-кода куда больше, чем о какой-то конкретной модели.
Зачем нужны лаборатории
Автономный атакующий агент — не сканер и не человек. Он читает баннер сервиса, страницу ошибки, случайно забытый файл .env, воспринимает каждую деталь как факт и на основе этого решает, что делать дальше. Чтобы надёжно такое ловить, нужно знать, как думает конкретная модель в момент атаки.
Поэтому мы разворачиваем изолированные лабораторные окружения с заранее известным, фиксированным набором подсаженных уязвимостей, запускаем в них модель и фиксируем вообще всё. Лаборатории работают локально, на мёртвых учётных данных, без выхода в интернет. До реальной инфраструктуры дело никогда не доходит.
За год пентестов с участием ИИ мы отобрали модели, которые реально хороши в наступательной работе: Grok, Kimi, DeepSeek, Qwen, GLM и модели OpenAI. Этот список сложился не по таблице бенчмарков, а по тому, как модели вели себя вживую.
Claude от Anthropic мы тоже долго использовали, но в другой роли — как оркестратор, который вёл весь конвейер, а не как атакующего. В последние месяцы Anthropic заметно ужесточила правила использования своих моделей для задач по безопасности и пентестам, и мы сами попали под эти ограничения. Поэтому роль Claude сменилась: теперь вместо самой атаки он строит цели. Разворачивает лабораторное окружение, подсаживает нужные нам уязвимости и передаёт результат другим моделям на растерзание.
Именно эта смена ролей и вскрыла проблему.
Заложили три, нашли шесть
Схема была простой. Claude собирает лабораторию ровно с тремя намеренными уязвимостями. Атакующая модель заходит и сообщает, что нашла. Мы сверяем два списка.
В нескольких лабораториях атакующие модели возвращались с четырьмя, пятью, а то и шестью находками. Первая мысль была очевидной: модели накручивают счётчик, выдают за находки то, чего на самом деле нет. Такое случается, и к этому привыкаешь.
Накрутки не было. Мы вручную проверили каждую лишнюю находку — все были реальными, эксплуатируемыми, а в паре случаев критичными. Claude, собирая окружение, сам добавил в него уязвимости сверх тех, что мы заказывали. Никто его об этом не просил. Никто не заметил этого на этапе сборки. Лишние дыры просто тихо лежали в коде, пока их не нашла вторая модель.
В этом и есть суть находки. Модель, писавшая код, не знала, что отгружает критичные дыры. Мы тоже не знали, пока в дело не вошла вторая модель, целенаправленно искавшая проблемы. Понадобился второй ИИ, чтобы вскрыть то, что первый тихо оставил после себя, занимаясь совсем другой задачей.
Важная оговорка: дело не конкретно в Claude. Такое поведение в той или иной степени мы видели у всех протестированных моделей. Claude просто оказался за клавиатурой именно в этой серии тестов, и это сильная модель для написания кода, что делает вывод только острее. Если сильная модель незаметно добавляет критичные уязвимости, собирая маленькую, чётко описанную тестовую лабораторию, стоит задуматься, что творится в миллионах непроверенных строк, которые прямо сейчас уходят в продакшен. Это тот же самый механизм непроверенных зависимостей, который мы разбирали на примере npm-пакетов PhantomRaven, только уровнем выше — на этапе написания кода, а не его распространения.
Как вели себя атакующие
Та же серия тестов дала чёткую картину того, как атакуют разные модели. Шестнадцать санкционированных прогонов, четыре топовые модели в роли пентестеров против изолированного стенда на 127.0.0.1, мёртвые учётные данные, никакой реальной системы в пределах досягаемости. Ловушку сработала каждая попытка — шестнадцать из шестнадцати — и каждая модель попалась по-своему.

По итогам всей серии: 299 предъявлений мёртвых токенов пойманы, шестнадцать агентных прогонов из шестнадцати сработали на ловушку, и ни одного ложного срабатывания на обычном фоновом трафике — curl, мониторинги, обычный проход браузером. Последняя цифра важна не меньше самих поимок: детектор, который путает атаку с настоящим пользователем, никто не оставит включённым надолго.
Неприятная экстраполяция
Теперь масштабируем результат «три против шести» за пределы лаборатории. Огромные объёмы кода, написанного ИИ, попадают в продакшен без сколько-нибудь серьёзного ревью. Мы регулярно тестируем свежезапущенные SaaS-продукты, и попасть внутрь обычно удаётся за несколько часов сфокусированной работы. Часть наиболее успешных проектов сидит на дырах, ведущих напрямую к утечке данных, и вопрос уже не «если», а «кто доберётся первым».
Рынок сейчас производит инструменты, единственная цель которых — генерировать софт ещё быстрее, включая платформы, которые генерируют другие платформы. Это непроверенный ИИ-код, порождающий ещё больше непроверенного ИИ-кода, а уязвимость, которую мы однажды увидели в одной контролируемой лаборатории, превращается в паттерн, воспроизводимый в промышленных масштабах.
Для атакующего это близко к идеальным условиям. Для всех остальных — технический долг с уже подожжённым фитилём.
Что мы реально советуем
Ничего из этого не ново. Просто это та самая дисциплина, которую разработка на скорости ИИ регулярно пропускает.
- Относитесь к коду, написанному ИИ, как к стороннему коду, которому вы не доверяете, — потому что это ровно он и есть. Проверяйте его до прода, начиная с того, что бьёт больнее всего: аутентификация, контроль доступа, всё, что работает с данными пользователей. Если своих ресурсов не хватает — для этого у нас есть аудит исходного кода.
- Если продукт для вас строит подрядчик или агентство, сделайте код-ревью по безопасности отдельным пунктом в договоре, а не факультативом, и потом реально проверяйте, что вам сдали. «Работает» — не свойство безопасности, а чистая демка ничего не говорит о том, кто ещё может попасть внутрь.
- Если у вас уже есть работающий SaaS-продукт, считайте, что автоматизированный агент уже нацелен на ваш периметр. При нынешней дешевизне и возможностях таких агентов это ближе к гарантии, чем к худшему сценарию, и стоит проверить это не догадкой, а настоящим пентестом ИИ-агентов.
- Если ваш собственный продукт запускает агентов против чужих систем или выставляет агента в открытый интернет, вам нужен способ отличить прощупывающую модель от обычного пользователя ещё до её первого хода. Именно для этого мы строим BastionAgent, и именно он собрал цифры для этого поста.
Вывод
ИИ сделал разработку по-настоящему быстрой. Он так же сильно ускорил и взлом, а в этом случае ускорил ещё и обнаружение того, что сама сборка тихо сломала — быстрее любого цикла ручного код-ревью. Устоят те команды, которые всерьёз восприняли все три факта сразу, когда придёт первая волна взломов вайб-кодинговых платформ. А по нынешней динамике она придёт.