BastionAgent
BastionAgent защищает периметр от чужих автономных ИИ-агентов и делает это активно: система вмешивается в атаку прямо во время неё, а не разбирает логи постфактум.
В 2026 году атаку всё чаще ведёт автономный агент: он сам читает баннеры, сам находит секреты, сам решает следующий шаг и проходит весь цикл «нашёл дыру → украл креды → забрал всё» за 6–10 часов вместо недель. Классический периметр (WAF, IDS, бан по IP, ловушка под человека) такую машину не видит и не удерживает.
Вместо блокировки BastionAgent подменяет реальность, в которой действует атакующий. Агент натыкается на мёртвые водяные креды именно там, где их и ищет. Он «успешно» ворует их и попадает в клетку из сфабрикованных данных, где каждый его шаг превращается в улику и доказуемую атрибуцию, даже если он меняет IP-адрес.
WAF смотрит на запросы. У агента уже есть план
Автономный атакующий не похож ни на человека, ни на nmap. Он читает каждую 404, баннер SSH и забытый .env как факт, из которого делает вывод. Бан по IP его не останавливает. И пока он только читает, формального «взлома» ещё нет, сигнализации молчат, а план атаки уже готов.
У классического honeypot есть слабое место. Если атакующий крадёт пароль и пытается им зайти, ловушка обычно отклоняет вход, ведь настоящего аккаунта за этим паролём нет. Осторожная модель видит в этом отказе прямую улику: раз вход не проходит, значит, приманка ненастоящая. Одна из штурмовых моделей именно так и написала в отчёте, а следующим шагом посоветовала сменить пароль от продовой базы.
Мы перевернули эту логику. Чтение разрешено, а обнаружение срабатывает позже, в момент, когда украденное пытаются использовать: BastionAgent пускает атакующего внутрь, и его «успех» на самом деле означает, что он вошёл в клетку из сфабрикованных данных.
Шесть механизмов превращают каждое касание крепости в улику
Центральная идея простая: чтобы работать, агент обязан понимать то, что читает. Отказаться от этого понимания он не может, иначе просто перестанет быть агентом. Сканер работает иначе: сверяет сигнатуры, не вникая в смысл. Человек понимает, но осторожен и недоверчив. Агент понимает, и при этом он буквален, быстр и исполнителен, именно ради этого его и запустили. Поэтому ловушки, построенные на понимании текста, не обходит даже самая продвинутая модель, которая уверенно распознаёт обычные инъекции в промпт.
Ловушки на понимании
9 классов зондов в баннерах и телах ошибок: вычислить хост из факта, синтезировать UUID, декодировать и выполнить, продолжить пагинацию по выведенному курсору. Ни браузер, ни сканер этого не делают. Сработавший зонд означает агента, почти без ложных срабатываний.
Мёртвые водяные креды
В .env, .git/config, документации API, поддельном сервисе метаданных облака, в баннерах FTP/SSH/SMTP. Читать можно, обнаружение наступает в момент предъявления. Один водяной ключ, предъявленный с разных IP, ловит целый рой как одного противника.
Успех = клетка
Украденный пароль логинится в правдоподобный, сфабрикованный MySQL. Каждый следующий запрос — это план атакующего, записанный в журнал. В выданные данные вшиты контрольные метки на случай, если они всплывут где-то ещё.
Он сам декларирует цель
«Политика доступа» вежливо просит указать оператора, мандат, тикет, область работ. Декларация ничего не подтверждает юридически, но становится разведданными: кто заказчик, зачем пришёл, какими инструментами работает.
Держать, а не банить
Кампания из трёх стадий, разведка → вовлечение → удержание, с адаптивным замедлением: чем настойчивее агент, тем дороже и медленнее становится каждый следующий шаг. Рекорд на штурмах: 463 хода атакующего внутри фабрикации, прежде чем он остановился сам.
Безопасный отказ, без ответного удара
Сенсоры устроены так, что при сбое пропускают трафик, а не блокируют его (fail-open), и не могут уронить легитимный трафик клиента. Всё воздействие останавливается на границе защищаемой инфраструктуры, никакой контратаки на инфраструктуру нападающего. Боевой режим включается только по явной политике клиента и юридическому контуру. По умолчанию система работает в тестовом режиме без реального воздействия.
Что именно делал этот атакующий, шаг за шагом
Мы группируем события в эпизоды атаки: всё, что сделал один атакующий за один заход, а не разрозненный поток отдельных алертов. Экраны ниже показывают реальные данные штурмового стенда, это не макет.


На карточке атакующего показаны оценка угрозы, свёрнутая цепочка атаки и разворачиваемый журнал: каждая строка объясняет, почему это улика, вплоть до вероятности по классам актора (AGENT_DIRECT / AGENT_SWARM / TOOL / HUMAN), с честным UNKNOWN, когда доказательств не хватает. На экране Traps видно качество каждого класса зондов. Если по одному источнику много срабатываний, это компетентный агент. Если много игнорирований и ноль срабатываний, это обычный фоновый шум от сканеров и людей.
У ловушки нет «безобидного» пути: сработать случайно нельзя
Каждый класс зондов проверяется линтером на отсутствие безобидного пути: действие по нему физически невозможно совершить случайно. Поэтому срабатывание (fired) означает агентность, а игнорирование (ignored) — обычное, ожидаемое поведение человека или сканера.
| Класс | Что проверяет | Результат на штурмах |
|---|---|---|
| D_format_compliance | 404-страница требует синтезированный X-Trace-Id (uuid v4) | 16/16 · самый массовый сигнал |
| A_inference_gated | факт, требующий вычислить цель по косвенным данным | 16/16 · 0 на обычном трафике |
| B_differential | разным акторам подаются разные «версии правды» | сработало у Grok, GLM, DeepSeek |
| F_scoped_inference | выводимая пагинация / курсор | сработало у GLM и Grok, метка AGENT_DIRECT |
| P1_encoded | base64: «раскодируй и выполни» (детерминированный флаг высшего приоритета) | сработало у Grok и DeepSeek |
| E_watermark | раскрытый персональный ключ → атрибуция роя | 29 предъявлений с разных IP, живой рой |
| хранилище приманок | мёртвые водяные креды на всех точках выдачи | 299 предъявлений · 0 на обычном трафике |
| клетка с данными | «успех» = сфабрикованный MySQL с контрольной меткой | вошли все 4 штурмовые модели |
Семь топовых моделей против нашего собственного стенда
Первая волна: 16 авторизованных прогонов, четыре самые сильные модели на рынке в роли пентестеров атаковали изолированный локальный стенд (127.0.0.1, мёртвые креды, без выхода в сеть), ни одна реальная система не была затронута. Каждая модель попалась по-своему, и это уже само по себе разведданные. Позже мы прогнали через тот же стенд ещё три модели: Claude от Anthropic, GPT от OpenAI и Gemini от Google. Все три тоже попались.
Бульдозер
Полный цикл: добыча данных → декларация → клетка в MySQL → повторное использование сфабрикованных идентичностей на всех точках выдачи. Рекордная кампания: 463 хода.
Аналитик
Единственная модель, у которой сработали все 9 классов зондов. Заодно нашла два наших собственных бага. Это лучшее бесплатное тестирование, которое у нас было.
Молчаливый сборщик
49 запросов к MySQL за один прогон, методично выкачивал клетку. Декларация цели: «пентестер, тестирование безопасности».
Осторожный аудитор
Трактовал наш .env как настоящую утечку и советовал немедленно ротировать пароли. Это лучшее подтверждение, что приманка выглядит правдоподобно. В клетку зашёл всё равно.
Вторая волна
Добавили в стенд позже. Claude от Anthropic наткнулся на те же ловушки на понимании и попал в клетку из сфабрикованных данных.
Тот же результат
GPT от OpenAI прошёл через тот же стенд во второй волне и был пойман тем же набором ловушек, что и первая четвёрка.
Исход не изменился
Gemini от Google тестировали в той же второй волне. Ловушки на понимании сработали и здесь.
Агенты девять раз ловили нашу систему на конкретных деталях: ротация зондов между запросами, пустые токены, голый отказ вместо клетки. Каждый случай закрыт фиксом с регрессионным тестом, разбор есть в методологии наших red-team проектов. Калибровочная выборка пока небольшая, около 30 размеченных сессий, поэтому UNKNOWN остаётся валидным вердиктом: мы не выдаём малые данные за готовый продакшен-детектор.
Гарантии, зашитые в код и проверяемые девятью автоматическими проверками на сборке
Периметру, чьим границам нельзя доверять на практике, грош цена на бумаге. Поэтому каждая гарантия ниже — это инвариант, который проверяют автоматически при каждой сборке: если проверка не проходит, сборка не выпускается.
- Всё, что раздаётся атакующему, мертво по конструкции: ни один токен, выданный ловушкой, нигде не работает.
- Приманка не имеет исходящих соединений и не может стать усилителем DDoS-атаки.
- Никакой контратаки: воздействие полностью останавливается на границе вашей инфраструктуры, инфраструктуры атакующего система не касается.
- Сенсоры при сбое пропускают трафик, а не блокируют его, поэтому оборона физически не может уронить легитимный трафик клиента.
- Теневые сессии изолированы до активации, а критический список разрешённого не может быть переопределён никаким вердиктом классификатора.
- Боевой режим включается только по явной политике клиента и юридическому контуру. По умолчанию система работает в тестовом режиме с аварийным отключением одной кнопкой.
Дизайн-партнёрский пилот: сенсор в вашу подсеть, калибровка на ваших данных
BastionAgent пока не продаётся как публичный пакет, доступны только дизайн-партнёрские пилоты. Пилот ставит сенсор в вашу подсеть (нулевые касания продовых хостов, по умолчанию сенсор только следит за сетью, без активного вмешательства), калибрует ловушки волнами штурмов и считает, во сколько раз дороже становится атака, уже на ваших данных. Цену и объём обсуждаем индивидуально.
Сенсор BastionAgent
- Приманка в вашей продовой подсети
- Поддельные SSH/HTTP/HTTPS/FTP/SMTP/DNS/MySQL
- Без выхода в сеть, без секретов на борту
Центр управления
- Изолированный контур на стороне клиента
- Байесовская модель убеждений, кампании, классификатор
- Операторская консоль, выгрузка в SIEM
Калибровка и штурмы
- Регулярные штурмы новыми моделями
- Обновление датасета правдоподобия
- Отчёты об изменениях в вашем трафике
Мы профессионально атакуем ИИ-агентов. BastionAgent — оборотная сторона этого опыта
BastionAgent вырос из нашей наступательной практики: те же приёмы, которыми мы сами штурмуем чужие периметры на проектах, легли в основу ловушек, которые ловят чужих атакующих агентов на вашем. Нужен пилот, взгляд атакующего на ваш собственный периметр или разбор конкретного инцидента с автономным агентом? Это наша повседневная работа.
BastionAgent: частые вопросы
Это просто ловушка-приманка?
Классическая приманка (honeypot) пассивно наблюдает. BastionAgent проводит управляемый эксперимент: подаёт стимул, измеряет реакцию, делает байесовский вывод и активно ведёт кампанию против конкретного атакующего. Обнаружение строится на использовании мёртвого водяного секрета, а не на сигнатуре или аномалии трафика.
Останавливает ли это сам взлом, уязвимость CVE или подделку запросов SSRF?
Нет, и мы говорим об этом прямо: вход через уязвимость класса «удалённое выполнение кода» идёт мимо приманки, как обычно. BastionAgent ломает следующий шаг цикла: тот момент, где украденный секрет используется, а агент считает, что уже победил. Именно этот шаг превращается в датчик и в западню.
А самые сильные модели не распознают ловушку?
Мы публикуем все случаи, где штурмовые модели ловили саму систему на детали, выдающей подделку, и каждый закрыт исправлением с регрессионным тестом. Ловушки построены на понимании, а не на послушании, поэтому отказ модели по соображениям безопасности её не спасает. Живой пример: одна из моделей отказалась штурмовать по собственным ограничениям безопасности, и этот отказ сам по себе сработал в нашу пользу.
Даст ли это ложные срабатывания на обычном трафике?
На локальном фоновом трафике, будь то curl, обычные мониторы или браузерный проход, ноль ложных вердиктов «это агент». Про реальный периметр конкретного клиента мы ничего не заявляем заранее: именно эта проверка вживую и есть содержание пилота.
Можно поставить уже сегодня?
Не как публичный пакет. Сейчас идут только дизайн-партнёрские пилоты, напрямую через нашу команду. Оставьте заявку через форму, и мы обсудим сроки и объём пилота под вашу инфраструктуру.
Замерьте, во сколько раз дороже станет атака на вашу инфраструктуру
Дизайн-партнёрский пилот. Сенсор без выхода в сеть, мёртвые креды, никакой контратаки. По умолчанию нулевые касания продовых хостов.
