
xalgorix v4.6.72
Agentes autônomos de pentest com IA — reconhecimento em tempo real, detecção de vulnerabilidades e orquestração de exploração. Go + TypeScript.
Xalgorix — Pentester de IA open-source que prova vulnerabilidades
A maioria dos scanners deteta. A Xalgorix prova. Um agente LLM autónomo executa uma metodologia completa de pentest e, em seguida, um verificador independente re-explora cada descoberta antes de ser reportada — para que obtenha provas, não uma pilha de possibilidades para triagem. Self-hosted, privado e com o seu próprio LLM. Construído em Go + TypeScript.
🚀 Início Rápido · 💡 Porquê a Xalgorix · ✨ Funcionalidades · 🎯 Casos de Uso · ☁️ Cloud Hospedada · 📖 Documentação
📸 Capturas de Ecrã
🖥️ Dashboard self-hosted — executa localmente em 127.0.0.1:9137
| Dashboard de visão geral | Detalhe da análise | Descobertas |
|---|---|---|
![]() | ![]() | ![]() |
☁️ Dashboard cloud hospedado — a versão totalmente gerida em www.xalgorix.com
🚀 Início Rápido
Instalação (uma linha):```bash curl -sSL https://www.xalgorix.com/install | bash
Isto descarrega o binário pré-compilado para a sua plataforma (Linux ou macOS, amd64/arm64) a partir da versão mais recente. Em seguida, execute o assistente de configuração interativo:```bash
xalgorix --setup
Escolha o seu fornecedor, confirme um modelo e insira a chave de API quando solicitado. Para melhores resultados, use um modelo de fronteira atual com forte raciocínio, bom desempenho em contextos longos e chamada de ferramentas confiável—como o GPT, Claude ou Gemini mais capaz disponível para você. Modelos menores ou locais continuam suportados, mas podem exigir mais supervisão durante varreduras autônomas longas. O Xalgorix armazena a chave de forma privada em ~/.xalgorix.env (modo 0600) e pode iniciar o painel para você. O Ollama local não precisa de chave de API.
Se você optar por não iniciar imediatamente, comece mais tarde com xalgorix --web e abra http://127.0.0.1:9137. Você pode alterar fornecedores ou opções avançadas a qualquer momento em Settings → LLM, ou executar novamente xalgorix --setup.
Ou execute com Docker — baterias incluídas, sem necessidade de toolchain:```bash
docker run --rm -p 9137:9137
--privileged
-v xalgorix-data:/data
xalgord/xalgorix:latest
`--privileged` dá ao conjunto de ferramentas o mesmo acesso semelhante ao do host que ele tem quando executado nativamente como root. O sandbox padrão do Docker remove capacidades (como `NET_ADMIN`) e aplica um filtro seccomp, o que quebra ferramentas de baixo nível (iptables/alterações de rota, ARP-spoof/MITM, VPNs tun/tap, depuradores baseados em ptrace, ajuste de interface do masscan). Como uma imagem não pode conceder essas capacidades a si mesma, elas devem ser definidas no momento da execução. O contêiner é um sandbox de varredura descartável e isolado em rede, executando como root — privilegiado é a postura pretendida; nunca exponha o painel publicamente sem autenticação. Prefere privilégio mínimo? Troque `--privileged` por `--cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined`.
Abra `http://localhost:9137`. Você **não precisa de uma chave de LLM para começar** — o painel inicia sem uma; defina o modelo + chave de API em **Configurações → LLM** (isso persiste no volume `/data`). Se você não passar `XALGORIX_USERNAME`/`XALGORIX_PASSWORD`, uma senha de administrador aleatória é gerada e impressa nos logs do contêiner na primeira execução.
**Mais fácil — Docker Compose** (mapeia a porta + um volume persistente para você):```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
A imagem inclui um conjunto extenso de ferramentas ofensivas de segurança pré-instaladas (nmap, nuclei, httpx, subfinder, katana, ffuf, gobuster, sqlmap, masscan, dalfox, feroxbuster e outras) e mantém todos os gerenciadores de pacotes (apt, go, cargo, pipx, npm) disponíveis para que o agente ainda possa instalar automaticamente qualquer coisa que estiver faltando em tempo de execução. Ela roda como root dentro do contêiner por design — trate o contêiner como uma sandbox de varredura descartável e isolada da rede e nunca exponha o painel sem autenticação. As imagens são publicadas para amd64 e arm64.
Ou crie a partir do código-fonte (requer Go 1.26+ e 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]
> Prefere zero configuração? Uma versão totalmente gerenciada roda em [www.xalgorix.com](https://www.xalgorix.com/) — clique para escanear, sem instalação ou chaves de API necessárias.
### 🤖 Revise pull requests automaticamente — GitHub App gratuito
Quer uma revisão de segurança em cada pull request com zero configuração? Instale o **[Xalgorix GitHub App](https://github.com/apps/xalgorix)**. Ele lê o diff de cada PR e comenta uma revisão de segurança — injeção, auth/IDOR quebrado, SSRF, segredos, padrões inseguros — direto no pull request. Atualiza no lugar em novos commits, e você pode comentar **`@xalgorix review`** para reexecutar sob demanda. Sem arquivo de workflow, sem chave de API, sem conta — e é gratuito.
<div align="center">
[**➕ Adicionar Xalgorix ao GitHub →**](https://github.com/apps/xalgorix/installations/new)
</div>
Para controle de merge e pentests completos com exploração verificada em CI, use o [scanner hospedado](https://www.xalgorix.com/) ou a GitHub Action.
> [!IMPORTANT]
> Use o Xalgorix apenas em sistemas que você possui ou para os quais tem permissão explícita de teste.
> [!TIP]
> Prefere não fazer self-hosting? Uma versão totalmente gerenciada está disponível em [www.xalgorix.com](https://www.xalgorix.com/) — clique para escanear, sem instalação ou chaves de API necessárias.
## 📚 Conteúdo
| | | |
| --- | --- | --- |
| 📸 [Capturas de tela](#-capturas-de-tela) | 🔩 [Configuração](#-configuração) | 🧾 [Variáveis de Ambiente](#-variáveis-de-ambiente) |
| 🚀 [Início Rápido](#-início-rápido) | 🆙 [Atualização](#-atualização-de-versões-anteriores) | 🔤 [Prefixos de Provedores](#-prefixos-de-provedores) |
| 🔎 [Visão Geral](#-visão-geral) | 🏃 [Execução](#-execução) | 💻 [Referência da CLI](#-referência-da-cli) |
| 💡 [Por que Xalgorix](#-por-que-xalgorix) | 🧰 [Modo de Serviço](#-modo-de-serviço) | 📡 [Resumo da API](#-resumo-da-api) |
| 🎯 [Casos de Uso](#-casos-de-uso) | 🔁 [Fluxo da Web UI](#-fluxo-da-web-ui) | 💾 [Armazenamento de Dados](#-armazenamento-de-dados) |
| ✨ [Recursos](#-recursos) | 🔀 [Modos de Escaneamento](#-modos-de-escaneamento) | 🧪 [Desenvolvimento](#-desenvolvimento) |
| 📥 [Instalação](#-instalação) | 📂 [Escaneie Seu Código](#-escaneie-seu-código-sem-alvo-necessário) | 🚨 [Notas de Segurança](#-notas-de-segurança) |
| 🧭 [Metodologia](#-metodologia) | 📄 [Relatórios](#-relatórios) | 📜 [Licença](#-licença) |
| 🔧 [Configurações](#-configurações) | 🔗 [Links](#-links) | |
## 🔎 Visão Geral
Xalgorix é uma plataforma de pentest de IA auto-hospedada para testes de segurança autorizados, avaliação de vulnerabilidades e fluxos de bug bounty. Ela combina um agente autônomo orientado por LLM, automação de navegador, ferramentas de terminal, uma metodologia abrangente de testes em 22 fases, telemetria WebSocket ao vivo, gerenciamento de achados com pontuação CVSS, geração de relatórios PDF com marca, e integrações para AgentMail, Discord e Telegram.
Diferente de scanners DAST somente em nuvem, o Xalgorix roda inteiramente na sua máquina. Você traz seu próprio provedor de LLM (OpenAI, Anthropic, DeepSeek, Gemini, Groq, Ollama, MiniMax) e controla o modelo, o esforço de raciocínio, os limites de taxa e a configuração de proxy. Nenhum dado de escaneamento, chave de API ou informação de alvo sai da sua infraestrutura.
A experiência padrão é a Web UI. De um único painel local você pode iniciar escaneamentos, monitorar execuções ativas, inspecionar achados, configurar definições de modelo/provedor, gerenciar variáveis de ambiente, gerar relatórios PDF com marca e excluir ou retomar escaneamentos históricos.
## 💡 Por que Xalgorix
A maioria dos scanners **detecta**. O Xalgorix **prova**. Um agente autônomo trabalha através de uma metodologia de 22 fases, e então um verificador independente re-testa cada achado candidato antes de ser relatado — então você obtém resultados com exploração verificada e evidências, não uma parede de "talvez" para triar.
- 🧠 **Um agente de IA, não um mecanismo de templates** — raciocina sobre fluxos de autenticação, lógica de negócios, IDOR/BOLA e explorações encadeadas que scanners de assinatura não detectam.
- ✅ **Achados com exploração verificada** — um verificador separado reproduz independentemente cada achado; os inconclusivos são sinalizados para revisão, nunca apresentados como confirmados.
- 🔒 **Auto-hospedado e privado** — roda na sua máquina com sua própria chave de LLM; nenhum dado de alvo, chave ou achado sai da sua infraestrutura.
- 🧩 **Traga seu próprio LLM** — OpenAI, Anthropic, DeepSeek, Gemini, Groq, Ollama ou MiniMax — ou qualquer gateway compatível com OpenAI como [LiteLLM](#-litellm--gateways-compatíveis-com-openai-github-copilot-claude-opus-codex-openrouter-azure-modelos-locais) (GitHub Copilot, Codex, OpenRouter, Azure). Você controla modelo, esforço de raciocínio e custo.
- 📄 **Relatórios prontos para auditoria** — PDFs com marca, pontuações CVSS, prova de conceito e remediação.
### 📊 Como se compara
| | **Xalgorix** | Scanners de templates (ex.: Nuclei) | Scanners de rastreamento (ex.: OWASP ZAP) | DAST comercial |
| -------------------------------------------- | ------------------------ | ------------------------------- | ---------------------------------- | ---------------------- |
| Abordagem | Agente de IA autônomo | Assinaturas / templates | Spider + regras ativas | Assinaturas + heurísticas |
| Cobertura de lógica de negócios / IDOR / bypass de auth | ✅ | Limitada | Limitada | Parcial |
| Exploração verificada (prova o impacto) | ✅ verificador independente | ❌ | ❌ | Parcial |
| Carga de falsos positivos | Baixa (comprovada) | Dependente de templates | Alta | Média |
| Auto-hospedado / dados permanecem locais | ✅ | ✅ | ✅ | Geralmente em nuvem |
| Traga seu próprio LLM | ✅ | — | — | ❌ |
| Relatórios PDF com marca | ✅ | ❌ | Básico | ✅ |
| Custo | Código aberto + seu LLM | Gratuito | Gratuito | $$$ |
> Comparação direcional — Nuclei e ZAP são excelentes no que fazem. O Xalgorix adiciona a camada de descoberta com raciocínio pesado e verificação de exploração por cima.
### ☁️ Auto-hospedado vs Nuvem hospedada
Xalgorix é gratuito e de código aberto — faça self-hosting para sempre, sem amarras. A [nuvem hospedada](https://www.xalgorix.com/) roda o **mesmo** mecanismo com exploração verificada; ela existe para pessoas que preferem não gerenciar chaves de API, infraestrutura e contas de LLM imprevisíveis. Ambos são de primeira classe — escolha o que se encaixa.
| | **Auto-hospedado** (este repositório) | **[Nuvem hospedada](https://www.xalgorix.com/)** |
| ---------------------------------- | ---------------------------------------- | ----------------------------------------------- |
| Preço para começar | Gratuito, Apache-2.0 | Camada gratuita · um escaneamento completo a partir de $1 |
| Chave de API de LLM | Traga e gerencie a sua | Incluída — nada para gerenciar |
| Custo por escaneamento | Tokens brutos de LLM — variável, pode disparar | 1 crédito por host ativo — previsível |
| Configuração e operação | Você instala, atualiza e executa o conjunto de ferramentas | Nada para executar — escaneie em ~60s |
| Infraestrutura fora de banda (SSRF/RCE cego) | Monte seu próprio servidor OOB | OOB gerenciado incluído |
| Agendamento · equipe · RBAC | Faça você mesmo | Integrado |
| Atualizações | `git pull` + rebuild | Sempre na versão mais recente do mecanismo |
| Residência de dados / offline | ✅ permanece na sua infra · compatível com air-gap | Roda na nossa infra (DPA disponível) |
**Faça self-hosting se** os dados precisarem permanecer na sua rede, você quiser controle total, ou for executar offline/air-gapped — é exatamente para isso que serve. **Use a nuvem se** preferir pular as chaves de API, infraestrutura e contas de tokens surpresa, e pagar apenas pelos hosts ativos que você realmente escaneia.
<div align="center">
[**☁️ Experimente a nuvem hospedada — gratuita →**](https://www.xalgorix.com/) · [**⚖️ Compare o custo real (calculadora) →**](https://www.xalgorix.com/hosted-vs-self-hosted)
</div>
Se o Xalgorix economizar um ciclo de triagem para você, por favor **[⭐ dê uma estrela no repositório](https://github.com/xalgorix/xalgorix)** — isso genuinamente ajuda outros a encontrá-lo.
## 🎯 Casos de Uso
| Caso de Uso | Como o Xalgorix ajuda |
| -------- | ------------------ |
| **Teste de penetração** | Execute uma metodologia completa de 22 fases contra alvos autorizados. O agente de IA lida com reconhecimento, descoberta de vulnerabilidades, testes de injeção, SSRF, IDOR, bypass de auth, condições de corrida e mais — depois verifica os achados antes de relatar. |
| **Caça a bug bounty** | Aponte o Xalgorix para um alvo dentro do escopo e deixe o agente enumerar a superfície de ataque, testar classes comuns de vulnerabilidades e apresentar achados verificados com pontuações CVSS e evidências de prova de conceito. |
| **Operações de red team** | Use modos de escaneamento com curinga e multi-alvo para mapear a superfície de ataque externa de uma organização. O DAST assistido por navegador lida com fluxos de auth, formulários e comportamento em tempo de execução que scanners estáticos não detectam. |
| **Pesquisa de segurança** | A fase de descoberta de vulnerabilidades novas empurra o agente além da correspondência de templates conhecidos. Traga seu próprio LLM (OpenAI, Anthropic, DeepSeek, Gemini, Ollama, MiniMax) para controlar profundidade de raciocínio e custo. |
| **Testes de segurança contínuos** | Execute como um serviço de sistema com `xalgorix --start`. Escaneie em um agendamento, transmita achados para Discord ou Telegram e gere relatórios PDF com marca para stakeholders. |
| **Automação de DAST** | Testes orientados por navegador para aplicações web — fluxos de auth, formulários, conteúdo renderizado por JavaScript e comportamento em tempo de execução. Integra-se com Caido para inspeção de tráfego de proxy. |
## ✨ Recursos
| Área | Capacidades |
| -------------- | --------------------------------------------------------------------------------------------------------------------------- |
| 📊 Painel | Web UI local em `127.0.0.1:9137` por padrão, gerenciamento de escaneamentos, status ao vivo, ações em lote de escaneamentos e recuperação de escaneamentos históricos. |
| 🔍 Escaneamento | Fluxos de alvo único, DAST, curinga e multi-alvo com fases de metodologia selecionáveis. |
| 📡 Telemetria ao vivo | Chamadas de ferramentas, mensagens do agente, achados, erros, atividade HTTP e atividade de LLM via WebSockets. |
| 🐞 Achados | Páginas de detalhes de escaneamento, filtros de severidade, detalhes de CVSS, índice de achados e fluxos de trabalho de achados verificados. |
| 📄 Relatórios | Relatórios PDF com marca com nome de alvo/empresa, logotipo enviado, lista de relatórios, ações de abrir/baixar/excluir. |
| 🔔 Integrações | Caixas de entrada de teste do AgentMail, e-mails de verificação, fluxos de OTP, eventos de triagem de e-mail, notificações do Discord e Telegram. |
| ⚙️ Configuração | Configurações do painel para LLM, AgentMail, Discord, Telegram, proxy, tempo de execução, navegador, auth, limites de taxa e recursos. |
| 🛡️ Segurança em tempo de execução | Limites de instância cientes de recursos e vinculação somente a loopback, a menos que o acesso externo seja explicitamente configurado com auth. |
## 📥 Instalação
Os caminhos mais rápidos não precisam de nenhum conjunto de ferramentas.
### ⚡ Instalação em uma linha (binário pré-compilado)```bash
curl -sSL https://www.xalgorix.com/install | bash
Baixa o binário da versão mais recente para a tua plataforma (Linux ou macOS, amd64/arm64) e instala-o em /usr/local/bin (ou ~/.local/bin sem sudo). Substitui com XALGORIX_INSTALL_DIR ou fixa uma versão com XALGORIX_VERSION=vX.Y.Z.
Conclui a configuração inicial de forma interativa—sem necessidade de editar manualmente o ficheiro de ambiente:```bash xalgorix --setup
O assistente preserva as configurações existentes quando executado novamente, oculta a entrada da chave de API no terminal e, opcionalmente, inicia a interface web ao terminar.
### 🐳 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 (ou o mais restrito --cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined) dá ao conjunto de ferramentas acesso semelhante ao do host. O sandbox padrão do Docker remove capacidades e filtra syscalls, o que quebra ferramentas de baixo nível (iptables/route/alterações de interface, ARP-spoof/MITM, VPNs tun/tap, debuggers baseados em ptrace). Uma imagem não pode conceder essas permissões a si mesma — elas são uma decisão em tempo de execução — então passe a flag, ou use o docker-compose.yml fornecido, que a define por você.
A imagem é completa: um extenso conjunto de ferramentas ofensivas de segurança é pré-instalado (nmap, nuclei, httpx, subfinder, dnsx, naabu, katana, ffuf, gobuster, dalfox, feroxbuster, sqlmap, masscan, nikto, whatweb, hydra e mais), além do Chromium para DAST assistido por navegador. Ela também mantém o conjunto completo de gerenciadores de pacotes (apt, go, cargo, pipx, npm) disponível, para que o agente instale automaticamente qualquer coisa que faltar em tempo de execução. Os dados de varredura persistem no volume /data, e o servidor vincula 0.0.0.0 dentro do contêiner — defina XALGORIX_USERNAME/XALGORIX_PASSWORD antes de expô-lo além do localhost.
O contêiner roda como root por design (o mecanismo só habilita a auto-instalação em tempo de execução para uid 0, e instalações via apt/go/cargo precisam de acesso de escrita ao sistema). Trate-o como um sandbox de varredura descartável e isolado de rede. As mesmas tags publicam um manifesto multi-plataforma para linux/amd64 e linux/arm64, então o Docker seleciona a imagem nativa automaticamente.
Na primeira execução, se você não definir a autenticação do painel, o contêiner gera uma senha de admin aleatória e a imprime nos logs (a imagem vincula 0.0.0.0, o que o mecanismo não fará sem autenticação). Defina XALGORIX_USERNAME + XALGORIX_PASSWORD (ou XALGORIX_PASSWORD_HASH) para usar as suas próprias. O binário nunca se auto-atualiza dentro do contêiner (XALGORIX_NO_AUTO_UPDATE=1) — puxe uma nova tag de imagem para atualizar. O mecanismo nuclei e seus templates de vulnerabilidades são atualizados para a versão mais recente a cada build da imagem (o CI de release e o redeploy.sh forçam isso); passe --build-arg NUCLEI_VERSION=vX.Y.Z para fixar o mecanismo, ou NUCLEI_REFRESH=0 ./redeploy.sh para reutilizar o cache do Docker.
📋 Requisitos (build a partir do código-fonte)
| Requisito | Observações |
|---|---|
| SO | Linux ou macOS (amd64/arm64). |
| Go | 1.26 ou mais recente. |
| Node.js + npm | Necessário ao compilar a interface Web React incluída a partir do código-fonte. |
| Ferramentas de segurança | Instaladas sob demanda apenas quando a auto-instalação está habilitada. |
Verifique sua versão do Go:```bash go version
### 🔨 Compilar a partir do código-fonte```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 compila a interface web React em internal/web/static e, em seguida, compila o binário Go.
📦 Instalar com Go```bash
GOPROXY=direct GOSUMDB=off go install github.com/xalgord/xalgorix/v4/cmd/xalgorix@latest
## 🔩 Configuração
O Xalgorix carrega a configuração nesta ordem. Fontes posteriores substituem as anteriores.
| Ordem | Fonte |
| ----- | -------------------------------------------------------------- |
| 1 | `/etc/xalgorix.env` |
| 2 | `/home/<sudo-user>/.xalgorix.env` quando iniciado via `sudo` |
| 3 | `~/.xalgorix.env` |
| 4 | Variáveis de ambiente já presentes no processo |
Crie o arquivo de ambiente local:```bash
nano ~/.xalgorix.env
🧩 Configuração Mínima
Para obter os resultados mais robustos de varredura autônoma, selecione um modelo de fronteira atual. O ID do modelo abaixo é um exemplo concreto; IDs de modelos compatíveis mais recentes podem ser inseridos sem aguardar um lançamento do Xalgorix.```bash XALGORIX_LLM=openai/gpt-5.6 XALGORIX_API_KEY=your_openai_api_key
### 🔌 Exemplos de Provedores
OpenAI:```bash
XALGORIX_LLM=openai/gpt-5.6
XALGORIX_API_KEY=sk-...
Custom OpenAI-compatible provider:```bash XALGORIX_LLM=custom/security-model XALGORIX_API_BASE=https://your-provider.example/v1 XALGORIX_API_KEY=your_provider_api_key
#### 🌉 Gateways LiteLLM / compatíveis com OpenAI (GitHub Copilot, Claude Opus, Codex, OpenRouter, Azure, modelos locais)
Como `XALGORIX_API_BASE` aceita qualquer endpoint `/v1/chat/completions` compatível com OpenAI,
o Xalgorix funciona com um proxy [LiteLLM](https://docs.litellm.ai/) sem necessidade de configuração adicional — nenhuma
alteração no lado do Xalgorix é necessária. O LiteLLM lida com a autenticação do provedor upstream (login de dispositivo do Copilot,
chaves do Azure, OpenRouter, Ollama, etc.); o Xalgorix apenas conversa via OpenAI com o gateway.
Execute o LiteLLM (exemplo de `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
Aponte o Xalgorix para ele — use o prefixo custom/ para que o nome do modelo seja enviado literalmente e o
protocolo OpenAI de chat-completions seja usado:```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
O mesmo padrão cobre GitHub Copilot Business/CLI, Claude Opus, modelos estilo Codex,
OpenRouter, Azure OpenAI e modelos locais Ollama — qualquer coisa que o LiteLLM possa rotear. Mantenha o
prefixo `custom/` (ou `openai/`) e um `XALGORIX_API_BASE` que não seja Anthropic/Gemini, para que o Xalgorix
use o formato padrão de requisição OpenAI que o LiteLLM espera.
### 🔔 Integrações Opcionais```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
🔐 Autenticação do Painel```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this-password
> [!TIP]
> Prefira `XALGORIX_PASSWORD_HASH` para implantações em produção.
## 🆙 Atualizando a partir de versões anteriores
Esta versão traz uma passagem de estabilidade e isolamento de workspace com uma mudança significativa e alguns novos ajustes que vale a pena conhecer.
### 💥 Mudança significativa: workspace padrão movido para `~/.xalgorix/data/`
Saídas de varredura, anotações, agendamentos e outros artefatos gerados agora ficam em `~/.xalgorix/data/` em vez de `$CWD` (o diretório a partir do qual o binário foi iniciado).
Para manter o comportamento anterior, aponte `XALGORIX_DATA_DIR` para o seu diretório de trabalho atual:```bash
export XALGORIX_DATA_DIR=$(pwd)
Um aviso [MIGRATION] é emitido na inicialização quando marcadores legados (notes.json, _schedules/, vulnerabilities.json ou diretórios YYYY-MM-DD/scan-*) são detectados em $CWD e XALGORIX_DATA_DIR não está definido. O Xalgorix nunca lê, copia ou exclui esses arquivos legados automaticamente; o aviso é informativo e só é disparado uma vez por processo.
🆕 Nova variável de ambiente
| Variável | Padrão | Descrição |
|---|---|---|
XALGORIX_LLM_MAX_INFLIGHT | 4 × EffectiveMaxInstances | Limita chamadas LLM simultâneas de saída em todas as varreduras em execução. Mínimo 1. Waiters cancelados não consomem um slot. |
🩺 Novos contadores de endpoint de saúde
GET /api/status agora expõe:
| Campo | Significado |
|---|---|
panics_recovered | Panics de goroutine, handler HTTP e ferramenta que foram recuperados sem travar. |
path_rejections | Gravações no sistema de arquivos recusadas pela Path_Policy (fora de data_dir / ~/.xalgorix/ / /tmp). |
watchdog_kills | Subprocessos encerrados pelo watchdog de timeout rígido por ferramenta. |
admission_refusals | Solicitações de admissão de varredura negadas devido ao teto de concorrência. |
llm_inflight_cap | Valor efetivo de XALGORIX_LLM_MAX_INFLIGHT para este processo. |
data_dir | Data_Dir resolvido em uso. |
allow_list | Raízes do sistema de arquivos aceitas pela Path_Policy. |
🏃 Execução
🪟 Interface Web```bash
xalgorix --web
Open:```text
http://127.0.0.1:9137
Use uma porta diferente:```bash xalgorix --web --port 8080
### 🌐 Acesso Externo
Vincule a outra interface somente após habilitar a autenticação do painel:```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this xalgorix --web --bind 0.0.0.0
[!WARNING] O servidor recusa ligação externa sem autenticação no dashboard.
🏹 Varredura via CLI```bash
xalgorix --target https://example.com
Com instruções personalizadas:```bash
xalgorix --target https://app.example.com --instruction "Focus on SQL injection, IDOR, and auth bypass. Avoid destructive tests."
🧰 Modo de Serviço
Instale e inicie como um serviço do sistema:```bash sudo xalgorix --start
Gerencie o serviço:```bash
sudo xalgorix --restart
sudo xalgorix --stop
sudo xalgorix --uninstall
Ver registos:```bash journalctl -u xalgorix -f
### 🌍 Acesso Remoto ao Serviço
Exponha o serviço a navegadores remotos apenas após ativar a autenticação do dashboard:```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
Então abra http://<server-ip>:9137.
Se o processo estiver em escuta mas a página ainda não carregar remotamente, permita a porta TCP 9137 no firewall do servidor ou no grupo de segurança da nuvem.
🏠 Escaneando alvos locais/internos
Por padrão, o Xalgorix se recusa a escanear endereços de loopback, localhost, faixas privadas ou
seus próprios endereços de interface — eles são a máquina onde o Xalgorix roda, não um
alvo. Em uma máquina self-hosted, de locatário único, você pode optar por escanear um
aplicativo de demonstração/staging hospedado localmente:```bash
echo 'XALGORIX_ALLOW_LOCAL_TARGETS=true' | sudo tee -a /root/.xalgorix.env
sudo xalgorix --restart
O listener do próprio dashboard está **sempre** protegido, mesmo com esta opção ativada.
> **⚠️ Implantações compartilhadas / multi-tenant / hospedadas: mantenha isto DESATIVADO.** Ativá-lo
> permitiria que a verificação de um usuário alcançasse a própria máquina do operador e a rede interna.
> Ele está desativado por padrão, portanto nenhuma ação é necessária para permanecer seguro — não defina
> `XALGORIX_ALLOW_LOCAL_TARGETS` (nem fixe `XALGORIX_ALLOW_LOCAL_TARGETS=false`),
> e não exponha a página de Configurações do mecanismo a usuários não confiáveis.
## 🔁 Fluxo de Trabalho da Interface Web
1. Abra o dashboard em `http://127.0.0.1:9137`.
2. Vá para Configurações e confirme o provedor de LLM, a chave de API, os limites de taxa e as integrações opcionais.
3. Crie uma verificação em Nova Verificação.
4. Escolha um modo de verificação.
5. Selecione as fases da metodologia quando quiser uma execução focada.
6. Defina filtros de severidade quando apenas determinadas severidades devem ser reportadas ao vivo. O filtro afeta apenas o feed do dashboard em tempo real e as notificações; o relatório em PDF e o `/api/findings` sempre incluem todas as vulnerabilidades que o agente descobriu.
7. Adicione o nome da empresa e carregue um logotipo para relatórios com marca.
8. Monitore o progresso em Visão Geral, Detalhes da Verificação ou Feed ao Vivo.
9. Abra os detalhes das descobertas, baixe relatórios ou gerencie verificações históricas em Verificações e Relatórios.
## 🔀 Modos de Verificação
| Modo | Melhor para |
| ---------------- | ------------------------------------------------------------------------------- |
| 🎯 Alvo único | Testar uma URL ou host conhecido. |
| 🌐 Wildcard / múltiplo | Enumerar alvos relacionados e verificar a superfície de ataque descoberta. |
| 🧭 DAST | Testes assistidos por navegador para aplicações web, fluxos de autenticação, formulários e comportamento em tempo de execução. |
## 📂 Verifique Seu Código (sem necessidade de alvo)
Aponte o Xalgorix para uma base de código — uma URL Git, um caminho local ou um zip carregado — e
ele verifica o código-fonte diretamente. Sem URL implantada, sem infraestrutura para configurar.```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
| Modo de verificação de código | O que faz | Nível de verificação |
|---|---|---|
review | Lê o código-fonte, rastreia a entrada do usuário do ponto de entrada → sumidouro perigoso e relata vulnerabilidades alcançáveis. Sem alvo ativo. | Verificado pela fonte — comprovadamente alcançável no código (claramente rotulado como não explorado em tempo de execução). |
provision | Inspeciona o repositório, compila e executa o aplicativo em uma porta de loopback e, em seguida, executa DAST guiado por whitebox contra a instância em execução. Recorre ao review se o aplicativo não puder ser compilado. | Verificado por exploração — reproduzido contra o aplicativo em execução. |
--sourceaceita uma URL Git (clonada superficialmente), um diretório local ou um caminho para um arquivo enviado/extraído. Na interface web / aplicativo hospedado, você também pode enviar um.zipdo seu código-fonte (POST /api/upload-source).- Você ainda pode combinar um repositório e um alvo ativo para aumento clássico de whitebox — esse caminho permanece inalterado. Os modos de verificação de código são para quando o código-fonte é o assunto inteiro.
O modo provision executa os comandos de compilação/inicialização do seu aplicativo no sandbox do agente e testa apenas a única porta de loopback na qual o aplicativo foi iniciado — o painel e tudo o mais na máquina permanecem fora do escopo.
🧭 Metodologia
O Xalgorix organiza testes autônomos em 22 fases.
| Fase | Foco |
|---|---|
| 1 | Reconhecimento |
| 2 | Descoberta manual de vulnerabilidades |
| 3 | Descoberta de diretórios e arquivos |
| 4 | Análise de CORS e cookies |
| 5 | Teste de autenticação e sessão |
| 6 | Teste de injeção |
| 7 | Teste de SSRF |
| 8 | IDOR e controle de acesso quebrado |
| 9 | Teste de API e GraphQL |
| 10 | Teste de upload de arquivos |
| 11 | Desserialização e RCE |
| 12 | Condições de corrida e lógica de negócios |
| 13 | Assunção de subdomínio |
| 14 | Teste de redirecionamento aberto |
| 15 | Teste de segurança de e-mail |
| 16 | Nuvem e infraestrutura |
| 17 | Teste de WebSocket |
| 18 | Teste específico de CMS |
| 19 | Sequestro de links quebrados e falsificação de conteúdo |
| 20 | Verificação de exploração |
| 21 | Descoberta de vulnerabilidades novas |
| 22 | Relatório final |
A seleção de fases na interface web permite executar todas as fases ou apenas o subconjunto necessário para um engajamento específico.
📄 Relatórios
Os relatórios são gerados como arquivos PDF e podem incluir:
| Seção | Conteúdo incluído |
|---|---|
| 📌 Resumo | Resumo executivo, metadados do alvo, metadados da verificação e visão geral de gravidade. |
| 🐞 Descobertas | Descobertas verificadas, detalhes de CVSS, análise técnica e prova de exploração. |
| 🔬 Evidências | Comandos de prova de conceito, scripts, anotações de payload e observações de suporte. |
| 🩹 Remediação | Orientação de correção e próximos passos priorizados. |
| 🎨 Marca | Nome da empresa/alvo e logotipo enviado. |
Os relatórios estão disponíveis na página de detalhes da verificação e na página de Relatórios. As linhas de relatório suportam abertura, download e exclusão.
🔧 Configurações
A maioria das configurações operacionais pode ser alterada na interface web em Configurações.
| Área | Exemplos |
|---|---|
| 🤝 Engajamento | Limites de taxa de solicitações do painel |
| 🧠 LLM | Modelo, chave de API, base de API, esforço de raciocínio, novas tentativas, iterações máximas |
| 📬 AgentMail | Pod e chave de API |
| 🔔 Notificações | Webhook do Discord e gravidade mínima, token do bot do Telegram, ID do chat, gravidade mínima e resumos opcionais de conclusão de verificação |
| 🕵️ Proxy | URL do proxy, arquivo de proxy, rotação, verificação de TLS |
| 🧱 Tempo de execução | Workspace, caminho do navegador, controles de instalação automática |
| 🔐 Segurança | Nome de usuário do painel, senha, hash de senha, endereço de vinculação |
| 📈 Recursos | Limites de CPU/RAM/disco e orçamento de concorrência de verificação |
Algumas configurações exigem reinicialização porque afetam a inicialização do processo ou a vinculação do servidor. A interface marca esses campos.
🧾 Variáveis de Ambiente
🧱 Núcleo
| Variável | Padrão | Descrição |
|---|---|---|
XALGORIX_LLM | nenhum | ID do modelo nativo do provedor usado para solicitações de LLM. |
XALGORIX_LLM_PROVIDER | nenhum | Provedor selecionado pelo painel, armazenado separadamente do ID do modelo. |
XALGORIX_API_KEY | nenhum | Chave de API do provedor de LLM obrigatória. |
XALGORIX_API_BASE | padrão do provedor | URL de base de API personalizada compatível com OpenAI. |
XALGORIX_REASONING_EFFORT | high | Esforço de raciocínio: none, low, medium, high ou xhigh (xhigh é mapeado para high no Ollama). |
XALGORIX_LANGUAGE | en | Idioma de saída para prosa gerada por IA (raciocínio do agente, anotações, descobertas, conteúdo do relatório, chat pós-verificação). en ou zh-CN. Tokens técnicos (payloads, comandos, URLs, IDs de CVE/CWE) sempre permanecem em sua forma original. Idiomas não latinos são renderizados automaticamente no painel e no relatório HTML. |
XALGORIX_PDF_CJK_FONT | nenhum | Caminho absoluto para uma fonte TrueType (.ttf) com glifos CJK, usada para renderizar idiomas não latinos (por exemplo, chinês simplificado) no relatório PDF exportado. Apenas .ttf é suportado (não .ttc/.otf). Sem ela, o PDF recorre às fontes principais e os glifos não latinos não serão renderizados (o relatório HTML não é afetado). |
XALGORIX_OLLAMA_COMPATIBLE | false | Aplica semântica de raciocínio do Ollama a um endpoint personalizado em uma porta não padrão. A porta 11434 é detectada automaticamente. |
XALGORIX_LLM_MAX_RETRIES | 5 | Contagem de novas tentativas para falhas transitórias de LLM. |
XALGORIX_MEMORY_COMPRESSOR_TIMEOUT | 30 | Tempo limite em segundos para compressão de contexto. |
XALGORIX_MAX_ITERATIONS | 0 | Limite de iterações do agente. 0 significa ilimitado. |
XALGORIX_PPROF_ADDR | nenhum | Profiler Go opcional. Quando definido (por exemplo, 127.0.0.1:6060), inicia um servidor pprof independente em /debug/pprof/ nesse endereço para diagnóstico de CPU/heap. Desativado por padrão. Expõe internals do processo — vincule ao loopback e acesse via túnel SSH; nunca exponha publicamente. |
GEMINI_API_KEY | nenhum | Chave Gemini opcional para enriquecimento de pesquisa na web. |
🔒 Web e Segurança
| Variável | Padrão | Descrição |
|---|---|---|
XALGORIX_BIND | 127.0.0.1 | Endereço de escuta do servidor web. |
XALGORIX_ALLOW_LOCAL_TARGETS | false | Permite verificar aplicativos hospedados localmente (localhost / 127.0.0.1 / IPs privados) em uma instalação auto-hospedada. O próprio listener do painel está sempre protegido. Deixe desativado em implantações compartilhadas/hospedadas. |
XALGORIX_USERNAME | nenhum | Nome de usuário do painel. |
XALGORIX_PASSWORD | nenhum | Senha do painel. |
XALGORIX_PASSWORD_HASH | nenhum | Hash de senha bcrypt preferido. |
XALGORIX_WORKSPACE | diretório atual | Raiz do workspace para execução de verificações. |
🤝 Integrações
| Variável | Padrão | Descrição |
|---|---|---|
AGENTMAIL_POD | nenhum | Identificador do pod AgentMail. |
AGENTMAIL_API_KEY | nenhum | Chave de API do AgentMail. |
XALGORIX_DISCORD_WEBHOOK | nenhum | Webhook global do Discord. |
XALGORIX_DISCORD_MIN_SEVERITY | nenhum | Gravidade mínima enviada ao Discord. |
XALGORIX_TELEGRAM_BOT_TOKEN | nenhum | Token do bot do Telegram do @BotFather. |
XALGORIX_TELEGRAM_CHAT_ID | nenhum | ID do chat/canal do Telegram (numérico ou @username). |
XALGORIX_TELEGRAM_MIN_SEVERITY | nenhum | Gravidade mínima enviada ao Telegram. |
XALGORIX_NOTIFY_SCAN_COMPLETE | false | Envia resumos de fim de verificação para destinos Discord/Telegram configurados. Isso é opcional e não afeta alertas por vulnerabilidade. |
CAIDO_PORT | 0 | Porta do proxy Caido. 0 significa detecção automática. |
CAIDO_API_TOKEN | nenhum | Token de API do Caido. |
🚦 Limites de Taxa, Proxy e Tempo de Execução
| Variável | Padrão | Descrição |
|---|---|---|
XALGORIX_RATE_LIMIT_REQUESTS | 60 | Solicitações do painel por janela. |
XALGORIX_RATE_LIMIT_WINDOW | 60 | Janela de limite de taxa do painel em segundos. |
XALGORIX_RATE_RPS | 10 | Taxa sustentada de solicitações de saída. |
XALGORIX_RATE_BURST | 20 | Tamanho de rajada de saída. |
XALGORIX_USE_PROXY | false | Habilita roteamento de proxy. |
XALGORIX_PROXY_URL | nenhum | URL de proxy único. Substitui o arquivo de proxy. |
XALGORIX_PROXY_FILE | nenhum | Arquivo contendo um proxy por linha. |
XALGORIX_PROXY_ROTATION | roundrobin | Estratégia de rotação de proxy: roundrobin ou random. |
XALGORIX_TLS_SKIP_VERIFY | false | Ignora verificação de TLS para tráfego de teste. |
XALGORIX_DISABLE_BROWSER | false | Desativa automação de navegador. |
XALGORIX_BROWSER_PATH | automático | Caminho personalizado do executável Chrome/Chromium. |
XALGORIX_ALLOW_AUTO_INSTALL | somente root | Permite instalação automática de pacotes. |
XALGORIX_AUTO_INSTALL_SUDO | false | Permite instalações automáticas prefixadas com sudo. |
🔤 Prefixos de Provedor
Quando XALGORIX_API_BASE está vazio, o Xalgorix infere padrões de provedor a partir do prefixo do modelo.
| Prefixo | Base de API padrão |
|---|---|
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 |
Os nomes de modelos não são codificados nesta lista. A página de Configurações aceita IDs de modelos digitados, para que modelos mais novos de provedores possam ser usados sem esperar por uma atualização do menu suspenso da interface.
💻 Referência da CLI
| Sinalizador | Alias | Descrição |
|---|---|---|
--web | -w | Inicia a interface web. |
--port <port> | -p | Porta da interface web. Padrão: 9137. |
--bind <addr> | nenhum | Endereço de vinculação. Padrão: 127.0.0.1. |
--target <target> | -t | URL, host, IP ou caminho do alvo. Repetível. |
--instruction <text> | -i | Instruções personalizadas de verificação. |
--model <model> | -m | Substitui XALGORIX_LLM para esta execução. |
--update | -up | Atualiza para a versão mais recente. |
--version | -v | Exibe a versão. |
--start | nenhum | Instala e inicia o serviço do sistema. |
--stop | nenhum | Para o serviço do sistema. |
--restart | nenhum | Reinicia o serviço do sistema. |
--uninstall | nenhum | Remove o serviço do sistema. |
--help | -h | Mostra ajuda. |
📡 Resumo da API
| Método | Endpoint | Finalidade |
|---|---|---|
POST | /api/scan | Inicia ou salva uma verificação. |
POST | /api/stop | Para todas as verificações em execução. |
GET | /api/status | Status global atual. |
GET | /api/scans | Lista verificações. |
GET | /api/scans/:id | Obtém detalhes da verificação. |
DELETE | /api/scans/:id | Exclui uma verificação e seus dados de relatório. |
GET | /api/findings | Lista todas as descobertas (deduplicadas entre verificações). |
GET | /api/findings/summary | Total de gravidades em todas as verificações. |
GET | /api/report/:id | Baixa um relatório em PDF. |
GET | /api/instances | Lista instâncias ativas e históricas. |
GET | /api/instances/:id/events | Obtém histórico de eventos em buffer. |
POST | /api/instances/:id/stop | Para uma instância específica. |
POST | /api/instances/:id/start | Inicia uma verificação salva ou concluída como uma nova execução. |
POST | /api/instances/:id/restart | Reinicia com a mesma configuração. |
POST | /api/instances/:id/pause | Pausa uma verificação em execução. |
POST | /api/instances/:id/resume | Retoma uma verificação pausada. |
POST | /api/upload-logo | Envia um logotipo de relatório. |
POST | /api/upload-targets | Envia uma lista de alvos. |
GET | /api/settings/environment | Lista configurações de ambiente editáveis. |
POST | /api/settings/environment | Salva configurações de ambiente. |
GET | /api/settings/llm | Obtém configurações de LLM. |
POST | /api/settings/llm | Salva configurações de LLM. |
GET | /api/settings/agentmail | Obtém configurações do AgentMail. |
POST | /api/settings/agentmail | Salva configurações do AgentMail. |
GET | /ws | Fluxo de eventos ao vivo via WebSocket. |
💾 Armazenamento de Dados
Os dados de verificação em modo web são armazenados em:```text
~/xalgorix-data/
|-- _saved/
|-- logos/
|-- queue_state.json
-- <target>/ -- /
-- <scan-id>/ |-- scan.json -- report.pdf
O servidor mantém registos históricos de digitalização em disco para que a interface possa recuperar após atualização ou reinício.
## 🧪 Desenvolvimento
| Tarefa | Comando |
| --------------------------- | ----------------------------- |
| 📦 Instalar dependências da interface Web | `make webui-install` |
| 🔨 Compilar tudo | `make build` |
| ✅ Executar testes | `go test ./...` |
| 🖥️ Executar a interface Web a partir do código-fonte | `go run ./cmd/xalgorix --web` |
| ⚡ Executar o servidor de desenvolvimento do frontend | `make webui-dev` |
## 🚨 Notas de Segurança
- Utilize o Xalgorix apenas contra alvos autorizados.
- Não execute testes ativos contra sistemas de terceiros sem permissão.
- Reveja as instruções de digitalização antes de iniciar.
- Configure limites de taxa e definições de proxy para corresponder às regras do compromisso.
- Expor o painel externamente requer autenticação.
- A instalação automática está desativada por predefinição para utilizadores não-root e deve ser ativada apenas quando confiar no ambiente.
## 📜 Licença
O Xalgorix é distribuído sob a Licença Apache 2.0. Consulte [LICENSE](https://github.com/xalgord/xalgorix/blob/main/LICENSE).
## 🔗 Ligações
| Recurso | Ligação |
| ------------- | -------------------------------------------------------------------------------- |
| ☁️ Alojado (Nuvem) | [www.xalgorix.com](https://www.xalgorix.com/) |
| 📖 Documentação | [docs.xalgorix.com](https://docs.xalgorix.com) |
| 🐛 Problemas | [github.com/xalgorix/xalgorix/issues](https://github.com/xalgorix/xalgorix/issues) |
| ☕ Suporte | [buymeacoffee.com/xalgord](https://buymeacoffee.com/xalgord) |


