Strix через RouterAI: автономный пентест-агент на своей модели (Claude, GPT-6, GLM)
Strix
Strix — open-source агент для автономного пентеста (репозиторий usestrix/strix, лицензия Apache 2.0). Он запускает команду агентов, которые изучают код, API и веб-приложение, ищут уязвимости и проверяют их рабочим proof-of-concept в изолированной песочнице, а затем собирают отчёт с описанием и рекомендациями по исправлению. Принцип тот же, что у автономного ИИ-агента: модель сама планирует шаги и вызывает инструменты.
Strix работает поверх LiteLLM, поэтому модель подключается переменными окружения. Через RouterAI вы получаете в одном агенте Claude, GPT, GLM и DeepSeek из каталога моделей, работу из России без VPN и оплату в рублях.
Только законное использование. Strix активно атакует цели, которые вы ему указали. Запускайте его только против своих систем или тех, на которые есть явное письменное разрешение, и в согласованных границах. Для тренировки используйте заведомо уязвимые учебные приложения вроде OWASP Juice Shop. Несанкционированное тестирование незаконно в большинстве юрисдикций. Эта статья описывает только настройку и чтение отчёта.
Требования
- Docker (запущенный): в нём работает песочница агента на базе Kali Linux
- Linux, macOS или Windows (установщик поддерживает Windows через
.zip-сборку) - API-ключ из личного кабинета
- Достаточно памяти и диска для образа песочницы: образ скачивается при первом запуске
Сам Strix запускается на хосте как CLI. Docker нужен ему, чтобы поднять контейнер-песочницу с браузером, прокси Caido и набором утилит, поэтому запускать сам CLI внутри контейнера не нужно.
Установка
Рекомендуемый способ из документации проекта — установочный скрипт:
curl -sSL https://strix.ai/install | bash
Альтернатива — pipx:
pipx install strix-agent
Скрипт устанавливает бинарник strix. Образ песочницы (по умолчанию ghcr.io/usestrix/strix-sandbox, его можно заменить переменной STRIX_IMAGE) Strix скачивает автоматически при первом запуске. Обновление: strix --update.
Подключение к RouterAI
Strix читает три переменные. Они есть в справочнике по конфигурации:
| Переменная | Что задаёт | Значение для RouterAI |
|---|---|---|
STRIX_LLM |
Модель в формате LiteLLM |
openai/anthropic/claude-sonnet-5.5 (префикс openai/, см. ниже) |
LLM_API_KEY |
Ключ провайдера | Ваш ключ RouterAI |
LLM_API_BASE |
Адрес API | https://routerai.ru/api/v1 |
Формат id модели
LiteLLM выбирает провайдера по первому сегменту id. Для OpenAI-совместимого шлюза нужен префикс openai/, а дальше — id модели из каталога без изменений. Поэтому anthropic/claude-sonnet-5.5 из каталога превращается в openai/anthropic/claude-sonnet-5.5. Без префикса openai/ LiteLLM пошлёт запрос по протоколу Anthropic на неверный адрес и вернёт 404.
Настройка переменных
Ключ не нужно печатать в команде: так он попадёт в историю оболочки. Прочитайте его без эха в переменную текущей сессии:
read -rs -p "RouterAI API key: " LLM_API_KEY && export LLM_API_KEY
export LLM_API_BASE="https://routerai.ru/api/v1"
export STRIX_LLM="openai/anthropic/claude-sonnet-5.5"
export STRIX_API_TYPE="chat_completions"
Если ключ уже лежит в менеджере секретов или в ~/.zshrc, достаточно export LLM_API_KEY="$ROUTERAI_API_KEY". Значение sk-xxxxxxxxxxxxxxxx в примерах — заглушка.
STRIX_API_TYPE=chat_completions нужен потому, что Strix для части моделей по умолчанию ходит в Responses API, а собственный LLM_API_BASE этого выбора не меняет (документация). RouterAI отдаёт модели каталога через Chat Completions по адресу /api/v1.
Strix запоминает настройки в ~/.strix/cli-config.json, так что при следующих запусках переменные можно не задавать заново. Проверьте, что файл не попадёт в git и в бэкапы с открытым доступом.
Отдельная модель для дедупликации
Strix проверяет, не повторяет ли новая находка уже записанную. Эту задачу можно отдать дешёвой модели через STRIX_DEDUPE_MODEL, не трогая агентов, которые ведут тестирование. Для отдельной модели задайте ключ и адрес явно:
export STRIX_DEDUPE_MODEL="openai/z-ai/glm-5.3-flash"
export DEDUPE_LLM_API_KEY="$LLM_API_KEY"
export DEDUPE_LLM_API_BASE="https://routerai.ru/api/v1"
Выбор модели
Агент делает длинные цепочки вызовов: разведка, чтение кода, запросы к цели, проверка находки. Контекст растёт с каждым шагом, поэтому важны большое окно (у всех моделей таблицы оно около 1 млн токенов) и надёжный вызов инструментов. Об уровне рассуждений читайте в статье про reasoning-модели.
Все id проверены по каталогу RouterAI; цены за токены смотрите там же.
| Модель | Для чего |
|---|---|
z-ai/glm-5.3 |
Основная для длинных прогонов: проект рекомендует GLM-5.3 в своей документации |
deepseek/deepseek-v4.1-flash-1017 |
Дешёвый вариант для quick и standard, он же в списке рекомендуемых у Strix |
anthropic/claude-sonnet-5.5 |
Разбор сложных цепочек и написание отчёта |
openai/gpt-6-astra |
Максимальная мощность для критичных целей (GPT-6: Luna, Sol, Astra) |
z-ai/glm-5.3-flash, anthropic/claude-haiku-5.5
|
Рутинные шаги и роль STRIX_DEDUPE_MODEL (обзор Haiku 5.5) |
Важно про отказы. Документация Strix предупреждает: у флагманских моделей OpenAI, Anthropic и Google включены защитные классификаторы, и без программ допуска для кибербезопасности (Daybreak у OpenAI, Cyber Verification Program у Anthropic) они отказываются от большинства наступательных задач. Если агент отвечает отказами или просто «топчется на месте», смените модель на GLM или DeepSeek либо получите допуск у разработчика модели.
Сколько стоит прогон, зависит от режима, размера цели и модели: у цен за миллион токенов в каталоге разброс в сотни раз (от GLM 5.3 Flash и DeepSeek V4.1 Flash до GPT-6 Astra). Точную цифру для небольшого репозитория смотрите по первому запуску в quick с лимитом. Ограничьте расходы флагом --max-budget (в долларах для оценки Strix) и режимом --scan-mode quick; при достижении лимита неинтерактивный запуск завершается корректно со статусом stopped. Если Strix не знает цену вашей модели, задайте её переменными STRIX_LLM_INPUT_COST_PER_MTOK и STRIX_LLM_OUTPUT_COST_PER_MTOK, иначе бюджет считается неточно.
Проверка подключения
Перед боевым прогоном убедитесь, что RouterAI отвечает и модель есть в каталоге:
curl -s https://routerai.ru/api/v1/models -H "Authorization: Bearer $LLM_API_KEY" | head -c 200
При старте Strix сам проверяет модель коротким запросом. При ошибке он показывает LLM CONNECTION FAILED, ждать ответа он готов LLM_PREFLIGHT_TIMEOUT секунд (по умолчанию 30).
Первый прогон на учебной цели
Для практики возьмите OWASP Juice Shop — намеренно уязвимое приложение, которое официально запускается в Docker:
docker run --rm -p 3000:3000 bkimminich/juice-shop
Опубликованный порт открывает приложение для всех интерфейсов хоста. Запускайте его на личной машине или в изолированной сети и остановите после теста.
Затем запустите Strix. Режим quick занимает минуты, standard — от получаса до часа, deep (по умолчанию) — до нескольких часов:
strix --target http://<адрес-хоста>:3000 --scan-mode quick --max-budget 5
Адрес цели должен быть доступен из контейнера песочницы, а не только из вашего терминала: localhost внутри контейнера указывает на сам контейнер, поэтому используйте IP-адрес хоста в локальной сети. В документации Strix нет отдельной инструкции для целей на хосте, проверьте доступность адреса на своей конфигурации Docker.
Для CI и серверов добавьте -n: Strix работает без интерфейса, выводит находки и завершается с кодом 0 (чисто), 1 (ошибка) или 2 (найдены уязвимости). С флагом --fail-on high код 2 возвращается только при находках уровня high и выше.
Что смотреть в отчёте
Результаты каждого запуска лежат в strix_runs/<имя-запуска>/: vulnerabilities.json, vulnerabilities.csv, findings.sarif (SARIF 2.1.0) и отдельный Markdown-файл на каждую находку. Открыть их в локальной панели можно командой:
strix view
Панель привязана к 127.0.0.1 и печатает ссылку с токеном; не передавайте её посторонним.
На что обратить внимание в каждой находке:
- Серьёзность и CVSS. Начните с critical и high, остальное разберите после.
- Где найдено. Эндпоинт, параметр или файл с номером строки — по этому адресу вы будете чинить.
- Подтверждение. Strix приводит результат проверки в песочнице. Находка с подтверждением надёжнее, чем предположение по коду.
- Рекомендации. Описание причины и способ исправления. Исправляйте код в своём репозитории, а не вслепую применяйте предложенные правки.
- Повторы. Если похожие находки дублируются, задайте отдельную модель дедупликации.
Локальную директорию Strix монтирует в песочницу с правом записи, то есть агент может менять реальные файлы (кроме .git). Закоммитьте или спрячьте изменения до запуска по папке с кодом.
Решение проблем
Модель не найдена или 404
Почти всегда виноват id без префикса. Нужно openai/anthropic/claude-sonnet-5.5, а не anthropic/claude-sonnet-5.5: во втором случае LiteLLM идёт по протоколу Anthropic, и сервер отвечает 404 page not found. Проверьте и LLM_API_BASE: нужен адрес с /v1, то есть https://routerai.ru/api/v1.
401 Unauthorized
Strix читает ключ из LLM_API_KEY, а не из ROUTERAI_API_KEY или OPENAI_API_KEY. Убедитесь, что переменная экспортирована в том же терминале, и что в ~/.strix/cli-config.json не осталось старого значения. Ключ должен быть скопирован целиком из личного кабинета.
402 Payment Required
Недостаточно средств на балансе: пополните его в разделе Биллинг.
Docker не найден или не запущен
Strix завершится с ошибкой, если команда docker недоступна. Запустите Docker Desktop или службу docker и проверьте docker ps. Если на машине мало ресурсов, песочница с браузером и прокси может не стартовать или быть убита по памяти: увеличьте лимит памяти для Docker и закройте лишнее.
Таймауты на большом репозитории
Запросы к модели ограничены LLM_TIMEOUT (по умолчанию 300 секунд), число повторов при сбоях — STRIX_LLM_MAX_RETRIES (5). Для больших целей используйте --scan-mode quick или standard, уменьшите область (--target на каталог, а не на весь монорепозиторий), ограничьте число шагов --max-turns и поднимите LLM_TIMEOUT.
Агент не делает ничего полезного
Если модель выводит вызовы инструментов обычным текстом, а не структурированным tool_calls, Strix не может их выполнить (документация). Выберите модель с надёжной поддержкой инструментов из таблицы выше.
Что дальше
- Каталог моделей — подберите модель и сравните цены
- Аутентификация — управление API-ключами
- Вайб-кодинг в Crush — другой CLI-агент через RouterAI
- Документация Strix и справочник по CLI