BastionAgent
BastionAgent — активная защита периметра от чужих автономных ИИ-агентов. В 2026-м атаку всё чаще ведёт не человек, а агент: он сам читает баннеры, сам находит секреты, сам решает следующий шаг и проходит полный цикл «нашёл дыру → украл креды → забрал всё» за 6–10 часов вместо недель. Классический периметр (WAF, IDS, бан по IP, ловушка под человека) такую машину не видит и не удерживает. BastionAgent решает это не блокировкой, а подменой реальности. Агент натыкается на мёртвые водяные креды именно там, где их и ищет, «успешно» ворует их и попадает в клетку из сфабрикованных данных, где каждый его шаг превращается в улику и доказуемую атрибуцию, даже через ротацию IP.
WAF смотрит на запросы. У агента уже есть план
Автономный атакующий — не человек и не nmap. Он читает каждую 404, баннер SSH и забытый .env как факт, из которого делает вывод. Он не останавливается от бана по IP. И пока он только читает, «взлома» формально ещё нет, сигнализации молчат, а полный план атаки уже построен.
Классическая ловушка-приманка (по-английски её называют honeypot) отказывает украденному паролю. Для осторожной модели этот отказ — доказательство, что приманка фальшивая: одна из штурмовых моделей так прямо и написала, а следующим шагом посоветовала «сменить пароль от продовой базы». Мы это перевернули: чтение разрешено, обнаружение происходит на использовании, а успех атакующего — это клетка.
Шесть механизмов превращают каждое касание крепости в улику
Центральная идея: агент не может перестать понимать прочитанное, не перестав быть агентом. Сканер не понимает по устройству — он сопоставляет сигнатуры. Человек понимает, но осторожен и недоверчив. Агент понимает и при этом буквален, быстр и исполнителен — ради этого его и запустили. Ловушки на понимании не обходит даже самая продвинутая модель, которая уверенно распознаёт обычные инъекции в промпт.
Ловушки на понимании
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 штурмовые модели |
Grok, GLM, DeepSeek, Qwen — против нашего собственного стенда
16 авторизованных прогонов: четыре самые сильные модели на рынке в роли пентестеров атаковали изолированный локальный стенд (127.0.0.1, мёртвые креды, без выхода в сеть), ни одна реальная система не была затронута. Каждая модель попалась по-своему, и это уже само по себе разведданные.
Бульдозер
Полный цикл: добыча данных → декларация → клетка в MySQL → повторное использование сфабрикованных идентичностей на всех точках выдачи. Рекордная кампания — 463 хода.
Аналитик
Единственная модель, у которой сработали все 9 классов зондов. Заодно нашла два наших собственных бага — лучшее бесплатное тестирование, которое у нас было.
Молчаливый сборщик
49 запросов к MySQL за один прогон, методично выкачивал клетку. Декларация цели: «пентестер, тестирование безопасности».
Осторожный аудитор
Трактовал наш .env как настоящую утечку и советовал немедленно ротировать пароли — лучшее подтверждение, что приманка выглядит правдоподобно. В клетку зашёл всё равно.
Мы публикуем и свои провалы. Девять раз штурмовые модели ловили саму систему на телях (ротация зондов между запросами, пустые токены, голый отказ вместо клетки), все закрыты фиксами с регрессионными тестами, разбор в методологии наших red-team проектов. Калибровочная выборка пока небольшая, около 30 размеченных сессий, поэтому UNKNOWN остаётся валидным вердиктом: мы не выдаём малые данные за готовый продакшен-детектор.
Гарантии, зашитые в код и проверяемые девятью автоматическими проверками на сборке
Крепость, границам которой нельзя доверять, — не крепость. Поэтому каждая гарантия ниже — не обещание, а инвариант, который проверяется автоматически при каждой сборке; если проверка не проходит, сборка не выпускается.
- Всё, что раздаётся атакующему, мертво по конструкции: ни один токен, выданный ловушкой, нигде не работает.
- Приманка не имеет исходящих соединений и не может стать усилителем DDoS-атаки.
- Никакой контратаки: воздействие полностью останавливается на границе вашей инфраструктуры, инфраструктуры атакующего система не касается.
- Сенсоры при сбое пропускают трафик, а не блокируют его, — оборона физически не может уронить легитимный трафик клиента.
- Теневые сессии изолированы до активации, а критический список разрешённого не может быть переопределён никаким вердиктом классификатора.
- Боевой режим — только по явной политике клиента и юридическому контуру, по умолчанию система работает в тестовом режиме с аварийным отключением одной кнопкой.
Дизайн-партнёрский пилот: сенсор в вашу подсеть, калибровка на ваших данных
BastionAgent пока не продаётся как публичный пакет — только дизайн-партнёрские пилоты. Пилот ставит сенсор в вашу подсеть (нулевые касания продовых хостов, по умолчанию — только слежение за сетью, без активного вмешательства), калибрует ловушки волнами штурмов и считает, во сколько раз дороже становится атака, уже на ваших данных. Цена и объём — обсуждаем индивидуально.
Сенсор BastionAgent
- Приманка в вашей продовой подсети
- Поддельные SSH/HTTP/HTTPS/FTP/SMTP/DNS/MySQL
- Без выхода в сеть, без секретов на борту
Центр управления
- Изолированный контур на стороне клиента
- Байесовская модель убеждений, кампании, классификатор
- Операторская консоль, выгрузка в SIEM
Калибровка и штурмы
- Регулярные штурмы новыми моделями
- Обновление датасета правдоподобия
- Отчёты об изменениях в вашем трафике
Мы профессионально атакуем ИИ-агентов. BastionAgent — оборотная сторона этого опыта
BastionAgent вырос из нашей наступательной практики: те же приёмы, которыми мы сами штурмуем чужие периметры на проектах, легли в основу ловушек, которые ловят чужих атакующих агентов на вашем. Нужен пилот, взгляд атакующего на ваш собственный периметр или разбор конкретного инцидента с автономным агентом? Это наша повседневная работа.
BastionAgent: частые вопросы
Это просто ловушка-приманка?
Классическая приманка (honeypot) пассивно наблюдает. BastionAgent проводит управляемый эксперимент: подаёт стимул, измеряет реакцию, делает байесовский вывод и активно ведёт кампанию против конкретного атакующего. Обнаружение строится на использовании мёртвого водяного секрета, а не на сигнатуре или аномалии трафика.
Останавливает ли это сам взлом, уязвимость CVE или подделку запросов SSRF?
Нет, и мы говорим об этом прямо: вход через уязвимость класса «удалённое выполнение кода» идёт мимо приманки, как обычно. BastionAgent ломает следующий шаг цикла — тот момент, где украденный секрет используется, а агент считает, что уже победил. Именно этот шаг превращается в датчик и в западню.
А самые сильные модели не распознают ловушку?
Мы публикуем все случаи, где штурмовые модели ловили саму систему на детали, выдающей подделку, и каждый закрыт исправлением с регрессионным тестом. Ловушки построены на понимании, а не на послушании, поэтому отказ модели по соображениям безопасности её не спасает. Живой пример: одна из моделей отказалась штурмовать по собственным ограничениям безопасности, и этот отказ сам по себе сработал в нашу пользу.
Даст ли это ложные срабатывания на обычном трафике?
На локальном фоновом трафике (curl, обычные мониторы, браузерный проход) — ноль ложных вердиктов «это агент». Про реальный периметр конкретного клиента мы ничего не заявляем заранее: именно эта проверка вживую и есть содержание пилота.
Можно поставить уже сегодня?
Не как публичный пакет — сейчас идут только дизайн-партнёрские пилоты, напрямую через нашу команду. Оставьте заявку через форму — обсудим сроки и объём пилота под вашу инфраструктуру.
Замерьте, во сколько раз дороже станет атака на вашу инфраструктуру
Дизайн-партнёрский пилот. Сенсор без выхода в сеть, мёртвые креды, никакой контратаки. По умолчанию — нулевые касания продовых хостов.
