Izanagi
Сканер уязвимостей контроля доступа. Берёт описание API и две учётки, строит цепочки атак и по каждой находке показывает данные жертвы в ответе. IDOR, BOLA, broken access control - пункт №1 в OWASP API Top-10, который обычные сканеры пропускают.
Парсит OpenAPI, оценивает качество от 0 до 100 и достраивает недостающие ответы: шлёт к живому API безопасные пробы и подмешивает реальные формы данных. Порядок обхода - от GET без параметров к POST, запись только с явным разрешением.
В промпт зашиты классы: IDOR в пути, query, теле и на статике; проба метода при 401 и 403; вызов админских ручек низкими правами; mass assignment через привилегированные поля. Внешние ключи не выдумываются - сначала GET списка за реальным значением.
Единственный модуль, который ходит в целевой API. Подставляет переменные, хранит состояние между шагами и умеет фильтры в экстракторах, чтобы для IDOR выбрать конкретную жертву, а не угадывать позицию в списке.
Каждый результат уходит модели на приговор: уязвимо, чисто или чинить. Ветка починки переписывает сломанную цепочку до нескольких раз. Заключение делается по фактическим данным в ответе, а не по догадке.
Каждая находка сверяется с историей проекта: новая или уже известная, с датой первой встречи. То, что было раньше и пропало, уходит в раздел «больше не находится». Расход токенов считается по скану.
$ # поднять стек в контейнерах $ cp .env.example .env # ключ и адрес вашей модели $ docker compose up -d --build UI http://localhost:3000 API http://localhost:8081 chain-processor http://localhost:8080
Всё собирается и запускается в контейнерах, локальный Go или Node не нужен. Модель подключается любая: облачная по API или локальная - ключ и адрес задаются в .env. Целью по умолчанию поднимается VAmPI, специально уязвимый API, чтобы прогнать весь поток из коробки.
- 01Заводим проектЦель, базовый адрес, описание, стек. При желании - кастомный промпт с ролями и контекстом домена.
- 02Настраиваем входСкрипт печатает пары ключ-значение для каждой учётки: tokenA, tokenB. Две личности - атакующий и жертва.
- 03Грузим OpenAPI и разведкуЗагружаем спеку и запускаем разведку из вкладки SPEC. Она обогатит описание реальными ответами и поднимет качество цепочек.
- 04Стартуем сканОтмечаем классы уязвимостей, число цепочек, при желании - глубокий анализ с починкой. Дальше движок работает сам.
- 05Смотрим находкиВкладки цепочек, уязвимостей и лога. По каждой уязвимости - бейдж «новое» или «известное» и доказательство: данные жертвы в ответе.
GET /users/{id} не проверяет владельца (CVE-2023-0298): в ответе email и данные чужого аккаунта.
DELETE /snapshots/{key} не проверяет организацию (CVE-2024-1313): контрольный GET жертвы отдаёт 404.
GET /api/records/1 отдаёт медицинскую карту чужого пациента (учебный стенд).
Админ-функции и локация чужого авто на учебном маркетплейсе.
Чужая книга и чужой профиль на учебном API.
На боевых продуктах - точное воспроизведение известных CVE и находки на своей платформе. Учебные стенды насыщены уязвимостями специально, поэтому находок там закономерно больше.
Находка сама заводит тикет: со ссылкой на цепочку, severity и доказательством в ответе. Статус синхронизируется обратно.
Выгрузка находок в стандартный формат SARIF, чтобы их подхватывали GitHub Code Scanning, GitLab и другие системы.
Helm-чарт и манифесты: весь стек разворачивается в кластере заказчика одной командой, без ручной сборки контейнеров.
Сводка по сканам в одном окне: находки по severity, динамика между прогонами, расход токенов и доля кэша.
Генерация цепочек, вердикт и починка на tool-use агенте, кэш промптов, любая модель по API. Готово и в проде.