
xalgorix v4.6.72
Автономные ИИ-агенты для пентеста — разведка в реальном времени, обнаружение уязвимостей и оркестрация эксплуатации. Go + TypeScript.
Xalgorix — пентестер с открытым исходным кодом на базе ИИ, который доказывает уязвимости
Большинство сканеров обнаруживают. Xalgorix доказывает. Автономный LLM-агент проходит полную методологию пентеста, после чего независимый верификатор повторно эксплуатирует каждую находку до того, как она будет включена в отчёт — так вы получаете доказательства, а не груду «возможно» для разбора. Self-hosted, приватный, с поддержкой собственного LLM. Написан на Go + TypeScript.
🚀 Быстрый старт · 💡 Почему Xalgorix · ✨ Возможности · 🎯 Сценарии использования · ☁️ Облако · 📖 Документация
📸 Скриншоты
🖥️ Self-hosted панель управления — работает локально на 127.0.0.1:9137
| Обзорная панель | Детали сканирования | Находки |
|---|---|---|
![]() | ![]() | ![]() |
☁️ Облачная панель управления — полностью управляемая версия на www.xalgorix.com
🤝 Спонсоры
Спасибо Swiftproxy за спонсорство Xalgorix.
Поведение вашего приложения может различаться в зависимости от того, откуда приходит запрос. Для пользователей Xalgorix, проверяющих собственные приложения в разных регионах, Swiftproxy предлагает таргетинг по местоположению для анализа регионального поведения и sticky-сессии, помогающие сохранять постоянный IP во время тестовой сессии. Поддерживаются HTTP(S) и SOCKS5 — те же прокси-протоколы, что поддерживает Xalgorix.
Резидентные прокси от $0.70/GB. Доступно бесплатное тестирование, а пользователи Xalgorix получают скидку 10% по промокоду PROXY90.
Ознакомьтесь со Swiftproxy и запросите бесплатный тест →
🚀 Быстрый старт
Установка (одной строкой):```bash curl -sSL https://www.xalgorix.com/install | bash
Скачивается предварительно собранный бинарный файл для вашей платформы (Linux или macOS, amd64/arm64) из последнего релиза. Затем запустите интерактивный мастер настройки:```bash
xalgorix --setup
Выберите провайдера, подтвердите модель и введите API-ключ, когда появится запрос. Для лучших результатов используйте актуальную фронтир-модель с сильными способностями к рассуждению, производительностью на длинном контексте и надёжным вызовом инструментов — например, последнюю доступную вам мощную модель GPT, Claude или Gemini. Меньшие или локальные модели по-прежнему поддерживаются, но могут требовать большего контроля во время длительных автономных сканирований. Xalgorix хранит ключ приватно в ~/.xalgorix.env (режим 0600) и может запустить дашборд за вас. Локальному Ollama API-ключ не нужен.
Если вы решите не запускать сразу, запустите позже с помощью xalgorix --web и откройте http://127.0.0.1:9137. Вы можете изменить провайдеров или расширенные параметры в любое время в разделе Settings → LLM или повторно запустить xalgorix --setup.
Или запустите с Docker — всё включено, инструментарий не нужен:```bash
docker run --rm -p 9137:9137
--privileged
-v xalgorix-data:/data
xalgord/xalgorix:latest
`--privileged` даёт набору инструментов тот же доступ к хосту, что и при нативном запуске от имени root. Стандартная песочница Docker отбрасывает возможности (например, `NET_ADMIN`) и применяет фильтр seccomp, что ломает низкоуровневые инструменты (изменения iptables/route, ARP-spoof/MITM, tun/tap VPN, отладчики на основе ptrace, настройка интерфейсов masscan). Поскольку образ не может сам предоставить себе эти возможности, их необходимо задать во время выполнения. Контейнер — это одноразовая, изолированная по сети песочница для сканирования, работающая от имени root — привилегированный режим является предполагаемой конфигурацией; никогда не выставляйте дашборд в публичный доступ без аутентификации. Предпочитаете минимальные привилегии? Замените `--privileged` на `--cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined`.
Откройте `http://localhost:9137`. Вам **не нужен ключ LLM для запуска** — дашборд запускается без него; задайте модель + API-ключ в разделе **Settings → LLM** (он сохраняется в томе `/data`). Если вы не передадите `XALGORIX_USERNAME`/`XALGORIX_PASSWORD`, при первом запуске будет сгенерирован случайный пароль администратора и выведен в логи контейнера.
**Самый простой способ — Docker Compose** (пробрасывает порт + постоянный том за вас):```bash
curl -sSLO https://raw.githubusercontent.com/xalgorix/xalgorix/main/docker-compose.yml
docker compose up -d
docker compose logs -f # shows the generated admin password on first start
Образ поставляется с обширным предустановленным набором инструментов для наступательной безопасности (nmap, nuclei, httpx, subfinder, katana, ffuf, gobuster, sqlmap, masscan, dalfox, feroxbuster и другие) и сохраняет доступность всех менеджеров пакетов (apt, go, cargo, pipx, npm), чтобы агент мог автоматически устанавливать всё недостающее во время выполнения. По замыслу он работает как root внутри контейнера — рассматривайте контейнер как одноразовую, изолированную от сети песочницу для сканирования и никогда не выставляйте панель управления без аутентификации. Образы публикуются как для amd64, так и для arm64.
Или соберите из исходного кода (требуется Go 1.26+ и Node.js):```bash git clone https://github.com/xalgorix/xalgorix.git cd xalgorix make build sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix
> [!TIP]
> Предпочитаете нулевую настройку? Полностью управляемая версия работает на [www.xalgorix.com](https://www.xalgorix.com/) — сканирование в один клик, без установки и API-ключей.
### 🤖 Автоматический обзор pull request'ов — бесплатное приложение GitHub
Хотите проверку безопасности для каждого pull request'а без настройки? Установите **[Xalgorix GitHub App](https://github.com/apps/xalgorix)**. Оно читает diff каждого PR и оставляет комментарий с обзором безопасности — инъекции, сломанная аутентификация/IDOR, SSRF, секреты, небезопасные паттерны — прямо в pull request'е. Обновляется на месте при новых коммитах, и вы можете написать **`@xalgorix review`**, чтобы перезапустить по требованию. Без workflow-файла, без API-ключа, без аккаунта — и это бесплатно.
<div align="center">
[**➕ Добавить Xalgorix в GitHub →**](https://github.com/apps/xalgorix/installations/new)
</div>
Для блокировки слияний и полноценных пентестов с подтверждением эксплойтов в CI используйте [hosted scanner](https://www.xalgorix.com/) или GitHub Action.
> [!IMPORTANT]
> Используйте Xalgorix только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
> [!TIP]
> Не хотите разворачивать самостоятельно? Полностью управляемая версия доступна на [www.xalgorix.com](https://www.xalgorix.com/) — сканирование в один клик, без установки и API-ключей.
## 📚 Содержание
| | | |
| --- | --- | --- |
| 📸 [Скриншоты](#-screenshots) | 🔩 [Конфигурация](#-configuration) | 🧾 [Переменные окружения](#-environment-variables) |
| 🚀 [Быстрый старт](#-quick-start) | 🆙 [Обновление](#-upgrading-from-previous-versions) | 🔤 [Префиксы провайдеров](#-provider-prefixes) |
| 🔎 [Обзор](#-overview) | 🏃 [Запуск](#-running) | 💻 [Справочник CLI](#-cli-reference) |
| 💡 [Почему Xalgorix](#-why-xalgorix) | 🧰 [Режим сервиса](#-service-mode) | 📡 [Сводка по API](#-api-summary) |
| 🎯 [Сценарии использования](#-use-cases) | 🔁 [Рабочий процесс Web UI](#-web-ui-workflow) | 💾 [Хранение данных](#-data-storage) |
| ✨ [Возможности](#-features) | 🔀 [Режимы сканирования](#-scan-modes) | 🧪 [Разработка](#-development) |
| 📥 [Установка](#-installation) | 📂 [Сканирование кода](#-scan-your-code-no-target-needed) | 🚨 [Замечания по безопасности](#-safety-notes) |
| 🧭 [Методология](#-methodology) | 📄 [Отчёты](#-reports) | 📜 [Лицензия](#-license) |
| 🔧 [Настройки](#-settings) | 🔗 [Ссылки](#-links) | 🤝 [Спонсоры](#-sponsors) |
## 🔎 Обзор
Xalgorix — это самостоятельно размещаемая платформа AI-пентестинга для авторизованного тестирования безопасности, оценки уязвимостей и рабочих процессов bug bounty. Она объединяет автономного агента на базе LLM, автоматизацию браузера, терминальные инструменты, комплексную 22-фазную методологию тестирования, телеметрию в реальном времени через WebSocket, управление находками с оценкой CVSS, генерацию брендированных PDF-отчётов и интеграции с AgentMail, Discord и Telegram.
В отличие от облачных DAST-сканеров, Xalgorix работает полностью на вашей машине. Вы используете собственного LLM-провайдера (OpenAI, Anthropic, DeepSeek, Gemini, Groq, Ollama, MiniMax) и контролируете модель, глубину рассуждений, лимиты запросов и конфигурацию прокси. Никакие данные сканирования, API-ключи или информация о целях не покидают вашу инфраструктуру.
По умолчанию используется Web UI. Из одной локальной панели управления вы можете запускать сканирования, отслеживать активные запуски, изучать находки, настраивать параметры модели/провайдера, управлять переменными окружения, генерировать брендированные PDF-отчёты, а также удалять или возобновлять прошлые сканирования.
## 💡 Почему Xalgorix
Большинство сканеров **обнаруживают**. Xalgorix **доказывает**. Автономный агент проходит 22-фазную методологию, после чего независимый верификатор повторно проверяет каждую потенциальную находку перед её отчётом — так вы получаете результаты с подтверждёнными эксплойтами и доказательствами, а не стену «возможно» для разбора.
- 🧠 **AI-агент, а не шаблонный движок** — рассуждает о потоках аутентификации, бизнес-логике, IDOR/BOLA и цепочках эксплойтов, которые пропускают сигнатурные сканеры.
- ✅ **Находки с подтверждёнными эксплойтами** — отдельный верификатор независимо воспроизводит каждую находку; неубедительные помечаются для проверки и никогда не выдаются за подтверждённые.
- 🔒 **Самостоятельное размещение и приватность** — работает на вашей машине с вашим собственным LLM-ключом; никакие данные о целях, ключи или находки не покидают вашу инфраструктуру.
- 🧩 **Свой собственный LLM** — OpenAI, Anthropic, DeepSeek, Gemini, Groq, Ollama или MiniMax — либо любой OpenAI-совместимый шлюз, например [LiteLLM](#-litellm--openai-compatible-gateways-github-copilot-claude-opus-codex-openrouter-azure-local-models) (GitHub Copilot, Codex, OpenRouter, Azure). Вы контролируете модель, глубину рассуждений и стоимость.
- 📄 **Отчёты, готовые к аудиту** — брендированные PDF-файлы с оценками CVSS, proof-of-concept и рекомендациями по устранению.
### 📊 Сравнение
| | **Xalgorix** | Шаблонные сканеры (например, Nuclei) | Сканеры с обходом (например, OWASP ZAP) | Коммерческие DAST |
| -------------------------------------------- | ------------------------ | ------------------------------- | ---------------------------------- | ---------------------- |
| Подход | Автономный AI-агент | Сигнатуры / шаблоны | Паук + активные правила | Сигнатуры + эвристики |
| Покрытие бизнес-логики / IDOR / обхода аутентификации | ✅ | Ограниченное | Ограниченное | Частичное |
| Подтверждение эксплойтов (доказывает воздействие) | ✅ независимый верификатор | ❌ | ❌ | Частичное |
| Уровень ложных срабатываний | Низкий (доказано) | Зависит от шаблона | Высокий | Средний |
| Самостоятельное размещение / данные остаются локально | ✅ | ✅ | ✅ | Обычно облако |
| Свой собственный LLM | ✅ | — | — | ❌ |
| Брендированные PDF-отчёты | ✅ | ❌ | Базовые | ✅ |
| Стоимость | Открытый исходный код + ваш LLM | Бесплатно | Бесплатно | $$$ |
> Ориентировочное сравнение — Nuclei и ZAP отлично справляются со своими задачами. Xalgorix добавляет поверх этого слой обнаружения, требующий глубоких рассуждений, и верификации эксплойтов.
### ☁️ Самостоятельное размещение vs облако
Xalgorix бесплатен и имеет открытый исходный код — размещайте его самостоятельно навсегда, без каких-либо условий. [Облако](https://www.xalgorix.com/) запускает **тот же** движок с подтверждением эксплойтов; оно существует для тех, кто предпочёл бы не управлять API-ключами, инфраструктурой и непредсказуемыми счетами за LLM. Оба варианта первоклассны — выбирайте подходящий.
| | **Самостоятельное размещение** (этот репозиторий) | **[Облако](https://www.xalgorix.com/)** |
| ---------------------------------- | ---------------------------------------- | ----------------------------------------------- |
| Цена для старта | Бесплатный движок, Apache-2.0 | Бесплатный аккаунт · разовая оценка за $1 |
| LLM API-ключ | Свой собственный, вы им управляете | Включён — не нужно возиться |
| Стоимость за сканирование | Сырые токены LLM — переменная, может взлететь | 1 кредит за живой хост — предсказуемо |
| Установка и эксплуатация | Вы устанавливаете, обновляете и запускаете инструментарий | Ничего запускать не нужно — сканирование за ~60 с |
| Out-of-band инфраструктура (SSRF/blind RCE) | Разворачиваете свой OOB-сервер | Управляемый OOB включён |
| Планирование | Встроенный планировщик на вашей инфраструктуре | Управляемые расписания ежедневно / ежечасно |
| Команда · RBAC · общие кредиты | Экземпляр для одного оператора | Рабочие пространства организации на Team |
| Обновления | `git pull` + пересборка | Всегда на последнем движке |
| Размещение данных / офлайн | ✅ остаются на вашей инфраструктуре · air-gap OK | Работает на нашей инфраструктуре (доступно DPA) |
**Размещайте самостоятельно, если** данные должны оставаться в вашей сети, вы хотите полный контроль или будете работать офлайн/в изолированной среде — именно для этого это и предназначено. **Используйте облако, если** предпочитаете пропустить API-ключи, инфраструктуру и неожиданные счета за токены и платить только за живые хосты, которые вы действительно сканируете.
<div align="center">
[**☁️ Оценить облако — пробный период за $1 →**](https://www.xalgorix.com/pricing) · [**⚖️ Сравнить облако и самостоятельное размещение →**](https://www.xalgorix.com/hosted-vs-self-hosted)
</div>
Если Xalgorix сэкономил вам цикл разбора, пожалуйста, **[⭐ поставьте звезду репозиторию](https://github.com/xalgorix/xalgorix)** — это действительно помогает другим его найти.
## 🎯 Сценарии использования
| Сценарий | Как помогает Xalgorix |
| -------- | ------------------ |
| **Пентестинг** | Запустите полную 22-фазную методологию против авторизованных целей. AI-агент выполняет разведку, поиск уязвимостей, тестирование инъекций, SSRF, IDOR, обход аутентификации, состояния гонки и многое другое — а затем верифицирует находки перед отчётом. |
| **Bug bounty hunting** | Направьте Xalgorix на цель в рамках программы, и пусть агент перечислит поверхность атаки, протестирует распространённые классы уязвимостей и выявит подтверждённые находки с оценками CVSS и доказательствами proof-of-concept. |
| **Операции red team** | Используйте режимы сканирования wildcard и multi-target для картирования внешней поверхности атаки организации. Браузерный DAST обрабатывает потоки аутентификации, формы и поведение во время выполнения, которые пропускают статические сканеры. |
| **Исследование безопасности** | Фаза обнаружения новых уязвимостей выводит агента за пределы сопоставления известных шаблонов. Используйте собственный LLM (OpenAI, Anthropic, DeepSeek, Gemini, Ollama, MiniMax), чтобы контролировать глубину рассуждений и стоимость. |
| **Непрерывное тестирование безопасности** | Запускайте как системный сервис с помощью `xalgorix --start`. Сканируйте по расписанию, транслируйте находки в Discord или Telegram и генерируйте брендированные PDF-отчёты для заинтересованных сторон. |
| **Автоматизация DAST** | Браузерное тестирование веб-приложений — потоки аутентификации, формы, контент, отрендеренный JavaScript, и поведение во время выполнения. Интегрируется с Caido для инспекции прокси-трафика. |
## ✨ Возможности
| Область | Возможности |
| -------------- | --------------------------------------------------------------------------------------------------------------------------- |
| 📊 Панель управления | Локальный Web UI по умолчанию на `127.0.0.1:9137`, управление сканированиями, статус в реальном времени, массовые действия со сканированиями и восстановление прошлых сканирований. |
| 🔍 Сканирование | Одиночная цель, DAST, wildcard и multi-target потоки с выбираемыми фазами методологии. |
| 📡 Телеметрия в реальном времени | Вызовы инструментов, сообщения агента, находки, ошибки, HTTP-активность и активность LLM через WebSocket. |
| 🐞 Находки | Страницы деталей сканирования, фильтры по критичности, детали CVSS, индекс находок и рабочие процессы верифицированных находок. |
| 📄 Отчётность | Брендированные PDF-отчёты с названием цели/компании, загруженным логотипом, списком отчётов, действиями открытия/скачивания/удаления. |
| 🔔 Интеграции | Тестовые почтовые ящики AgentMail, письма верификации, потоки OTP, события разбора почты, уведомления Discord и Telegram. |
| ⚙️ Конфигурация | Настройки панели для LLM, AgentMail, Discord, Telegram, прокси, среды выполнения, браузера, аутентификации, лимитов запросов и ресурсов. |
| 🛡️ Безопасность среды выполнения | Ограничения экземпляров с учётом ресурсов и привязка только к loopback, если внешний доступ явно не настроен с аутентификацией. |
## 📥 Установка
Самые быстрые пути вообще не требуют инструментария.
### ⚡ Установка одной строкой (готовый бинарник)```bash
curl -sSL https://www.xalgorix.com/install | bash
Загружает бинарный файл последнего релиза для вашей платформы (Linux или macOS, amd64/arm64) и устанавливает его в /usr/local/bin (или ~/.local/bin без sudo). Переопределите с помощью XALGORIX_INSTALL_DIR или зафиксируйте версию с помощью XALGORIX_VERSION=vX.Y.Z.
Выполните первоначальную настройку в интерактивном режиме — ручное редактирование файла окружения не требуется:```bash xalgorix --setup
Мастер сохраняет существующие настройки при повторном запуске, скрывает ввод API-ключа в терминале и по завершении опционально запускает веб-интерфейс.
### 🐳 Docker```bash
docker run --rm -p 9137:9137 \
--privileged \
-e XALGORIX_LLM=openai/gpt-5.6 \
-e XALGORIX_API_KEY=your_openai_api_key \
-v xalgorix-data:/data \
ghcr.io/xalgord/xalgorix:latest
--privileged (или более узкий --cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined) даёт набору инструментов доступ, близкий к хосту. Песочница Docker по умолчанию отбрасывает capabilities и фильтрует системные вызовы, что ломает низкоуровневые инструменты (изменения iptables/route/интерфейсов, ARP-spoof/MITM, tun/tap VPN, отладчики на основе ptrace). Образ не может выдать их сам себе — это решение времени выполнения — поэтому передайте флаг или используйте предоставленный docker-compose.yml, который устанавливает его за вас.
Образ включает всё необходимое: предустановлен обширный набор инструментов для наступательной безопасности (nmap, nuclei, httpx, subfinder, dnsx, naabu, katana, ffuf, gobuster, dalfox, feroxbuster, sqlmap, masscan, nikto, whatweb, hydra и другие), а также Chromium для DAST с поддержкой браузера. Он также сохраняет полный набор менеджеров пакетов (apt, go, cargo, pipx, npm), поэтому агент автоматически устанавливает всё отсутствующее во время выполнения. Данные сканирования сохраняются в томе /data, а сервер привязывается к 0.0.0.0 внутри контейнера — задайте XALGORIX_USERNAME/XALGORIX_PASSWORD перед тем, как открывать его за пределы localhost.
Контейнер по замыслу работает от root (движок включает автоматическую установку во время выполнения только для uid 0, а установки через apt/go/cargo требуют доступа на запись в систему). Относитесь к нему как к одноразовой, изолированной по сети песочнице для сканирования. Те же теги публикуют мультиплатформенный манифест для linux/amd64 и linux/arm64, поэтому Docker автоматически выбирает нативный образ.
При первом запуске, если вы не настроили аутентификацию для панели управления, контейнер генерирует случайный пароль администратора и выводит его в логи (образ привязывается к 0.0.0.0, чего движок не сделает без аутентификации). Задайте XALGORIX_USERNAME + XALGORIX_PASSWORD (или XALGORIX_PASSWORD_HASH), чтобы использовать свои. Бинарный файл никогда не самообновляется внутри контейнера (XALGORIX_NO_AUTO_UPDATE=1) — для обновления загрузите новый тег образа. Движок nuclei и его шаблоны уязвимостей обновляются до последней версии при каждой сборке образа (CI релиза и redeploy.sh принудительно это делают); передайте --build-arg NUCLEI_VERSION=vX.Y.Z, чтобы зафиксировать версию движка, или NUCLEI_REFRESH=0 ./redeploy.sh, чтобы использовать кэш Docker.
📋 Требования (сборка из исходников)
| Требование | Примечания |
|---|---|
| ОС | Linux или macOS (amd64/arm64). |
| Go | 1.26 или новее. |
| Node.js + npm | Требуется при сборке встроенного React Web UI из исходников. |
| Инструменты безопасности | Устанавливаются по требованию только при включённой автоустановке. |
Проверьте вашу версию Go:```bash go version
### 🔨 Сборка из исходного кода```bash
git clone https://github.com/xalgorix/xalgorix.git
cd xalgorix
make build
sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix
make build собирает React Web UI в internal/web/static, затем собирает бинарный файл Go.
📦 Установка с помощью Go```bash
GOPROXY=direct GOSUMDB=off go install github.com/xalgord/xalgorix/v4/cmd/xalgorix@latest
## 🔩 Конфигурация
Xalgorix загружает конфигурацию в следующем порядке. Более поздние источники переопределяют более ранние.
| Порядок | Источник |
| ------- | -------------------------------------------------------------- |
| 1 | `/etc/xalgorix.env` |
| 2 | `/home/<sudo-user>/.xalgorix.env` при запуске через `sudo` |
| 3 | `~/.xalgorix.env` |
| 4 | Переменные окружения, уже присутствующие в процессе |
Создайте локальный файл окружения:```bash
nano ~/.xalgorix.env
🧩 Минимальная конфигурация
Для получения наилучших результатов автономного сканирования выберите актуальную фронтирную модель. Приведённый ниже идентификатор модели — конкретный пример; более новые совместимые идентификаторы моделей можно вводить, не дожидаясь выпуска Xalgorix.```bash XALGORIX_LLM=openai/gpt-5.6 XALGORIX_API_KEY=your_openai_api_key
### 🔌 Примеры провайдеров
OpenAI:```bash
XALGORIX_LLM=openai/gpt-5.6
XALGORIX_API_KEY=sk-...
Пользовательский OpenAI-совместимый провайдер:```bash XALGORIX_LLM=custom/security-model XALGORIX_API_BASE=https://your-provider.example/v1 XALGORIX_API_KEY=your_provider_api_key
#### 🌉 LiteLLM / OpenAI-совместимые шлюзы (GitHub Copilot, Claude Opus, Codex, OpenRouter, Azure, локальные модели)
Поскольку `XALGORIX_API_BASE` принимает любой OpenAI-совместимый эндпоинт `/v1/chat/completions`,
Xalgorix работает с прокси [LiteLLM](https://docs.litellm.ai/) из коробки — без
изменений на стороне Xalgorix. LiteLLM обрабатывает аутентификацию у вышестоящего провайдера (вход через устройство Copilot,
ключи Azure, OpenRouter, Ollama и т. д.); Xalgorix просто общается с шлюзом по протоколу OpenAI.
Запустите LiteLLM (пример `config.yaml`):```yaml
model_list:
- model_name: claude-opus-5
litellm_params:
model: github_copilot/claude-opus-5 # or openrouter/…, azure/…, ollama/…
general_settings:
master_key: sk-local-litellm-key
Направьте Xalgorix на него — используйте префикс custom/, чтобы имя модели передавалось дословно и использовался протокол OpenAI chat-completions:```bash
XALGORIX_LLM=custom/claude-opus-5 # the LiteLLM model_name
XALGORIX_API_BASE=http://localhost:4000/v1 # your LiteLLM proxy
XALGORIX_API_KEY=sk-local-litellm-key # LiteLLM master_key / virtual key
Тот же шаблон охватывает GitHub Copilot Business/CLI, Claude Opus, модели в стиле Codex,
OpenRouter, Azure OpenAI и локальные модели Ollama — всё, что LiteLLM может маршрутизировать. Сохраняйте
префикс `custom/` (или `openai/`) и не-Anthropic/Gemini `XALGORIX_API_BASE`, чтобы Xalgorix
использовал стандартную форму запроса OpenAI, которую ожидает LiteLLM.
### 🔔 Опциональные интеграции```bash
GEMINI_API_KEY=AIza...
AGENTMAIL_POD=am_us_pod_47
AGENTMAIL_API_KEY=ak_...
XALGORIX_DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
XALGORIX_DISCORD_MIN_SEVERITY=high
🔐 Аутентификация в панели управления```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this-password
> [!TIP]
> Для production-развёртываний предпочитайте `XALGORIX_PASSWORD_HASH`.
## 🆙 Обновление с предыдущих версий
Этот релиз включает проход по стабильности и изоляции рабочего пространства с одним критическим изменением и несколькими новыми настройками, о которых стоит знать.
### 💥 Критическое изменение: рабочее пространство по умолчанию перемещено в `~/.xalgorix/data/`
Результаты сканирования, заметки, расписания и другие сгенерированные артефакты теперь находятся в `~/.xalgorix/data/` вместо `$CWD` (каталога, из которого был запущен бинарный файл).
Чтобы сохранить прежнее поведение, укажите `XALGORIX_DATA_DIR` на ваш текущий рабочий каталог:```bash
export XALGORIX_DATA_DIR=$(pwd)
При запуске выводится предупреждение [MIGRATION], когда в $CWD обнаружены устаревшие маркеры (notes.json, _schedules/, vulnerabilities.json или каталоги YYYY-MM-DD/scan-*), а XALGORIX_DATA_DIR не задан. Xalgorix никогда не читает, не копирует и не удаляет эти устаревшие файлы автоматически; предупреждение носит информационный характер и срабатывает только один раз за процесс.
🆕 Новая переменная окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
XALGORIX_LLM_MAX_INFLIGHT | 4 × EffectiveMaxInstances | Ограничивает количество одновременных исходящих вызовов LLM во всех запущенных сканированиях. Минимум 1. Отменённые ожидающие не занимают слот. |
🩺 Новые счётчики в эндпоинте проверки состояния
GET /api/status теперь предоставляет:
| Поле | Значение |
|---|---|
panics_recovered | Паники горутин, HTTP-обработчиков и инструментов, которые были восстановлены без сбоя. |
path_rejections | Записи в файловую систему, отклонённые Path_Policy (вне data_dir / ~/.xalgorix/ / /tmp). |
watchdog_kills | Подпроцессы, завершённые сторожевым таймером жёсткого тайм-аута для каждого инструмента. |
admission_refusals | Запросы на допуск сканирования, отклонённые из-за ограничения параллелизма. |
llm_inflight_cap | Действующее значение XALGORIX_LLM_MAX_INFLIGHT для этого процесса. |
data_dir | Разрешённый Data_Dir, который используется. |
allow_list | Корни файловой системы, принимаемые Path_Policy. |
🏃 Запуск
🪟 Веб-интерфейс```bash
xalgorix --web
Открыть:```text
http://127.0.0.1:9137
Используйте другой порт:```bash xalgorix --web --port 8080
### 🌐 Внешний доступ
Привязывайтесь к другому интерфейсу только после включения аутентификации в панели управления:```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this xalgorix --web --bind 0.0.0.0
[!WARNING] Сервер отказывает во внешнем связывании без аутентификации в панели управления.
🏹 Сканирование через CLI```bash
xalgorix --target https://example.com
С пользовательскими инструкциями:```bash
xalgorix --target https://app.example.com --instruction "Focus on SQL injection, IDOR, and auth bypass. Avoid destructive tests."
🧰 Режим службы
Установка и запуск в качестве системной службы:```bash sudo xalgorix --start
Управление сервисом:```bash
sudo xalgorix --restart
sudo xalgorix --stop
sudo xalgorix --uninstall
Просмотр логов:```bash journalctl -u xalgorix -f
### 🌍 Удалённый доступ к сервису
Открывайте доступ к сервису для удалённых браузеров только после включения аутентификации в дашборде:```bash
sudo tee -a /root/.xalgorix.env >/dev/null <<'EOF'
XALGORIX_BIND=0.0.0.0
XALGORIX_USERNAME=admin
XALGORIX_PASSWORD=change-this
EOF
sudo xalgorix --restart
Затем откройте http://<server-ip>:9137.
Если процесс прослушивает порт, но страница всё ещё не загружается удалённо, разрешите TCP-порт 9137 в брандмауэре сервера или группе безопасности облака.
🏠 Сканирование локальных/внутренних целей
По умолчанию Xalgorix отказывается сканировать loopback, localhost, адреса из приватных диапазонов или адреса собственных интерфейсов — это машина, на которой работает Xalgorix, а не цель. На self-hosted, single-tenant машине вы можете включить сканирование локально размещённого демо/staging-приложения:```bash
echo 'XALGORIX_ALLOW_LOCAL_TARGETS=true' | sudo tee -a /root/.xalgorix.env
sudo xalgorix --restart
Собственный слушатель дашборда **всегда** защищён, даже при включённой этой опции.
> **⚠️ Общие / мультитенантные / хостинговые развёртывания: оставьте эту опцию ВЫКЛЮЧЕННОЙ.** Её включение
> позволило бы сканированию пользователя достичь собственной машины оператора и внутренней сети.
> По умолчанию она выключена, поэтому для безопасности ничего делать не нужно — не устанавливайте
> `XALGORIX_ALLOW_LOCAL_TARGETS` (или закрепите `XALGORIX_ALLOW_LOCAL_TARGETS=false`),
> и не открывайте страницу Settings движка недоверенным пользователям.
## 🔁 Рабочий процесс веб-интерфейса
1. Откройте дашборд по адресу `http://127.0.0.1:9137`.
2. Перейдите в Settings и подтвердите LLM-провайдера, API-ключ, лимиты запросов и дополнительные интеграции.
3. Создайте сканирование через New Scan.
4. Выберите режим сканирования.
5. Выберите фазы методологии, когда нужен сфокусированный запуск.
6. Настройте фильтры по уровню критичности, когда в реальном времени должны отображаться только определённые уровни. Фильтр влияет только на ленту дашборда в реальном времени и уведомления; PDF-отчёт и `/api/findings` всегда включают все уязвимости, обнаруженные агентом.
7. Добавьте название компании и загрузите логотип для брендированных отчётов.
8. Отслеживайте прогресс через Overview, Scan Detail или Live Feed.
9. Открывайте детали находок, скачивайте отчёты или управляйте историей сканирований через Scans и Reports.
## 🔀 Режимы сканирования
| Режим | Лучше всего подходит для |
| ---------------- | ------------------------------------------------------------------------------- |
| 🎯 Одна цель | Тестирование одного известного URL или хоста. |
| 🌐 Wildcard / multi | Перечисление связанных целей и сканирование обнаруженной поверхности атаки. |
| 🧭 DAST | Тестирование веб-приложений с помощью браузера: потоки аутентификации, формы и поведение во время выполнения. |
## 📂 Сканируйте свой код (цель не нужна)
Укажите Xalgorix на кодовую базу — Git URL, локальный путь или загруженный zip — и
он просканирует исходный код напрямую. Ни развёрнутого URL, ни инфраструктуры для поднятия.```bash
# Source review (SAST): audit the code, no running target required
xalgorix --source ./my-app --code-scan review
# Provision + DAST: build & run the app locally, then pentest the running instance
xalgorix --source https://github.com/org/app.git --code-scan provision
| Режим сканирования кода | Что делает | Уровень верификации |
|---|---|---|
review | Читает исходный код, отслеживает пользовательский ввод от точки входа → опасный sink и сообщает о достижимых уязвимостях. Без живого таргета. | Подтверждено исходным кодом — доказана достижимость в коде (явно помечено как не эксплуатируемое во время выполнения). |
provision | Изучает репозиторий, собирает и запускает приложение на loopback-порту, затем запускает whitebox-guided DAST против работающего экземпляра. Откатывается к review, если приложение не удаётся собрать. | Подтверждено эксплуатацией — воспроизведено на работающем приложении. |
--sourceпринимает Git URL (shallow-клонирование), локальную директорию или путь к загруженному/распакованному архиву. В Web UI / hosted-приложении вы также можете загрузить.zipвашей кодовой базы (POST /api/upload-source).- Вы по-прежнему можете комбинировать репозиторий и живой таргет для классического whitebox дополнения — этот путь не изменился. Режимы сканирования кода предназначены для случаев, когда кодовая база является всем предметом.
Режим provision запускает команды сборки/запуска вашего приложения в песочнице агента и проводит пентест только того единственного loopback-порта, на котором он поднял приложение — дашборд и всё остальное на машине остаются вне области охвата.
🧭 Методология
Xalgorix организует автономное тестирование в 22 фазы.
| Фаза | Направление |
|---|---|
| 1 | Разведка |
| 2 | Ручной поиск уязвимостей |
| 3 | Обнаружение директорий и файлов |
| 4 | Анализ CORS и cookie |
| 5 | Тестирование аутентификации и сессий |
| 6 | Тестирование инъекций |
| 7 | Тестирование SSRF |
| 8 | IDOR и нарушение контроля доступа |
| 9 | Тестирование API и GraphQL |
| 10 | Тестирование загрузки файлов |
| 11 | Десериализация и RCE |
| 12 | Состояния гонки и бизнес-логика |
| 13 | Захват поддоменов |
| 14 | Тестирование открытых редиректов |
| 15 | Тестирование безопасности электронной почты |
| 16 | Облако и инфраструктура |
| 17 | Тестирование WebSocket |
| 18 | Тестирование, специфичное для CMS |
| 19 | Захват битых ссылок и подмена контента |
| 20 | Верификация эксплуатации |
| 21 | Поиск новых уязвимостей |
| 22 | Итоговый отчёт |
Выбор фаз в Web UI позволяет запустить все фазы или только подмножество, необходимое для конкретного проекта.
📄 Отчёты
Отчёты генерируются в виде PDF-файлов и могут включать:
| Раздел | Включаемое содержимое |
|---|---|
| 📌 Сводка | Резюме для руководства, метаданные таргета, метаданные сканирования и обзор серьёзности. |
| 🐞 Находки | Подтверждённые находки, детали CVSS, технический анализ и доказательство эксплуатации. |
| 🔬 Доказательства | Команды proof of concept, скрипты, заметки о payload и подтверждающие наблюдения. |
| 🩹 Устранение | Рекомендации по исправлению и приоритизированные дальнейшие шаги. |
| 🎨 Брендинг | Название компании/таргета и загруженный логотип. |
Отчёты доступны со страницы деталей сканирования и со страницы Reports. Строки отчётов поддерживают открытие, скачивание и удаление.
🔧 Настройки
Большинство операционных настроек можно изменить в Web UI в разделе Settings.
| Область | Примеры |
|---|---|
| 🤝 Проект | Лимиты частоты запросов дашборда |
| 🧠 LLM | Модель, API-ключ, API base, reasoning effort, повторы, максимальные итерации |
| 📬 AgentMail | Pod и API-ключ |
| 🔔 Уведомления | Discord webhook и минимальная серьёзность, токен Telegram-бота, chat ID, минимальная серьёзность и опциональные сводки о завершении сканирования |
| 🕵️ Прокси | URL прокси, файл прокси, ротация, проверка TLS |
| 🧱 Среда выполнения | Рабочая область, путь к браузеру, управление автоустановкой |
| 🔐 Безопасность | Имя пользователя дашборда, пароль, хеш пароля, адрес привязки |
| 📈 Ресурсы | Пороги CPU/RAM/диска и бюджет параллелизма сканирования |
Некоторые настройки требуют перезапуска, поскольку влияют на запуск процесса или привязку сервера. UI помечает такие поля.
🧾 Переменные окружения
🧱 Ядро
| Переменная | По умолчанию | Описание |
|---|---|---|
XALGORIX_LLM | нет | Нативный для провайдера ID модели, используемый для LLM-запросов. |
XALGORIX_LLM_PROVIDER | нет | Провайдер, выбранный в дашборде, хранится отдельно от ID модели. |
XALGORIX_API_KEY | нет | Обязательный API-ключ LLM-провайдера. |
XALGORIX_API_BASE | по умолчанию провайдера | Пользовательский OpenAI-совместимый API base URL. |
XALGORIX_REASONING_EFFORT | high | Reasoning effort: none, low, medium, high или xhigh (xhigh сопоставляется с high для Ollama). |
XALGORIX_LANGUAGE | en | Язык вывода для генерируемого ИИ текста (рассуждения агента, заметки, находки, содержимое отчёта, чат после сканирования). en или zh-CN. Технические токены (payload, команды, URL, ID CVE/CWE) всегда остаются в исходной форме. Нелатинские языки автоматически отображаются в дашборде и HTML-отчёте. |
XALGORIX_PDF_CJK_FONT | нет | Абсолютный путь к шрифту TrueType (.ttf) с CJK-глифами, используемому для отображения нелатинских языков (например, упрощённого китайского) в экспортируемом PDF-отчёте. Поддерживается только .ttf (не .ttc/.otf). Без него PDF откатывается к базовым шрифтам, и нелатинские глифы не будут отображаться (на HTML-отчёт это не влияет). |
XALGORIX_OLLAMA_COMPATIBLE | false | Применять семантику reasoning Ollama к пользовательскому endpoint на нестандартном порту. Порт 11434 определяется автоматически. |
XALGORIX_LLM_MAX_RETRIES | 5 | Количество повторов для временных сбоев LLM. |
XALGORIX_MEMORY_COMPRESSOR_TIMEOUT | 30 | Таймаут в секундах для сжатия контекста. |
XALGORIX_MAX_ITERATIONS | 0 | Ограничение итераций агента. 0 означает неограниченно. |
XALGORIX_PPROF_ADDR | нет | Опциональный Go-профайлер. При установке (например, 127.0.0.1:6060) запускает отдельный pprof-сервер по адресу /debug/pprof/ на этом адресе для диагностики CPU/heap. Отключён по умолчанию. Раскрывает внутренности процесса — привязывайте к loopback и подключайтесь через SSH-туннель; никогда не выставляйте публично. |
GEMINI_API_KEY | нет | Опциональный ключ Gemini для обогащения веб-поиска. |
🔒 Веб и безопасность
| Переменная | По умолчанию | Описание |
|---|---|---|
XALGORIX_BIND | 127.0.0.1 | Адрес прослушивания веб-сервера. |
XALGORIX_ALLOW_LOCAL_TARGETS | false | Разрешить сканирование локально размещённых приложений (localhost / 127.0.0.1 / приватные IP) при self-hosted установке. Собственный listener дашборда всегда защищён. Оставляйте выключенным на общих/hosted развёртываниях. |
XALGORIX_USERNAME | нет | Имя пользователя дашборда. |
XALGORIX_PASSWORD | нет | Пароль дашборда. |
XALGORIX_PASSWORD_HASH | нет | Предпочтительный bcrypt-хеш пароля. |
XALGORIX_WORKSPACE | текущая директория | Корень рабочей области для выполнения сканирования. |
🤝 Интеграции
| Переменная | По умолчанию | Описание |
|---|---|---|
AGENTMAIL_POD | нет | Идентификатор pod AgentMail. |
AGENTMAIL_API_KEY | нет | API-ключ AgentMail. |
XALGORIX_DISCORD_WEBHOOK | нет | Глобальный Discord webhook. |
XALGORIX_DISCORD_MIN_SEVERITY | нет | Минимальная серьёзность, отправляемая в Discord. |
XALGORIX_TELEGRAM_BOT_TOKEN | нет | Токен Telegram-бота от @BotFather. |
XALGORIX_TELEGRAM_CHAT_ID | нет | ID чата/канала Telegram (числовой или @username). |
XALGORIX_TELEGRAM_MIN_SEVERITY | нет | Минимальная серьёзность, отправляемая в Telegram. |
XALGORIX_NOTIFY_SCAN_COMPLETE | false | Отправлять сводки о завершении сканирования в настроенные назначения Discord/Telegram. Это опционально и не влияет на оповещения по отдельным уязвимостям. |
CAIDO_PORT | 0 | Порт прокси Caido. 0 означает автоопределение. |
CAIDO_API_TOKEN | нет | API-токен Caido. |
🚦 Лимиты частоты, прокси и среда выполнения
| Переменная | По умолчанию | Описание |
|---|---|---|
XALGORIX_RATE_LIMIT_REQUESTS | 60 | Запросов к дашборду за окно. |
XALGORIX_RATE_LIMIT_WINDOW | 60 | Окно лимита частоты дашборда в секундах. |
XALGORIX_RATE_RPS | 10 | Устойчивая исходящая частота запросов. |
XALGORIX_RATE_BURST | 20 | Размер исходящего всплеска. |
XALGORIX_USE_PROXY | false | Включить маршрутизацию через прокси. |
XALGORIX_PROXY_REQUIRED | false | Требовать один upstream-прокси для HTTP/браузерных путей таргета без прямого отката. |
XALGORIX_PROXY_URL | нет | URL одного прокси. Переопределяет файл прокси. |
XALGORIX_PROXY_FILE | нет | Файл, содержащий по одному прокси на строку. |
XALGORIX_PROXY_ROTATION | roundrobin | Стратегия ротации прокси: roundrobin или random. |
XALGORIX_TLS_SKIP_VERIFY | false | Пропускать проверку TLS для тестового трафика. |
XALGORIX_DISABLE_BROWSER | false | Отключить автоматизацию браузера. |
XALGORIX_BROWSER_PATH | авто | Пользовательский путь к исполняемому файлу Chrome/Chromium. |
XALGORIX_ALLOW_AUTO_INSTALL | только root | Разрешить автоматическую установку пакетов. |
XALGORIX_AUTO_INSTALL_SUDO | false | Разрешить автоустановку с префиксом sudo. |
🔤 Префиксы провайдеров
Когда XALGORIX_API_BASE пуст, Xalgorix выводит значения по умолчанию для провайдера из префикса модели.
| Префикс | API base по умолчанию |
|---|---|
openai/ | https://api.openai.com/v1 |
anthropic/ | https://api.anthropic.com |
deepseek/ | https://api.deepseek.com/v1 |
groq/ | https://api.groq.com/openai/v1 |
google/ | https://generativelanguage.googleapis.com/v1 |
gemini/ | https://generativelanguage.googleapis.com/v1 |
ollama/ | http://localhost:11434/v1 |
minimax/ | https://api.minimax.io/v1 |
Имена моделей не жёстко привязаны к этому списку. Страница Settings принимает вводимые вручную ID моделей, поэтому более новые модели провайдеров можно использовать, не дожидаясь обновления выпадающего списка в UI.
💻 Справочник CLI
| Флаг | Псевдоним | Описание |
|---|---|---|
--web | -w | Запустить Web UI. |
--port <port> | -p | Порт Web UI. По умолчанию: 9137. |
--bind <addr> | нет | Адрес привязки. По умолчанию: 127.0.0.1. |
--target <target> | -t | URL, хост, IP или путь таргета. Можно повторять. |
--instruction <text> | -i | Пользовательские инструкции сканирования. |
--model <model> | -m | Переопределить XALGORIX_LLM для этого запуска. |
--update | -up | Обновить до последнего релиза. |
--version | -v | Вывести версию. |
--start | нет | Установить и запустить системную службу. |
--stop | нет | Остановить системную службу. |
--restart | нет | Перезапустить системную службу. |
--uninstall | нет | Удалить системную службу. |
--help | -h | Показать справку. |
📡 Сводка API
| Метод | Endpoint | Назначение |
|---|---|---|
POST | /api/scan | Запустить или сохранить сканирование. |
POST | /api/stop | Остановить все запущенные сканирования. |
GET | /api/status | Текущий глобальный статус. |
GET | /api/scans | Список сканирований. |
GET | /api/scans/:id | Получить детали сканирования. |
DELETE | /api/scans/:id | Удалить сканирование и его данные отчёта. |
GET | /api/findings | Список всех находок (дедуплицированных по сканированиям). |
GET | /api/findings/summary | Подсчёт по серьёзности по всем сканированиям. |
GET | /api/report/:id | Скачать PDF-отчёт. |
GET | /api/instances | Список живых и исторических экземпляров. |
GET | /api/instances/:id/events | Получить буферизованную историю событий. |
POST | /api/instances/:id/stop | Остановить конкретный экземпляр. |
POST | /api/instances/:id/start | Запустить сохранённое или завершённое сканирование как новый запуск. |
POST | /api/instances/:id/restart | Перезапустить с той же конфигурацией. |
POST | /api/instances/:id/pause | Приостановить запущенное сканирование. |
POST | /api/instances/:id/resume | Возобновить приостановленное сканирование. |
POST | /api/upload-logo | Загрузить логотип отчёта. |
POST | /api/upload-targets | Загрузить список таргетов. |
GET | /api/settings/environment | Список редактируемых настроек окружения. |
POST | /api/settings/environment | Сохранить настройки окружения. |
GET | /api/settings/llm | Получить настройки LLM. |
POST | /api/settings/llm | Сохранить настройки LLM. |
GET | /api/settings/agentmail | Получить настройки AgentMail. |
POST | /api/settings/agentmail | Сохранить настройки AgentMail. |
GET | /ws | WebSocket-поток живых событий. |
💾 Хранение данных
Данные сканирования в веб-режиме хранятся в:```text
~/xalgorix-data/
|-- _saved/
|-- logos/
|-- queue_state.json
-- <target>/ -- /
-- <scan-id>/ |-- scan.json -- report.pdf
Сервер хранит исторические записи сканирований на диске, чтобы UI мог восстановиться после обновления или перезапуска.
## 🧪 Разработка
| Задача | Команда |
| --------------------------- | ----------------------------- |
| 📦 Установить зависимости Web UI | `make webui-install` |
| 🔨 Собрать всё | `make build` |
| ✅ Запустить тесты | `go test ./...` |
| 🖥️ Запустить Web UI из исходников | `go run ./cmd/xalgorix --web` |
| ⚡ Запустить dev-сервер фронтенда | `make webui-dev` |
## 🚨 Примечания по безопасности
- Используйте Xalgorix только против авторизованных целей.
- Не запускайте активное тестирование против сторонних систем без разрешения.
- Просмотрите инструкции сканирования перед запуском.
- Настройте ограничения скорости и параметры прокси в соответствии с правилами взаимодействия.
- Внешнее размещение панели управления требует аутентификации.
- Автоустановка отключена по умолчанию для пользователей без прав root и должна включаться только при доверии к окружению.
## 📜 Лицензия
Xalgorix выпускается под лицензией Apache License 2.0. См. [LICENSE](https://github.com/xalgord/xalgorix/blob/main/LICENSE).
## 🔗 Ссылки
| Ресурс | Ссылка |
| ------------- | -------------------------------------------------------------------------------- |
| ☁️ Хостинг (облако) | [www.xalgorix.com](https://www.xalgorix.com/) |
| 📖 Документация | [docs.xalgorix.com](https://docs.xalgorix.com) |
| 🐛 Проблемы | [github.com/xalgorix/xalgorix/issues](https://github.com/xalgorix/xalgorix/issues) |
| ☕ Поддержка | [buymeacoffee.com/xalgord](https://buymeacoffee.com/xalgord) |


