
Асинхронный сканер безопасности API на Rust для проверок CORS, CSP, GraphQL, JWT, OpenAPI и активных проверок состояния API.
Если этот проект помогает вашей работе, поддержите поддержку и новые функции.
ETH кошелек для пожертвований
0x11282eE5726B3370c8B480e321b3B2aA13686582
Отсканируйте QR-код или скопируйте адрес кошелька выше.
Асинхронный модульный сканер безопасности API для базового тестирования API и обнаружения регрессий.
Сочетает обнаружение с целевыми проверками (CORS/CSP/GraphQL/OpenAPI/JWT/API Security), используя адаптивную конкурентность и выводы, готовые для CI (NDJSON/SARIF).
Варианты использования: атака для red-team/тестирования на проникновение API, обнаружения и проверки эксплойтов, а также защита для блокировки регрессий в CI/CD, непрерывного усиления безопасности API и раннего обнаружения неверных конфигураций.
Сканирование в масштабе? См. Режим Triage — сканируйте 5000 целей за 20 минут с основными проверками безопасности, затем используйте Режим Enrich, чтобы добавить контекст угроз (порты, CVE, ASN, возраст домена) к результатам.
ApiHunterapihunterapi_scannerapihunter (по умолчанию для cargo run)Установите это в настройках репозитория GitHub для лучшей обнаруживаемости:
Асинхронный сканер безопасности API для CORS/CSP/GraphQL/JWT/OpenAPI и активных проверок состояния API.https://github.com/Teycir/ApiHunterrust, security, api-security, scanner, graphql, cors, csp, jwt, openapi, sarif, ndjsonflowchart LR A[CLI apihunter] --> B[main.rs] D[Input Sources] --> E[Pre-filter + Discovery] B --> C[HttpClient + Config] E --> F[runner.rs] C --> F
F --> G1[Passive scanners]
F --> G2[Active scanners]
I[template-tool] --> H[CVE templates]
H --> G2
G1 --> J[Findings]
G2 --> J
J --> K[Reporter]
K --> L[Auto Reports]
K --> M[CI/CD Controls]
## Почему ApiHunter?
### Основные преимущества
- **Архитектура, ориентированная на API**: Создан специально для REST/GraphQL API, а не адаптирован из сканеров веб-приложений
- **Интеллектуальное сокращение ложных срабатываний**:
- Обнаружение SPA catch-all с канареечными зондами
- Контекстно-зависимая проверка секретов (фронтенд vs бэкенд)
- Проверка содержимого тела и реферера
- Снятие отпечатков ответов для пропуска повторяющихся находок
- **Безопасен для продакшена по дизайну**:
- Адаптивная конкурентность (AIMD), снижающая нагрузку при ошибках
- Ограничение частоты запросов на хост с настраиваемыми задержками
- Контроль вежливости (повторы, таймауты, обход WAF)
- Режим пробного запуска для активных проверок
- **Стелс и обход защиты**:
- Ротация User-Agent во время выполнения из подобранного пула (assets/user_agents.txt)
- Случайные задержки запросов с джиттером
- Принудительная задержка для каждого хоста (избегает пакетных паттернов)
- Логика повторных попыток с экспоненциальной задержкой
- Инъекция пользовательских заголовков для смешивания с легитимным трафиком
- Адаптивная синхронизация на основе ответов сервера
- Отсутствие хардкодных отпечатков сканера в режиме по умолчанию
### Подробное описание методов стелса
ApiHunter использует несколько техник стелса для обхода WAF (Web Application Firewall) и систем защиты от ботов:
#### 1. Ротация User-Agent
**Что делает:** Случайным образом перебирает более 100 строк User-Agent реальных браузеров из файла (`assets/user_agents.txt`)
**Почему это работает:** Боты обычно используют один и тот же User-Agent (например, `curl/7.68.0`). Притворяясь Chrome, Firefox, Safari и т.д., вы смешиваетесь с легитимным трафиком
**Простая аналогия:** Как носить разные маскировки вместо одной и той же униформы
#### 2. Случайное время и джиттер
**Что делает:** Добавляет случайные задержки между запросами (контролируется `--delay-ms`) с джиттером (небольшими случайными вариациями)
**Почему это работает:** Боты отправляют запросы через идеальные интервалы (ровно каждые 100 мс). Люди непредсказуемы. Случайное время делает трафик похожим на органический
**Простая аналогия:** Ходить неровными шагами вместо того, чтобы маршировать как робот
#### 3. Принудительная задержка для каждого хоста
**Что делает:** Отслеживает задержку отдельно для каждого домена, а не глобально
**Почему это работает:** Предотвращает пакетные паттерны, когда вы 50 раз подряд обращаетесь к одному хосту. Каждый хост видит вежливые, разнесённые по времени запросы
**Простая аналогия:** Общаться в разных разговорах по очереди, а не кричать на одного человека без перерыва
#### 4. Адаптивная конкурентность (AIMD)
**Что делает:** Автоматически замедляется при получении ошибок 429 (ограничение частоты) или 503 (сервер занят), ускоряется при успешных запросах
**Почему это работает:** Снижает нагрузку при обнаружении, имитирует поведение браузеров при повторных попытках. WAF видит "этот клиент уважает наши лимиты"
**Простая аналогия:** Замедляться в пробке, ускоряться на свободной дороге
#### 5. Повтор с экспоненциальной задержкой
**Что делает:** При неудачном запросе ждёт 1 с, затем 2 с, затем 4 с перед повторной попыткой
**Почему это работает:** Легитимные клиенты выполняют повторные попытки аккуратно. Боты часто колотят сразу или сдаются
**Простая аналогия:** Стучать в дверь, ожидая каждый раз дольше, вместо того чтобы долбить непрерывно
#### 6. Отсутствие отпечатков сканера
**Что делает:** Не отправляет заголовки типа `X-Scanner: ApiHunter` или предсказуемые паттерны
**Почему это работает:** Многие инструменты оставляют подписи (шаблоны Nuclei, паттерны sqlmap). ApiHunter избегает очевидных маркеров
**Простая аналогия:** Не носить табличку с надписью "Тестировщик безопасности"
#### 7. Повторное использование и пулинг соединений
**Что делает:** Использует пулы HTTP-клиентов для каждого хоста, поддерживает соединения активными
**Почему это работает:** Браузеры повторно используют соединения. Открывать/закрывать для каждого запроса выглядит подозрительно
**Простая аналогия:** Держать дверь открытой вместо того, чтобы захлопывать её и снова звонить
#### 8. Инъекция пользовательских заголовков
**Что делает:** Может добавлять заголовки, такие как `Referer`, `X-Forwarded-For`, пользовательские cookie
**Почему это работает:** Делает запросы похожими на те, что пришли из легитимного потока приложения (нажал на ссылку, есть сессионные cookie)
**Простая аналогия:** Показать билет при входе на площадку вместо того, чтобы перелезать через забор
#### Сравнение обнаружения
| Техника | Без обхода | С обходом |
|---------|------------|-----------|
| **User-Agent** | `python-requests/2.28.0` (очевидный бот) | `Mozilla/5.0 (Windows NT 10.0; Win64; x64)...` (выглядит как Chrome) |
| **Время** | Идеальные интервалы 100 мс → WAF блокирует | 120 мс, 95 мс, 180 мс → выглядит как человек |
| **Повторы** | Мгновенный повтор → бан | Ожидание 1с→2с→4с → "терпеливый клиент" |
| **Конкурентность** | 100 параллельных вызовов → тревога | Адаптивные 5→10→3 на основе ответов → "вежливый браузер" |
#### Когда использовать `--waf-evasion`
- Тестирование продакшен-API с Cloudflare/Akamai/AWS WAF
- Избежание IP-банов при масштабных сканированиях
- Тесты на проникновение, где нужно оставаться незамеченным
- **CI/CD-нативный**:
- Сравнение с базовым сценарием (сообщать только новые находки)
- Потоковый NDJSON-вывод для мониторинга в реальном времени
- SARIF 2.1.0 для сканирования кода GitHub/GitLab
- Битовая маска кода завершения для управления пайплайнами
- Фильтрация по серьёзности и пороги сбоев
- **Производительность в масштабе**:
- Асинхронная среда выполнения Rust (tokio) с абстракциями с нулевой стоимостью
- Одновременное сканирование с параллелизмом, ограниченным семафором
- Пулы HTTP-клиентов для каждого хоста для предотвращения узких мест соединений
- Эффективное использование памяти (нет пауз GC)
- **Всесторонняя поддержка аутентификации**:
- Аутентификационные потоки на основе JSON с извлечением cookie/заголовков
- Тестирование IDOR/BOLA с двойной учёткой
- Импорт файлов сессий (интеграция с Excalibur)
- Аутентификация Bearer, Basic и пользовательскими заголовками
- Автоматический неаутентифицированный клиент для проверок повышения привилегий
## Модули сканера
ApiHunter включает 13 встроенных модулей сканера. Подробную логику обнаружения см. в [docs/scanners.md](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md).
| Сканер | Тип | Что обнаруживает |
|---------|------|----------------|
| **CORS** | Пассивный | Подстановочные источники, отражённые источники с учётными данными, принятие нулевого источника, уязвимости обхода регулярных выражений (атаки с суффиксом/префиксом), отсутствие Vary: Origin, небезопасные методы предварительной проверки |
| **CSP** | Пассивный | Отсутствие Content-Security-Policy, директивы unsafe-inline/unsafe-eval, подстановочные источники, обходимые CDN-хосты (JSONP-гаджеты), отсутствие frame-ancestors |
| **GraphQL** | Пассивный | Включённая интроспекция, чувствительные поля схемы (типы user/password/token), подсказки полей (утечка схемы), пакетирование запросов, усиление с помощью псевдонимов (DoS), доступность GraphiQL/Playground |
| **JWT** | Пассивный | Токены с alg=none, слабые секреты HS256 (на основе словаря), отсутствующий/чрезмерный срок действия, чувствительные утверждения в полезной нагрузке, уязвимости путаницы алгоритмов |
| **OpenAPI** | Пассивный | Отсутствие схем безопасности, операции без требований аутентификации, конечные точки для загрузки файлов, всё ещё присутствующие устаревшие операции, незащищённые чувствительные конечные точки |
| **Версионирование API** | Пассивный | Раскрытие заголовка версии, одновременное использование устаревших/новых версий API, заголовки устаревания и расхождение ответов между безвредными вариантами запросов/версий (плюс расширенный режим через `--response-diff-deep`) |
| **gRPC/Protobuf** | Пассивный + Активный | Сигналы транспорта/типа содержимого gRPC, подсказки поверхности protobuf, опциональные сигналы рефлексии/здоровья |
| **Безопасность API** | Пассивный + Активный | Отсутствие заголовков безопасности (X-Content-Type-Options, X-Frame-Options), раскрытие версии сервера, неаутентифицированный доступ к чувствительным путям, перечисление HTTP-методов, обнаружение отладочных конечных точек, паттерны раскрытия секретов, активные проверки IDOR/BOLA (сравнение тела + выбранных заголовков), зонды слепого SSRF callback и сигналы обхода шлюза/шлюзового зонда |
| **Массовое присвоение** | Активный | Отражённые чувствительные поля (is_admin, role, permissions), сохранённые изменения состояния, повышение привилегий через инъекцию полей |
| **OAuth/OIDC** | Активный | Обход проверки URI перенаправления, отсутствие параметра state, проблемы с поддержкой PKCE (отсутствие S256, разрешённый plain), включённый неявный поток, включённый поток с паролем |
| **Ограничение частоты** | Активный | Отсутствие ограничения частоты (зонды burst), отсутствие заголовков Retry-After, обход через подделку IP-заголовков (X-Forwarded-For) |
| **WebSocket** | Активный | Принятие обновления до WebSocket на общих путях, отсутствие проверки источника, неаутентифицированные WebSocket-соединения |
| **CVE-шаблоны** | Активный | Обнаружение CVE на основе шаблонов из `assets/cve_templates/*.toml` (168 шаблонов), дифференциальное сопоставление базового сценария и обхода |
**Пассивные сканеры** запускаются по умолчанию и анализируют ответы без отправки сконструированных запросов.
**Активные сканеры/проверки** требуют `--active-checks` и отправляют потенциально инвазивные зонды (IDOR/BOLA, мутации, тесты обхода).
IDOR/BOLA находится в сканере `API Security` (нет отдельного флага `--no-idor`; используйте `--no-api-security` для отключения).
### Заметки о выводе модулей и сигналах
Эти заметки обобщают, как выводятся находки и что обычно вызывает шум:
| Модуль | Префикс / Форма находки | Частые ложные срабатывания | Частые пропуски |
|---------|-------------------------|-------------------------|-------------------|
| CORS | `cors/*` с полями origin/evidence | Отражение на нечувствительных маршрутах | Проверки источника применяются только на аутентифицированных маршрутах |
| CSP | `csp/*` с evidence директив | Легаси CSP, намеренно применённое во время миграции | CSP доставляется только на граничном пути CDN в продакшене |
| GraphQL | `graphql/*` с конечной точкой + сигналом возможности | Публичная площадка, предназначенная для внутренних/тестовых арендаторов | Контроль схемы включён только после аутентификации |
| JWT | `jwt/*` с evidence утверждения/заголовка токена | Тестовые/демо-токены в синтетических ответах | Токен никогда не появляется в просканированных ответах |
| OpenAPI | `openapi/*` с контекстом операции/безопасности | Спецификация намеренно включает устаревшие, но заблокированные конечные точки | Спецификация недоступна или разбита по частным документам |
| Версионирование API | `api_versioning/*` + `response_diff/*` | Несколько поддерживаемых версий во время контролируемых миграций | Версионированные пути не обнаруживаются из текущего набора начальных URL |
| gRPC/Protobuf | `grpc_protobuf/*` с evidence транспорта/рефлексии | Метаданные, похожие на gRPC, на граничных прокси без открытой RPC-поверхности | Конечные точки gRPC за отдельным хостом/путём не достигаются из стартового набора |
| Безопасность API | `api_security/*` с evidence заголовка/пути/метода | Отладочные/тестовые конечные точки, намеренно открытые в непродакшн-среде | Контроль применяется за контекстом аутентификации/сессии |
| Массовое присвоение | `mass_assignment/*` с отражёнными/сохранёнными дельтами | Поведение эха, которое не сохраняет состояние бэкенда | Мутации отклоняются скрытыми правилами валидации |
| OAuth/OIDC | `oauth/*` с evidence перенаправления/метаданных | Непродакшн-конфигурация IdP с ослабленными политиками | Динамическое применение политик не видно в метаданных |
| Ограничение частоты | `rate_limit/*` с поведением burst/429 | Глобальное формирование трафика маскирует поведение ограничителя на уровне приложения | Ограничители с длинным окном не срабатывают за короткое окно зонда |
| WebSocket | `websocket/*` с проверками обновления/источника | Публичные WS-конечные точки, намеренно анонимные | Аутентификация требуется через заголовки рукопожатия, не предоставленные в зонде |
| CVE-шаблоны | `cve/<id>/<check>` с evidence шаблона | Коллизия отпечатков на общих конечных точках | Уязвимый путь/контекст не достигаются из начальных URL |
Для подробной информации по каждой проверке и рекомендациям по устранению см. [docs/scanners.md](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md) и [docs/findings.md](https://github.com/teycir/apihunter/blob/HEAD/docs/findings.md).
Документация сканеров теперь включает [Каталог проверок модулей](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md#module-check-catalog) и [Модель ожидания ложных срабатываний](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md#false-positive-expectation-model), согласованные с источником.
## Функции
### Пассивный анализ безопасности
- **Обнаружение неправильной конфигурации CORS**:
- Динамическая генерация источника на основе целевого домена
- Тестирование обхода регулярных выражений (атаки с суффиксом/префиксом)
- Оценка серьёзности с учётом учётных данных
- Обнаружение подстановочных и нулевых источников
- **Анализ политики CSP**:
- Обнаружение отсутствующей/слабой Content Security Policy
- Директивы unsafe inline/eval
- Обнаружение подстановочных источников
- Паттерны обхода политики
- **Безопасность GraphQL**:
- Обнаружение запросов интроспекции
- Анализ названий чувствительных типов/полей
- Обнаружение поддержки пакетирования запросов
- Зондирование усиления с помощью псевдонимов (DoS)
- Активное фаззинг мутаций (`--active-checks`, поддерживает `--dry-run`)
- Доступность GraphiQL/Playground
- **Анализ JWT-токенов**:
- Путаница алгоритмов (alg=none, HS256→RS256)
- Обнаружение слабых секретов (подобранный список слов)
- Обнаружение долгоживущих токенов (отсутствующий/чрезмерный срок действия)
- Раскрытие чувствительных утверждений
- Извлечение токенов из заголовков и cookie
- **Анализ OpenAPI/Swagger**:
- Проверка схем безопасности
- Обнаружение конечных точек для загрузки файлов
- Отметка устаревших операций
- Отсутствие определений безопасности
- Кэширование спецификаций для производительности
- **Покрытие gRPC/Protobuf**:
- Обнаружение метаданных/типа содержимого ответа gRPC
- Обнаружение подсказок поверхности protobuf из метаданных/формы путей конечных точек
- Опциональные активные сигналы рефлексии/здоровья на известных gRPC-путях
- **Обнаружение раскрытия секретов**:
- Ключи AWS (AKIA*, секретные ключи)
- Ключи Google API (AIza*)
- Токены GitHub (ghp_*, github_pat_*)
- Токены Slack (xox*)
- Ключи Stripe (sk_live_*, pk_live_*)
- URL баз данных, приватные ключи, токены bearer
- Контекстно-зависимая проверка (снижает количество ложных срабатываний)
- **Проверки безопасности API**:
- Перечисление HTTP-методов
- Обнаружение отладочных конечных точек
- Раскрытие листинга каталогов
- Наличие security.txt
- Анализ заголовков ответов (HSTS, X-Frame-Options и т.д.)
- Раскрытие сообщений об ошибках
### Активное тестирование безопасности (--active-checks)
- **Проверки безопасности API IDOR/BOLA** (трёхуровневый подход):
- Тестирование неаутентифицированного доступа
- Сравнение ответов через отпечатки тела плюс стабильные снимки заголовков
- Перебор ID (±2 в диапазоне)
- Обход авторизации между пользователями (двойная учётка)
- Зондирование слепого SSRF callback через URL-параметры стиля callback (`APIHUNTER_OAST_BASE`, поддерживает `--dry-run`)
- Обнаружение и зондирование обхода шлюза (`api_security/gateway-*`)
- **Уязвимости массового присвоения**:
- Инъекция отражённых чувствительных полей
- Обнаружение сохранённых изменений состояния
- Верификация Базовый→Мутировать→Подтвердить
- Повышение привилегий через инъекцию полей
- **Безопасность OAuth/OIDC**:
- Обход проверки URI перенаправления
- Обработка параметра state
- Обнаружение поддержки PKCE
- Усиление конфигурации метаданных
- Обнаружение неявного потока и потока с паролем
- **Ограничение частоты**:
- Зондирование пакетных запросов
- Обнаружение отсутствия ограничения частоты
- Проверка заголовка Retry-After
- Тесты обхода через подделку IP-заголовков
- **Безопасность WebSocket**:
- Принятие обновления на общих путях
- Тестирование проверки источника
- Проверки отсутствия аутентификации
- **Движок CVE-шаблонов**:
- Каталог шаблонов на TOML
- Поддержка импорта YAML Nuclei
- Дифференциальное сопоставление базового сценария и обхода
- Дедупликация по хосту+шаблону
- Шлюзы качества загрузчика пропускают недопустимые/небезопасные шаблоны запросов (например, неразрешённые заполнители запросов)
- Контекстно-зависимое сопоставление по сегментам снижает чрезмерное срабатывание по подстроке пути
- Текущий локальный каталог: 168 шаблонов (включает подобранные усиленные проверки, такие как CVE-2022-22947, CVE-2021-29442, CVE-2021-29441, CVE-2020-13945, CVE-2021-45232, CVE-2022-24288)
### Обнаружение и перечисление
- **Обнаружение конечных точек**:
- Парсинг robots.txt
- Парсинг sitemap.xml
- Импорт спецификаций OpenAPI/Swagger
- Импорт файлов HAR (интеграция с Excalibur)
- Импорт коллекций Postman/Insomnia (`--collection`)
- Извлечение конечных точек из JavaScript
- Фильтрация по тому же хосту
- **Предварительная фильтрация доступности URL**:
- Быстрая предварительная проверка для пропуска недоступных конечных точек
- Настраиваемый таймаут
- Опциональный обход с `--no-filter`
### Производительность и надёжность
- **Адаптивная конкурентность (AIMD)**:
- Автоматическая регулировка скорости на основе ошибок
- Аддитивное увеличение (каждые 5 с)
- Мультипликативное снижение при 429/503/таймаутах
- **Стелс и обход WAF**:
- Ротация User-Agent из пула во время выполнения (assets/user_agents.txt с более чем 100 реальными UAs)
- Встроенные запасные UAs, если файл недоступен
- Случайный джиттер задержки для предотвращения паттернов обнаружения
- Принудительная синхронизация для каждого хоста (не глобальная)
- Логика повторных попыток с экспоненциальной задержкой
- Инъекция пользовательских заголовков (X-Forwarded-For, Referer и т.д.)
- Адаптивная синхронизация на основе ответов 429/503
- Режим вежливости для кооперативного тестирования
- Отсутствие отпечатков сканера в User-Agent или заголовках по умолчанию
- **Управление ресурсами**:
- Параллелизм, ограниченный семафором
- Пулы HTTP-клиентов для каждого хоста
- Повторное использование и пулинг соединений
- Настраиваемые таймауты и повторы
- **Обработка ошибок**:
- Восстановление после паник через JoinSet
- Захваченные ошибки сообщаются отдельно
- Корректная деградация при сбоях сканера
### Вывод и отчётность
- **Несколько форматов вывода**:
- Pretty JSON (человекочитаемый)
- NDJSON (потоковый, парсируемый)
- SARIF 2.1.0 (сканирование кода GitHub/GitLab)
- **Сравнение с базовым сценарием**:
- Создание снимков базового сценария
- Сравнение сканов для отчёта только о новых находках
- Идеально для регрессионного тестирования
- **Автосохранение отчётов** (включено по умолчанию, отключить с `--no-auto-report`):
- Сохраняется в ~/Documents/ApiHunterReports/<timestamp>/
- findings.json (структурированные находки)
- summary.md (отчёт в Markdown)
- scan.log (журнал выполнения)
- **Потоковая передача в реальном времени**:
- Потоковая передача находок по мере их обнаружения
- Формат NDJSON для живого разбора
- Отслеживание прогресса
- **Фильтрация по серьёзности**:
- Фильтр по минимальной серьёзности (info/low/medium/high/critical)
- Порог сбоя для CI/CD
- Битовая маска кода завершения (0x01 находки, 0x02 ошибки)
### Интеграция и расширяемость
- **Подключаемая архитектура сканера**:
- Реализуйте трейт Scanner для добавления модулей
- Асинхронный дизайн
- Независимое выполнение сканеров
- Изоляция паник для каждого сканера
- **Расширяемость на основе TOML**:
- Каталог CVE-шаблонов в assets/cve_templates/*.toml
- Для добавления новых проверок не требуется изменений кода
- Обнаружение уязвимостей на основе шаблонов
- Формат шаблонов, поддерживающий обмен сообществом
- **Импорт шаблонов Nuclei**:
- Бинарный файл template-tool для конвертации YAML → TOML
- Автоматический перевод матчеров (status, word, regex, dsl)
- Безопасное извлечение цепочек предварительных запросов
- Сохраняет логику обнаружения из исходных шаблонов
- **Двойная модель расширения**:
- **На основе кода**: Пишите Rust-сканеры, реализующие трейт Scanner для сложной логики
- **На основе шаблонов**: Пишите TOML-шаблоны для сигнатурных проверок (CVE, неправильные конфигурации)
- Лучшее из двух миров: производительность + гибкость
- **Дополнительные инструменты**:
- Расширение браузера Excalibur (захват HAR)
- BurpAPIsecuritysuite (ручное тестирование)
- Рабочий процесс: Захват → Автоматизация → Углублённое тестирование
### Конфигурация и управление
- **Гибкий ввод**:
- Списки URL из файлов
- stdin (передача из других инструментов)
- Импорт файлов HAR
- Импорт коллекций Postman/Insomnia
- Импорт спецификаций OpenAPI
- **Детализированное управление сканерами**:
- Включение/отключение отдельных сканеров
- Активный vs пассивный режим
- Пробный запуск для активных проверок
- Конфигурация для каждого сканера
- **Сетевая конфигурация**:
- Поддержка HTTP/HTTPS прокси
- Управление проверкой TLS-сертификатов
- Пользовательские заголовки и cookie
- Настраиваемые таймауты и повторы
- **Профили сканирования**:
- quickscan.sh (быстрое, низкое воздействие)
- deepscan.sh (комплексное, активные проверки)
- inaccessiblescan.sh (повторная проверка ранее недоступных целей с более медленными настройками)
- baselinescan.sh (создание базового сценария)
- diffscan.sh (сравнение с базовым сценарием)
- authscan.sh (аутентифицированное сканирование)
- sarifscan.sh (интеграция с CI/CD)
- scan-and-report.sh (запуск скана + вывод пути последнего отчёта)
- split-by-host.sh (разделение целей по хосту и опциональное распределение сканов)
## Сравнение с другими инструментами| Особенность | ApiHunter | Nuclei | ZAP | Burp Suite | ffuf |
|---------|-----------|--------|-----|------------|------|
| **Язык** | Rust | Go | Java | Java | Go |
| **Производительность** | ⚡⚡⚡ Асинхронная, адаптивная конкурентность | ⚡⚡ Быстрый параллельный | ⚡ Умеренная | ⚡ Умеренная | ⚡⚡⚡ Очень быстрый |
| **API-ориентированный дизайн** | ✅ Создан для API | ❌ Общий веб | ⚠️ Гибридный | ⚠️ Гибридный | ❌ Ориентация на фаззинг |
| **Фильтрация ложных срабатываний** | ✅ Обнаружение SPA, валидация тела, проверка referer | ⚠️ Зависит от шаблонов | ⚠️ Много ложных срабатываний | ✅ Хорошая | N/A |
| **Анализ CORS/CSP** | ✅ Глубокий анализ политик | ⚠️ Базовые шаблоны | ✅ Хороший | ✅ Хороший | ❌ |
| **Интроспекция GraphQL** | ✅ Раскрытие схемы + проверки конфиденциальных полей | ⚠️ Базовое обнаружение | ⚠️ Ограниченный | ✅ Через расширения | ❌ |
| **OpenAPI/Swagger** | ✅ Анализ схем безопасности | ❌ | ✅ Только импорт | ✅ Импорт + сканирование | ❌ |
| **Анализ JWT** | ✅ alg=none, слабые секреты, срок действия | ⚠️ Через шаблоны | ⚠️ Ограниченный | ✅ Через расширения | ❌ |
| **Обнаружение IDOR/BOLA** | ✅ 3 уровня (неавторизованный/диапазон/между пользователями) | ⚠️ Ручные шаблоны | ⚠️ Ограниченный | ✅ Ручное тестирование | ❌ |
| **Обнаружение секретов** | ✅ Контекстно-зависимое (фронтенд vs бэкенд) | ⚠️ На основе регулярных выражений | ⚠️ Базовое | ⚠️ Базовое | ❌ |
| **Активные проверки** | ✅ По желанию (IDOR, массовое присвоение, OAuth/OIDC, websocket, ограничение скорости, шаблоны CVE) | ✅ На основе шаблонов | ✅ Активное сканирование | ✅ Активное сканирование | ✅ Фаззинг |
| **Обход WAF** | ✅ Ротация UA, задержки, повторные попытки, адаптивное время | ⚠️ Базовый | ⚠️ Ограниченный | ✅ Хороший | ⚠️ Базовый |
| **Интеграция CI/CD** | ✅ NDJSON, SARIF, коды завершения | ✅ JSON, SARIF | ⚠️ Отчеты XML | ⚠️ XML/JSON | ✅ JSON |
| **Сравнение базовых линий** | ✅ Встроенный | ❌ Внешние инструменты | ❌ | ❌ | ❌ |
| **Потоки аутентификации** | ✅ Предварительный вход на основе JSON перед сканированием | ⚠️ Внедрение заголовков | ✅ Управление сессиями | ✅ Управление сессиями | ⚠️ Внедрение заголовков |
| **Потоковый вывод** | ✅ NDJSON в реальном времени | ❌ Только пакетный | ❌ | ❌ | ✅ |
| **Использование ресурсов** | 🟢 Низкое (Rust) | 🟢 Низкое (Go) | 🟡 Высокое (Java) | 🟡 Высокое (Java) | 🟢 Низкое (Go) |
| **Кривая обучения** | 🟢 Простой CLI | 🟢 Синтаксис шаблонов | 🟡 Сложность GUI | 🔴 Крутая | 🟢 Простой |
| **Расширяемость** | ✅ Система трейтов Rust | ✅ Шаблоны YAML | ✅ Дополнения | ✅ Расширения | ⚠️ Ограниченная |
| **Лицензия** | MIT (Бесплатно) | MIT (Бесплатно) | Apache 2.0 (Бесплатно) | Коммерческая | MIT (Бесплатно) |
| **Лучше всего подходит для** | Безопасность API в CI/CD, регрессионное тестирование, анализ CORS/GraphQL/JWT | Общее сканирование уязвимостей, обнаружение CVE | Полное тестирование веб-приложений на проникновение | Ручное тестирование на проникновение, сложные рабочие процессы | Фаззинг директорий/параметров |
### Ключевые отличия
**ApiHunter:** дизайн, ориентированный на API, обнаружение SPA, сравнение базовых линий, 3-уровневое IDOR/BOLA, контекстно-зависимые секреты, конкурентность AIMD, **скрытность/обход WAF (ротация UA, джиттер, адаптивное время)**, **двойная расширяемость (шаблоны TOML + модули Rust)**
**Nuclei:** более широкое покрытие CVE, только шаблоны YAML, базовый обход
**ZAP/Burp:** ручное тестирование, прокси-рабочие процессы, расширения на основе GUI, ограниченная скрытность
**ffuf:** чистый фаззинг, обнаружение контента, ограниченная расширяемость, базовый обход
## Quick Start```bash
cargo build --release
# Scan URLs from a file (newline-delimited)
./target/release/apihunter --urls ./targets/cve-regression-real-public.txt --format ndjson --output ./results.ndjson
# Or scan URLs from stdin
cat ./targets/cve-regression-real-public.txt | ./target/release/apihunter --stdin --min-severity medium
ApiHunter также поставляет настольное приложение в apps/desktop.```bash
cd apps/desktop
npm install
npm run tauri dev
Ввод для сканирования через десктоп поддерживает:
- Ручной ввод нескольких целей (один URL на строку или через запятую)
- Импорт CSV через `Load CSV` (макс. 307 200 байт / 300 КиБ)
- Предустановки направленного сканирования: `Quick Passive` и `Deep Active`
- Жёсткий лимит: до 3000 целей за запуск (дедуплицированные и проверенные как абсолютные URL `http/https`)
- Контроль области: включение/выключение обнаружения, фильтрация доступности + тайм-аут, макс. конечных точек на сайт
- Контроль версионирования API: опциональный переключатель глубокого зондирования различий ответов
- Расширенные элементы управления: прокси, заголовки, куки, аутентификация Bearer/Basic, переключатель недействительных TLS-сертификатов
- Ввод корреляции обратного вызова для Blind SSRF (`OAST callback base`) для активных проверок
- Элементы управления производительностью: клиенты на хост, адаптивный параллелизм, обход WAF с пользовательским пулом User-Agent
- Полное покрытие переключателями сканера, включая `API Versioning` и `gRPC/Protobuf`
- Сворачиваемые секции сканирования с каретками, выровненными по правому краю; `Safety and Scan Behavior`, `Runtime Limits` и `Scanner toggles` свёрнуты по умолчанию
- Карточки прогресса параллельного выполнения с моментальными снимками завершения/находок по каждой цели
- Панель аналитики результатов: тепловая карта серьёзности, карточка наихудшей цели, эффективность сканирования, покрытие сканера, топ уязвимых путей, разбивка по серьёзности проверок
- Сохранение сессии: автоматическое восстановление последних результатов сканирования при следующем запуске
- Панель режима обогащения: загрузка NDJSON с находками, запуск обогащения данными об угрозах, продвижение хостов с высокими оценками непосредственно в полное сканирование с пресетом Deep Active
- Интерфейс экспорта: метки размера + `Save All Reports` + имена файлов с временными метками для каждого запуска; экспорт включает пакеты JSON по целям, NDJSON, SARIF, коллекцию Insomnia и данные Insomnia Runner
См. [HOWTO.md](https://github.com/teycir/apihunter/blob/HEAD/HOWTO.md) для подробного использования, [docs/lab-setup.md](https://github.com/teycir/apihunter/blob/HEAD/docs/lab-setup.md) для лабораторных работ по проверке CVE на основе Vulhub и [docs/](https://github.com/teycir/apihunter/blob/HEAD/docs/) для внутренних механизмов.
Если вам нужен релизный десктопный бинарник:```bash
cd apps/desktop
npm run tauri build
./src-tauri/target/release/apihunter-desktop
Установить кликабельную иконку/запускатель приложения Linux:```bash cd apps/desktop npm run desktop:install-icon
Примечание: запуск dev-среды теперь использует собранные фронтенд-ресурсы напрямую и не требует отдельного сервера `localhost:1420`.
См. [HOWTO.md](https://github.com/teycir/apihunter/blob/HEAD/HOWTO.md) для подробного использования, [docs/lab-setup.md](https://github.com/teycir/apihunter/blob/HEAD/docs/lab-setup.md) для лабораторных работ по проверке CVE на основе Vulhub и [docs/](https://github.com/teycir/apihunter/blob/HEAD/docs/) для внутренней документации.
### Пример NDJSON-находки```json
{
"url": "https://api.example.com/graphql",
"check": "graphql/introspection-enabled",
"title": "GraphQL introspection is enabled",
"severity": "MEDIUM",
"detail": "Introspection query returned schema metadata from a public endpoint.",
"evidence": "POST /graphql -> HTTP 200 with __schema fields in response body",
"scanner": "graphql",
"timestamp": "2026-03-19T14:02:11.824Z"
}
main.rs ──► cli.rs (args) ──► config.rs (Config) │ runner.rs (orchestration) ┌──────┴────────────────────────────┐ discovery/ scanner/ ├─ robots.rs ├─ cors.rs ├─ sitemap.rs ├─ csp.rs ├─ swagger.rs ├─ jwt.rs ├─ js.rs ├─ graphql.rs ├─ headers.rs ├─ openapi.rs └─ common_paths.rs ├─ api_security.rs ├─ api_versioning.rs ├─ grpc_protobuf.rs ├─ mass_assignment.rs ├─ oauth_oidc.rs http_client.rs ├─ rate_limit.rs auth.rs ├─ cve_templates.rs waf.rs └─ websocket.rs reports.rs error.rs
**Поток:** CLI args → Config → Runner orchestrates Discovery + Scanners → HTTP Client (with Auth/WAF) → Reports
## Template Tooling
ApiHunter поддерживает **двойную расширяемость**: добавляйте проверки через **TOML templates** (без кода) или **Rust modules** (полный контроль).
### Формат шаблона TOML
Создавайте пользовательские проверки в `assets/cve_templates/*.toml`:```toml
id = "custom-api-check"
name = "Custom API Vulnerability"
severity = "high"
[[requests]]
method = "GET"
path = "/api/vulnerable"
[[requests.matchers]]
type = "status"
values = [200]
[[requests.matchers]]
type = "word"
part = "body"
words = ["sensitive_data", "exposed"]
Преобразуйте существующие шаблоны Nuclei в формате YAML:```bash
cargo run --bin template-tool -- import-nuclei
--input tests/fixtures/upstream_nuclei/CVE-2022-24288.yaml
--output assets/cve_templates/cve-2022-24288.toml
### Добавление пользовательских сканеров на Rust
Реализуйте трейт `Scanner` для сложной логики:```rust
#[async_trait]
impl Scanner for MyCustomScanner {
async fn scan(
&self,
url: &str,
client: &HttpClient,
config: &Config,
) -> (Vec<Finding>, Vec<CapturedError>) {
// Your custom scanning logic
}
}
См. HOWTO.md и docs/scanners.md для подробностей.
ScanScripts/ содержит удобные обёртки для типовых профилей сканирования:
--auth-flow, включает активные проверки, обход WAF, retries: 2, timeout: 15s, delay: 150ms)./ScanScripts/quickscan.sh targets/cve-regression-real-public.txt
cat targets/cve-regression-real-public.txt | ./ScanScripts/deepscan.sh --stdin
./ScanScripts/baselinescan.sh targets/cve-regression-real-public.txt
./ScanScripts/diffscan.sh targets/cve-regression-real-public.txt baseline.ndjson
./ScanScripts/authscan.sh targets/cve-regression-real-public.txt --auth-flow auth.json
./ScanScripts/sarifscan.sh targets/cve-regression-real-public.txt
./ScanScripts/split-by-host.sh targets/cve-regression-real-public.txt --scan-cmd ./ScanScripts/quickscan.sh --jobs 4
All wrapper scripts except `split-by-host.sh` support `--stdin` and trailing ApiHunter flags.
## Стратегия тестирования
Тестирование ApiHunter разделено по намерениям:
- **Модульные тесты** (`tests/*_scanner.rs`, тесты парсера/конфигурации): логика сканеров и граничные случаи.
- **Интеграционные тесты** (`tests/integration_runner.rs`, поведение запуска/CLI): оркестрация и связывание времени выполнения.
- **Регрессионные тесты на фикстурах** (`tests/cve_templates_real_data.rs`, `tests/cve_templates_upstream_parity.rs`): воспроизведение реальных полезных нагрузок и сравнение с фиксированными вышестоящими шаблонами.
- **Тесты с mock-сервером** (несколько наборов сканеров): проверки детерминированного поведения без использования интернет-целей.
- **Проверки на живых целях**: опционально/вручную (не входят в стандартный `cargo test`).
См. специальное [Руководство по тестированию](https://github.com/teycir/apihunter/blob/HEAD/docs/testing.md) для получения полной матрицы тестов и карты покрытия.
Запустите сфокусированные наборы:```bash
cargo test --test cors_scanner
cargo test --test graphql_scanner
cargo test --test cve_templates_runtime_ext
cargo test --test integration_runner
Запустить полную проверку:```bash cargo test
Запустите шлюз интеграции с реальными данными (фикстуры + игнорируемые живые наборы):```bash
# Fixture-backed real payload regression suites
cargo test --test cve_templates_real_data --test cve_templates_upstream_parity --test cve_templates_runtime_ext
# Manual live internet integration suites (ignored by default)
cargo test --test live_vulnerable_apis --test live_real_world_targets -- --ignored
Живые наборы используют целевые инвентаризации по умолчанию:
targets/vuln-api-regression-real-public.txttargets/real-world-integration-public.txtВы можете переопределить с помощью:
APIHUNTER_LIVE_VULN_TARGET_FILE или APIHUNTER_LIVE_VULN_TARGETSAPIHUNTER_LIVE_REAL_TARGET_FILE или APIHUNTER_LIVE_REAL_TARGETSПолная документация доступна в docs/. Начните с:
Завершено (v0.7.0): переработка Glass UI, постоянство сканирования (хранилище последнего скана), панель аналитики результатов (тепловая карта серьезности, карточка худшей цели, эффективность сканирования, покрытие сканера, разбивка по серьезности проверок), поток продвижения Enrich → Deep-Scan, режим триажа/угроз-разведки, конфигурация обнаружения, сканеры WebSocket/Mass-Assignment/OAuth/Rate-Limit/CVE, расширенный импортер Nuclei, образ Docker
Далее: разделение компонента App.tsx, кольцевой буфер истории сканирования, ящик деталей находки, экспорт отчетов HTML/PDF, нативное действие GitHub Actions, тайминг по целям в живом процессе
Требуется стабильная версия Rust (протестировано на 1.76+).```bash git clone https://github.com/Teycir/ApiHunter cd ApiHunter cargo build --release
### Предварительно собранные артефакты релизов
Помеченные релизы (`v*`) публикуют предварительно собранные бинарные файлы `apihunter` для:
- Linux (`x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`)
- macOS (`x86_64-apple-darwin`)
- Windows (`x86_64-pc-windows-msvc`)
Каждый релиз также публикует артефакты цепочки поставок:
- Файлы контрольных сумм SHA256 (`*.sha256`)
- Материалы подписей без ключа Sigstore (`*.sig`, `*.pem`, `*.sigstore.json`)
- SPDX JSON SBOM (`apihunter-release-assets-sbom.spdx.json`)
- Аттестации артефактов GitHub (метаданные происхождения и аттестации SBOM)
Скачать с [GitHub Releases](https://github.com/Teycir/ApiHunter/releases).
### Установка настольного приложения (Tauri + React)
Исходный код десктопного приложения находится в `apps/desktop`.
Сборка и запуск производственного десктопного бинарного файла:```bash
cd apps/desktop
npm install
npm run tauri build
./src-tauri/target/release/apihunter-desktop
Для режима разработки:```bash cd apps/desktop npm run tauri dev
Установите кликабельный значок лаунчера Linux:```bash
cd apps/desktop
npm run desktop:install-icon
Desktop features (brief):
Quick Passive и Deep Activedocker build -t apihunter:local . docker run --rm apihunter:local --help
Запустите сканирование из файлов в вашей текущей директории:```bash
docker run --rm -v "$PWD:/work" apihunter:local \
--urls /work/targets/cve-regression-real-public.txt \
--format ndjson \
--output /work/results.ndjson
*Необходимо указать ровно один из параметров: --urls, --stdin, --har или --collection.
--proxy не отключает TLS-проверку сам по себе. Проверки сертификатов остаются включёнными, если явно не установлен флаг --danger-accept-invalid-certs.--danger-accept-invalid-certs предназначен только для контролируемого лабораторного/отладочного использования. При включении этого флага ApiHunter выводит явное предупреждение во время выполнения.--waf-evasion и активные проверки могут вызывать срабатывания IDS/WAF. Запускайте только с явным письменным разрешением и в согласованные временные окна тестирования.ApiHunter является частью дополнительного набора инструментов для тестирования безопасности:
--har и --session-file.Рабочий процесс: Захват трафика с помощью Excalibur → Автоматический базовый анализ с помощью ApiHunter → Глубокое ручное тестирование с помощью BurpAPIsecuritysuite
Автор: Teycir Ben Soltane
Email: [email protected]
Сайт: teycirbensoltane.tn
В: Почему ApiHunter, а не Nuclei/ZAP/Burp?
О: Ориентация на API, обнаружение SPA, сравнение с базовым уровнем, трёхуровневый IDOR, контекстно-зависимые секреты. Дополняет Nuclei (покрытие CVE) и ZAP/Burp (ручное тестирование).
В: Безопасно ли использовать в промышленной среде?
О: Да. Используйте --delay-ms и снизьте --concurrency. Попробуйте quickscan.sh.
В: Аутентифицированные сканирования?
О: --auth-bearer, --auth-basic или --auth-flow. Для IDOR: --auth-flow-b.
В: Сравнение скорости (1000 конечных точек)?
Зависит от задержки конечных точек, количества повторных попыток, поведения цели и включённых проверок. Используйте --concurrency, --delay-ms и --active-checks для настройки пропускной способности и влияния.
В: Медленное сканирование?
Увеличьте --concurrency (по умолчанию: 20), уменьшите --delay-ms (по умолчанию: 150 мс), включите --adaptive-concurrency.
В: Форматы вывода?
pretty (по умолчанию), ndjson (потоковый), sarif (интеграция с CI).
В: Интеграция с CI/CD?```bash ./target/release/apihunter --urls targets/cve-regression-real-public.txt --fail-on medium --format sarif --output results.sarif
**В: Сравнение базовых линий?**```bash
./target/release/apihunter --urls targets/cve-regression-real-public.txt --format ndjson --output baseline.ndjson
./target/release/apihunter --urls targets/cve-regression-real-public.txt --baseline baseline.ndjson --format ndjson
В: Пассивные и активные проверки?
Пассивные (по умолчанию): анализ ответов. Активные (--active-checks): отправка специально созданных запросов (IDOR, массовое присвоение, OAuth, ограничение скорости, CVE-зонды).
В: Тестирование CORS?
Динамическая генерация источника: null, https://evil.com, https://<target>.evil.com, https://evil<target>. Проверяет обход регулярных выражений при отражении.
В: Обнаружение IDOR?
3 уровня: (1) неаутентифицированное получение, (2) перебор ID (±2), (3) межпользовательское (--auth-flow-b).
В: Обнаружение секретов?
Ключи AWS/Google/GitHub/Slack/Stripe, токены Bearer, URL-адреса БД, приватные ключи. Контекстно-зависимая проверка.
В: Cookies?
--cookies "session=abc", --session-file excalibur.json или --auth-flow login.json.
В: Прокси?
--proxy http://proxy.corp.com:8080
В: Отладочное логирование?
RUST_LOG=debug ./target/release/apihunter --urls targets/cve-regression-real-public.txt
В: Адаптивный параллелизм?
AIMD: увеличивается на 1 каждые 5 секунд, уменьшается вдвое при ошибках (429/503/таймауты). Включить с помощью --adaptive-concurrency.
В: Отключить сканеры?
--no-cors, --no-csp, --no-graphql, --no-api-security, --no-jwt, --no-openapi, --no-api-versioning, --no-mass-assignment, --no-oauth-oidc, --no-rate-limit, --no-cve-templates, --no-websocket.
В: Является ли ApiHunter скрытным?
О: Да. Возможности: ротация UA из 100+ реальных браузеров (assets/user_agents.txt), случайные задержки с джиттером, ограничение скорости на хост, адаптивное отступление при 429/503, отсутствие отпечатков сканера в заголовках, экспоненциальная логика повторных попыток, внедрение пользовательских заголовков. Включить с помощью --waf-evasion.
В: Как работает обход WAF?
О: Автоматически ротирует User-Agent из подобранного пула, добавляет случайный джиттер к задержкам, обеспечивает тайминг на хост (не глобальные всплески), экспоненциально отступает при ограничениях скорости и позволяет внедрять пользовательские заголовки для смешивания с легитимным трафиком. В заголовках по умолчанию отсутствуют строки "scanner".
См. CONTRIBUTING.md для руководства по разработке.
| Флаг | По умолчанию | Описание |
|---|
--urls | обязательно* | Путь к файлу с URL, разделёнными новой строкой |
--stdin | off | Чтение URL, разделённых новой строкой, из stdin |
--har | off | Импорт вероятных URL запросов API из HAR (log.entries[].request.url) |
--collection | off | Импорт вероятных URL запросов API из экспортированного JSON коллекции Postman/Insomnia |
--output | stdout | Запись результатов в файл вместо stdout |
--format | pretty | Формат вывода: pretty, ndjson или sarif |
--stream | off | Потоковая передача результатов NDJSON по мере их поступления |
--baseline | none | Базовый NDJSON для поиска только различий |
--quiet | off | Подавить вывод не-ошибочных данных в stdout |
--summary | off | Выводить сводку даже в тихом режиме |
--no-auto-report | off | Не создавать локальные автоматические отчёты в ~/Documents/ApiHunterReports |
--min-severity | info | Фильтровать находки ниже этого уровня |
--fail-on | medium | Завершаться с ненулевым кодом при уровне серьёзности не ниже этого |
--concurrency | 20 | Максимальное количество одновременных запросов |
--max-endpoints | 50 | Ограничение числа сканируемых конечных точек на сайт (0 = без ограничений) |
--delay-ms | 150 | Минимальная задержка между запросами к одному хосту (мс) |
--retries | 1 | Количество повторных попыток при временной ошибке |
--timeout-secs | 8 | Тайм-аут запроса в секундах |
--no-filter | off | Пропустить предварительную фильтрацию недоступных URL |
--filter-timeout | 3 | Тайм-аут предварительной проверки доступности (секунды) |
--no-discovery | off | Пропустить обнаружение конечных точек и сканировать только предоставленные начальные URL |
--waf-evasion | off | Включить эвристики обхода WAF |
--user-agents | none | Список UA через запятую (включает обход WAF) |
--headers | none | Дополнительные заголовки запросов (например, Authorization: Bearer ...) |
--cookies | none | Куки через запятую (например, session=abc,theme=dark) |
--auth-bearer | none | Добавить Authorization: Bearer <token> |
--auth-basic | none | Добавить HTTP Basic аутентификацию (user:pass) |
--auth-flow | none | JSON-файл с потоком аутентификации (логин перед сканированием) |
--auth-flow-b | none | Второй поток аутентификации для перекрёстных проверок IDOR между пользователями |
--unauth-strip-headers | none | Имена дополнительных заголовков, которые нужно удалять при неаутентифицированных проверках |
--session-file | none | Загрузить/сохранить куки из JSON-файла сессии Excalibur ({"hosts": {...}}) |
--proxy | none | URL HTTP/HTTPS прокси |
--danger-accept-invalid-certs | off | Пропустить проверку TLS-сертификатов |
--active-checks | off | Включить активные (потенциально инвазивные) проверки |
--dry-run | off | Сухой прогон активных проверок (отчёт о предполагаемых проверках без отправки мутирующих запросов) |
--response-diff-deep | off | Включить более глубокие варианты проверки различий ответов при проверках версионирования API |
--per-host-clients | off | Использовать отдельные пулы HTTP-клиентов для каждого хоста |
--adaptive-concurrency | off | Адаптивная конкурентность (AIMD) |
--no-cors | off | Отключить сканер CORS |
--no-csp | off | Отключить сканер CSP |
--no-graphql | off | Отключить сканер GraphQL |
--no-api-security | off | Отключить сканер безопасности API |
--no-jwt | off | Отключить сканер JWT |
--no-openapi | off | Отключить сканер OpenAPI |
--no-api-versioning | off | Отключить сканер версионирования API |
--no-grpc-protobuf | off | Отключить сканер gRPC/Protobuf |
--no-mass-assignment | off | Отключить сканер массового присваивания (активные проверки) |
--no-oauth-oidc | off | Отключить сканер OAuth/OIDC (активные проверки) |
--no-rate-limit | off | Отключить сканер ограничения скорости (активные проверки) |
--no-cve-templates | off | Отключить сканер шаблонов CVE (активные проверки) |
--no-websocket | off | Отключить сканер WebSocket (активные проверки) |
| Код | Значение |
|---|
0 | Нет находок на уровне/выше порога --fail-on и нет ошибок |
1 | Одна или несколько находок на уровне/выше порога --fail-on |
2 | Один или несколько сканеров зафиксировали ошибки |
3 | И находки, и ошибки |