Меню

Star on GitHub · 3.2k

Агентное пентестирование

ИИ-агент занимает кресло тестировщика: планирует, зондирует и адаптируется на цели, как человек, а затем передаёт человеку короткий список проверенных находок. Вот что это значит на деле, как работает и где в цикле всё ещё нужен человек.

Что это

Агент — это программа, которая рассуждает в сторону цели, а не отрабатывает жёсткий сценарий. Дайте ему цель и задачу — «найти, до чего здесь на самом деле мог бы добраться атакующий» — и он решает, что пробовать дальше, исходя из уже увиденного: картировать поверхность, выдвинуть гипотезу, проверить, прочитать ответ, пересмотреть, двигаться дальше. Агентное пентестирование — это тот самый цикл, направленный на наступательную безопасность.

Он рассуждает, а не следует сценарию: рассуждение к цели, а не фиксированная батарея

Он находится между двумя средствами, которыми пользуются сегодня. Сканер гоняет фиксированный набор проверок и сообщает всё, что совпало с сигнатурой — быстро, но слепо к контексту и шумно от ложных срабатываний. Человек-пентестер рассуждает о конкретном приложении и его бизнес-логике — медленно, дорого и как снимок одной недели. Агент стремится к рассуждению пентестера при охвате ближе к сканеру и оставляет решения, требующие суждения, человеку.

Почему наступательная безопасность застряла

Большая часть безопасности модернизировалась — непрерывная интеграция, облако, автоматическая защита. Наступательная безопасность — во многом нет. Её по-прежнему поставляют в основном как услугу, вручную, и она несёт три проблемы, которые так и не ушли:

  • Точечно во времени. Пентест описывает приложение таким, каким оно было в неделю теста. Следующий деплой может обесценить отчёт.
  • Плохо масштабируется. Хорошие тестировщики редки и дороги, поэтому глубину нормируют. Многие работы опираются на младших или аутсорс и оптимизируют количество находок, а не качество.
  • Соответствие важнее безопасности. Слишком часто тест становится галочкой для аудита, а не честной попыткой сломать систему.

Пределы автоматизации до сих пор

Автоматические средства частично закрыли этот разрыв для инфраструктуры, где цели похожи. Для веб-приложений они стабильно не дотягивают, и причина — проблема последней мили: каждое приложение разное. Важные дефекты — сломанный контроль доступа, изъяны бизнес-логики, цепочки уязвимостей — зависят от понимания того, для чего нужен конкретный эндпоинт, а это сигнатура закодировать не может.

Это та же стена, в которую упёрлась старая категория DAST: она могла отметить шаблон, но не рассудить, важен ли он здесь и что делать дальше. Поэтому команды продолжали платить за ручное тестирование — не потому что инструменты не запускались, а потому что они не думали.

Что меняет агент

Языковые модели сделали недостающую часть практичной: систему, способную держать контекст приложения и подстраивать тестирование под него. При аккуратном применении это превращает три вещи, которые прежде противоречили друг другу, в свойства, которые можно иметь вместе:

  • Непрерывно вместо раз в год. Тест может идти на каждое изменение, поэтому результат следует за приложением, а не описывает версию прошлого квартала.
  • С учётом контекста, а не по сигнатуре. Агент исходит из того, как приложение реально ведёт себя: какие объекты есть, какие роли до них добираются, для чего нужен тот или иной вызов.
  • Короткий проверенный список вместо бэклога. Результат должен быть горсткой по-настоящему эксплуатируемых проблем с шагами воспроизведения — а не тысячами несортированных «потенциальных» находок.

Как это работает

То, что делает это надёжным, — как раз не давать модели свободно импровизировать. В CyberStrike агент рассуждает поверх детерминированного движка, который делает работу, где модель слаба: он принимает каждый запрос и ответ, прогоняет сотни правил, строит межидентичностную карту того, какие роли добрались до каких объектов и функций, зондирует точки инъекций и воспроизводит запросы в строгих пределах безопасности. Этот движок даёт наземную истину.

Задача агента — решать, что преследовать: какие зацепки выглядят эксплуатируемыми, какую цепочку пробовать дальше, — и объяснять почему. Доказательства идут от движка, а не от воображения модели; поэтому находка опирается на реальный трафик, который человек может воспроизвести. Суждение — агента; факты — детерминированы.

Чего агенты пока не умеют

Здесь честность важнее энтузиазма. Технология не завершена, и кто утверждает иное — вам что-то продаёт:

  • Модели галлюцинируют. Языковая модель иногда заявит уязвимость, которой нет. Именно поэтому находки должны быть привязаны к воспроизводимым доказательствам, и уверенный отчёт — не то же самое, что реальный баг.
  • Вывод недетерминирован. Запустите тот же запрос дважды — и можете получить разные пути. Воспроизводимость должна идти от движка и записанного трафика, а не от того, что модель согласна сама с собой.
  • Безопасность и авторизация — решения человека. Область, правила взаимодействия и «безопасно ли слать этот запрос на прод» — не то, что отдают автономному процессу.
Агент зондирует, человек решает: human-on-the-loop, а не полная автономия

Поэтому реалистичная модель — human-on-the-loop: агент берёт охват и рутину, а человек проверяет находки, владеет рискованными решениями и отвечает за отчёт. Именно эта связка, а не полная автономия, поставляема сегодня.

Где его место

Агентное пентестирование не отправляет на пенсию ни людей-тестировщиков, ни приёмку аудита. Оно меняет, на что человек тратит время: меньше на переоткрытие той же поверхности каждый квартал, больше на проверку реальных находок и решения, требующие ответственности. Тестирование становится непрерывным; человек становится рецензентом, а не краулером.

Это всё утверждение, и оно намеренно скромное. Наступательная безопасность всегда была самым прямым способом понять реальный риск. Просто она была слишком медленной и редкой, чтобы применять её везде. Сузить этот разрыв — и при этом ясно говорить, где всё ещё нужен человек, — и есть полезная версия этой технологии.

CyberStrike — платформа тестирования на проникновение с ИИ, сейчас в раннем доступе. Хотите увидеть агента и движок за ним? Изучите платформу или встаньте в лист ожидания.

Хотите глубже разобраться, как это работает?