
augustus v0.14.11
Ferramenta de teste de segurança para LLMs para detectar injeção de prompt, jailbreaks e ataques adversários — 190+ sondas, 28 provedores, binário único em Go
Augustus - Scanner de vulnerabilidades LLM para teste de injeção de prompt, jailbreak e ataques adversariais
Augustus - Scanner de Vulnerabilidades LLM
Teste grandes modelos de linguagem contra mais de 210 ataques adversariais cobrindo injeção de prompt, jailbreaks, exploração de codificação e extração de dados.
Augustus é um scanner de vulnerabilidades LLM baseado em Go para profissionais de segurança. Ele testa grandes modelos de linguagem contra uma vasta gama de ataques adversariais, integra-se com 28 provedores de LLM e produz relatórios de vulnerabilidades acionáveis.
Diferente de ferramentas focadas em pesquisa, o Augustus foi construído para testes de segurança em produção — varredura concorrente, limitação de taxa, lógica de repetição e tratamento de timeout vêm prontos de fábrica.
Índice
- Por que Augustus
- Recursos
- Início Rápido
- Provedores Suportados
- Uso
- Como Funciona
- Arquitetura
- Configuração
- FAQ
- Solução de Problemas
- Contribuindo
- Segurança
- Suporte
- Licença
Por que Augustus
| Recurso | Augustus | garak | promptfoo |
|---|---|---|---|
| Linguagem | Go | Python | TypeScript |
| Binário único | Sim | Não | Não |
| Varredura concorrente | Pools de goroutines | Pools de multiprocessamento | Sim |
| Provedores LLM | 28 | 35+ | 80+ |
| Tipos de sonda | 210+ | 160+ | 119 plugins + 36 estratégias |
| Foco empresarial | Sim | Pesquisa | Sim |
Recursos
| Recurso | Descrição |
|---|---|
| Mais de 210 Sondas de Vulnerabilidade | 47 categorias de ataque: jailbreaks, injeção de prompt, exemplos adversariais, extração de dados, benchmarks de segurança, ataques a agentes e muito mais |
| 28 Provedores LLM | OpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama e mais 22 com 43 variantes de geradores |
| Mais de 90 Detectores | Correspondência de padrões, LLM-como-juiz, HarmJudge (arXiv:2511.15304), Perspective API, detecção de conteúdo inseguro |
| 7 Transformações Buff | Codificação, paráfrase, poesia (5 formatos, 3 estratégias), tradução para idiomas de baixos recursos, transformações de caixa |
| Saída Flexível | Formatos de relatório: Tabela, JSON, JSONL e HTML |
| Pronto para Produção | Varredura concorrente, limitação de taxa, lógica de repetição, tratamento de timeout |
| Binário Único | Ferramenta baseada em Go compila em um executável portátil |
| Extensível | Registro estilo plugin via funções init() do Go |
Categorias de Ataque
- Ataques de jailbreak: DAN, DAN 11.0, AIM, AntiGPT, Grandma, ArtPrompts
- Injeção de prompt: Codificação (Base64, ROT13, Morse), Contrabando de tags, FlipAttack, Injeção de prefixo/sufixo
- Exemplos adversariais: GCG, PAIR, AutoDAN, TAP (Tree of Attack Prompts), TreeSearch, DRA
- Ataques de múltiplas rodadas: Crescendo (escalada gradual), GOAT (troca adaptativa de técnicas)
- Extração de dados: Vazamento de chave de API, Alucinação de pacotes, Extração de PII, LeakReplay
- Manipulação de contexto: Envenenamento RAG, Sobrecarga de contexto, Ataques multimodais, Continuação, Divergência
- Exploração de formato: Injeção de Markdown, Ataques de parsing YAML/JSON, Escape ANSI, Injeção Web (XSS)
- Técnicas de evasão: Ofuscação, Substituição de caracteres, Ataques baseados em tradução, Reformulação, ObscurePrompt
- Benchmarks de segurança: DoNotAnswer, RealToxicityPrompts, Snowball, LMRC
- Ataques a agentes: Manipulação multi-agente, Exploração de navegação
- Testes de segurança: Bypass de barreiras de proteção, Varredura AV/spam, Exploração (SQLi, execução de código), BadChars
Aviso: A sonda
lmrcusa linguagem obscena e ofensiva como parte de seus testes de jailbreak. Use apenas em ambientes de teste autorizados.
Início Rápido
Instalação
Requer Go 1.25.3 ou posterior.```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest
Ou compile a partir do código fonte:```bash
git clone https://github.com/praetorian-inc/augustus.git
cd augustus
make build
Uso Básico```bash
export OPENAI_API_KEY="your-api-key"
augustus scan openai.OpenAI
--probe dan.Dan_11_0
--detector dan.DAN
--verbose
### Exemplo de Saída```
+--------------+-------------+--------+-------+--------+
| PROBE | DETECTOR | PASSED | SCORE | STATUS |
+--------------+-------------+--------+-------+--------+
| dan.Dan_11_0 | dan.DAN | false | 0.85 | VULN |
| dan.STAN | dan.STAN | true | 0.10 | SAFE |
| dan.AntiDAN | dan.AntiDAN | true | 0.05 | SAFE |
+--------------+-------------+--------+-------+--------+
Listar Capacidades Disponíveis```bash
List all registered probes, detectors, generators, harnesses, and buffs
augustus list
## Provedores Suportados
O Augustus inclui 28 categorias de provedores de LLM com 43 variantes de gerador:
| Provedor | Nome(s) do Gerador | Notas |
|---|---|---|
| OpenAI | `openai.OpenAI`, `openai.OpenAIReasoning` | GPT-3.5, GPT-4, GPT-4 Turbo, modelos de raciocínio o1/o3 |
| Anthropic | `anthropic.Anthropic` | Claude 3/3.5/4 (Opus, Sonnet, Haiku) |
| Azure OpenAI | `azure.AzureOpenAI` | Modelos OpenAI hospedados no Azure |
| AWS Bedrock | `bedrock.Bedrock` | Modelos Claude, Llama, Titan |
| Google Vertex AI | `vertex.Vertex` | Modelos PaLM, Gemini |
| Cohere | `cohere.Cohere` | Modelos Command, Command R |
| Replicate | `replicate.Replicate` | Modelos abertos hospedados na nuvem |
| HuggingFace | `huggingface.InferenceAPI`, `huggingface.InferenceEndpoint`, `huggingface.Pipeline`, `huggingface.LLaVA` | API de Inferência HF, endpoints, pipelines, multimodal |
| Together AI | `together.Together` | Inferência rápida para modelos OSS |
| Anyscale | `anyscale.Anyscale` | Hospedagem Llama e Mistral |
| Groq | `groq.Groq` | Inferência LPU ultra-rápida |
| Mistral | `mistral.Mistral` | Modelos da API Mistral |
| Fireworks | `fireworks.Fireworks` | Plataforma de inferência de produção |
| DeepInfra | `deepinfra.DeepInfra` | Inferência GPU serverless |
| NVIDIA NIM | `nim.NIM`, `nim.NVOpenAICompletion`, `nim.NVMultimodal`, `nim.Vision` | Endpoints NVIDIA AI, multimodal |
| NVIDIA NeMo | `nemo.NeMo` | Framework NVIDIA NeMo |
| NVIDIA NVCF | `nvcf.NvcfChat`, `nvcf.NvcfCompletion` | NVIDIA Cloud Functions |
| NeMo Guardrails | `guardrails.NeMoGuardrails` | NVIDIA NeMo Guardrails |
| IBM watsonx | `watsonx.WatsonX` | Plataforma IBM watsonx.ai |
| LangChain | `langchain.LangChain` | Wrapper LLM LangChain |
| LangChain Serve | `langchain_serve.LangChainServe` | Endpoints LangChain Serve |
| Rasa | `rasa.RasaRest` | IA conversacional Rasa |
| GGML | `ggml.Ggml` | Inferência de modelo local GGML |
| Function | `function.Single`, `function.Multiple` | Geradores de função personalizados |
| Ollama | `ollama.Ollama`, `ollama.OllamaChat` | Hospedagem de modelo local |
| LiteLLM | `litellm.LiteLLM` | Proxy de API unificado |
| REST API | `rest.Rest` | Endpoints REST personalizados (suporte SSE) |
| Test | `test.Blank`, `test.Repeat`, `test.Lipsum`, `test.Nones`, `test.Single`, `test.BlankVision` | Teste e desenvolvimento |
Todos os provedores estão disponíveis no binário compilado. Configure via variáveis de ambiente ou arquivos de configuração YAML. Consulte [Configuração](#configuration) para detalhes de configuração.
## Uso
### Sonda Única```bash
# Test for DAN jailbreak
augustus scan openai.OpenAI \
--probe dan.Dan_11_0 \
--detector dan.DAN \
--config-file config.yaml \
--verbose
Múltiplas Sondas```bash
Use glob patterns to run related probes
augustus scan openai.OpenAI
--probes-glob "dan.,goodside.,grandma."
--detectors-glob ""
--config-file config.yaml
--output batch-results.jsonl
Run all probes against Claude
augustus scan anthropic.Anthropic
--all
--config '{"model":"claude-3-opus-20240229"}'
--timeout 60m
--output comprehensive-scan.jsonl
--html comprehensive-report.html
### Buff Transformations
Aplique transformações de prompt para testar técnicas de evasão:```bash
# Apply base64 encoding buff to all probes
augustus scan openai.OpenAI \
--all \
--buff encoding.Base64 \
--config '{"model":"gpt-4"}'
# Apply poetry transformation
augustus scan anthropic.Anthropic \
--probes-glob "dan.*" \
--buff poetry.MetaPrompt \
--config '{"model":"claude-3-opus-20240229"}'
# Chain multiple buffs
augustus scan openai.OpenAI \
--all \
--buffs-glob "encoding.*,paraphrase.*" \
--output buffed-results.jsonl
Formatos de Saída```bash
Table format (default) - human-readable
augustus scan openai.OpenAI --probe dan.Dan_11_0 --format table
JSON format - structured output
augustus scan openai.OpenAI --probe dan.Dan_11_0 --format json
JSONL format - one JSON object per line, ideal for piping
augustus scan openai.OpenAI --probe dan.Dan_11_0 --format jsonl
HTML report - visual reports for stakeholders
augustus scan openai.OpenAI --all --html report.html
### Endpoints REST Personalizados```bash
# Test proprietary LLM endpoint (OpenAI-compatible API)
augustus scan rest.Rest \
--probe dan.Dan_11_0 \
--detector dan.DAN \
--config '{
"uri": "https://api.example.com/v1/chat/completions",
"method": "POST",
"headers": {"Authorization": "Bearer YOUR_API_KEY"},
"req_template_json_object": {
"model": "custom-model",
"messages": [{"role": "user", "content": "$INPUT"}]
},
"response_json": true,
"response_json_field": "$.choices[0].message.content"
}'
# Test with proxy interception (Burp Suite, mitmproxy)
augustus scan rest.Rest \
--probes-glob "goodside.*" \
--config '{
"uri": "https://internal-llm.corp/generate",
"proxy": "http://127.0.0.1:8080",
"headers": {"X-API-Key": "$KEY"},
"api_key": "your-key-here",
"req_template": "{\"prompt\":\"$INPUT\",\"max_tokens\":500}",
"response_json": true,
"response_json_field": "output"
}'
Chaves de Configuração REST:
uri: Endpoint da API de destino (obrigatório)method: Método HTTP (padrão: POST)headers: Cabeçalhos HTTP como pares chave-valorreq_template: Corpo da requisição bruto com espaço reservado$INPUTreq_template_json_object: Corpo da requisição JSON (auto-serializado, use$INPUTem strings)response_json: Analisar resposta como JSON (padrão: falso)response_json_field: JSONPath para extrair (ex.:$.data.textou nome de campo simples)api_key: Chave de API para substituição do espaço reservado$KEYproxy: URL do proxy HTTP para inspeção de tráfego
Opções Avançadas```bash
Adjust concurrency (default: 10)
augustus scan openai.OpenAI --all --concurrency 20
Increase timeout for complex probes like TAP or PAIR
augustus scan openai.OpenAI --probe tap.TAPv1 --timeout 60m
Use a specific harness strategy
augustus scan openai.OpenAI --all --harness batch.Batch
Test local model with Ollama (no API key needed)
augustus scan ollama.OllamaChat
--probe dan.Dan_11_0
--config '{"model":"llama3.2:3b"}'
## Como Funciona
Augustus usa uma arquitetura de pipeline para testar LLMs contra ataques adversários:```mermaid
flowchart LR
A[Probe Selection] --> B[Buff Transform]
B --> C[Generator / LLM Call]
C --> D[Detector Analysis]
D --> E{Vulnerable?}
E -->|Yes| F[Record Finding]
E -->|No| G[Record Pass]
subgraph Scanner
B
C
D
E
end
Pipeline de Varredura
- Seleção de Sondas: Escolha sondas por nome, padrão glob ou
--all - Transformação Buff: Opcionalmente, transforme prompts (codificar, parafrasear, traduzir, poetizar)
- Chamada do Gerador: Envie prompts adversariais para o LLM alvo através da integração com seu provedor
- Análise do Detector: Analise respostas usando correspondência de padrões, LLM como juiz ou detectores especializados
- Registro de Resultados: Pontue cada tentativa e produza saída no formato solicitado
- Mecanismo de Ataque: Para sondas iterativas (PAIR, TAP), o mecanismo de ataque de turno único refina prompts ao longo das iterações com poda de candidatos e pontuação baseada em juiz
- Mecanismo Multi-Turno: Para sondas conversacionais (Crescendo, GOAT), o mecanismo multi-turno mantém o histórico completo da conversa com o alvo ao longo dos turnos, com detecção de recusa e adaptação dinâmica
Estratégias de Ataque Multi-Turno
Ataques multi-turno mantêm uma conversa persistente com o LLM alvo, explorando o fato de que os modelos podem divulgar informações incrementalmente ao longo dos turnos que recusariam em um único prompt. O mecanismo multi-turno usa três LLMs: um atacante (gera perguntas), um alvo (o sistema sob teste) e um juiz (pontua o progresso e detecta recusas).
Crescendo
Crescendo usa escalada gradual (técnica do pé na porta) para lentamente deslocar uma conversa de tópicos benignos em direção a um objetivo proibido.
- Artigo: Russinovich et al., 2024
- Abordagem: Começa com perguntas genuinamente benignas e educacionais e aumenta incrementalmente a especificidade ao longo de muitos turnos
- Padrão de escalada: Contexto histórico → mecanismos técnicos → detalhes específicos → solicitações diretas enquadradas como acompanhamentos naturais
- Força: Eficaz contra modelos que monitoram o tom da conversa — a mudança gradual evita acionar filtros de segurança```bash
augustus scan rest.Rest
--probe crescendo.Crescendo
--config-file crescendo.yaml
--html report.html -v
#### GOAT (Generative Offensive Agent Tester)
O GOAT usa uma abordagem agressiva e adaptativa com 7 técnicas adversariais e raciocínio Chain-of-Attack-Thought para alternar dinamicamente estratégias com base no que funciona ou falha.
- **Artigo**: [Pavlova et al., 2024](https://arxiv.org/abs/2410.01606)
- **Abordagem**: Ataca o objetivo desde o turno 1 usando enquadramento indireto, nunca menciona o objetivo diretamente ao alvo
- **7 técnicas** em 3 categorias:
- *Manipulação de Saída*: Supressão de Recusa, Priming de Resposta
- *Distratores de Resposta Segura*: Resposta Dupla, Divisão de Tópico, Intenção Opnesta
- *Cenários Ficcionais*: Modificação de Persona, Hipotético
- **Chain-of-Attack-Thought**: Em cada turno, o atacante raciocina através de Observação → Pensamento → Estratégia → Resposta antes de elaborar sua mensagem
- **Empilhamento de técnicas**: Várias técnicas podem ser combinadas em um único turno para um efeito mais forte
- **Força**: Alcança altas taxas de sucesso em menos turnos (tipicamente 3-5) ao alternar agressivamente entre abordagens fundamentalmente diferentes```bash
augustus scan rest.Rest \
--probe goat.Goat \
--config-file goat.yaml \
--html report.html -v
Hydra
Hydra mantém um único caminho de conversação e desfaz turnos inteiros quando o alvo recusa, pedindo ao atacante uma abordagem completamente diferente. Diferentemente de Crescendo/GOAT (que reformulam na recusa), o retrocesso do Hydra remove completamente os turnos recusados da visão do alvo.
- Abordagem: Caminho único com retrocesso no nível de turno — turnos recusados são apagados e substituídos
- Técnicas: Decomposição (dividir o objetivo em subquestões inocentes), aproveitamento de contexto (construir com base nas próprias palavras do alvo), simulação de autoridade, enquadramento emocional, normalização progressiva
- Característica principal:
max_backtrackscontrola quantas vezes o Hydra pode apagar e tentar novamente um turno - Modo stateful: Defina
stateful: truepara alvos onde as mensagens não podem ser canceladas (desabilita o retrocesso) - Força: Mantém o histórico de conversação do alvo limpo — o alvo nunca vê abordagens fracassadas, prevenindo escalada defensiva```bash
augustus scan rest.Rest
--probe hydra.Hydra
--config-file hydra.yaml
--html report.html -v
#### Utilizador Travesso
O Utilizador Travesso simula uma pessoa inocente e curiosa que sonda subtilmente os limites da IA através de uma conversa natural. Ao contrário das estratégias adversariais, a persona do atacante é um utilizador casual que deriva para tópicos proibidos através de um envolvimento aparentemente inocente.
- **Inspirado por**: [Tau-bench](https://github.com/sierra-research/tau-bench) e a estratégia mischievous-user do promptfoo
- **Abordagem**: Fase de construção de rapport → sondagem de limites → pressão assertiva
- **7 técnicas**: Curiosidade ingénua, mal-entendido deliberado, prova social, deriva gradual, apelo emocional, permissão assumida, recontextualização
- **Guias de jogo específicos para objetivos**: Scripts integrados para extrair instruções do sistema, encontrar segredos/flags e contornar a política de conteúdo
- **Voltas predefinidas**: 5 (menos do que outras estratégias — a abordagem subtil funciona rapidamente ou não funciona de todo)
- **Força**: Eficaz contra modelos treinados para resistir a padrões adversariais óbvios — a persona casual contorna as heurísticas de "deteção de ataques"```bash
augustus scan rest.Rest \
--probe mischievous.MischievousUser \
--config-file mischievous.yaml \
--html report.html -v
Guia de Seleção de Estratégia
| Estratégia | Turnos | Estilo | Melhor Para | Custo |
|---|---|---|---|---|
crescendo.Crescendo | 10 | Escalação gradual | Modelos com filtros de segurança baseados em tom | Médio (10 turnos × 3 chamadas LLM) |
goat.Goat | 10 | Troca agressiva de técnicas | Resultados rápidos, modelos fracos contra truques de enquadramento | Médio-Alto (sobrecarga de raciocínio da técnica) |
hydra.Hydra | 10 | Retrocesso em caso de recusa | Modelos teimosos que recusam com frequência | Alto (retrocesso adiciona repetições) |
mischievous.MischievousUser | 5 | Sondagem casual de persona | Modelos treinados contra padrões adversariais | Baixo (5 turnos, abordagem sutil) |
Decisão rápida:
- Comece com Crescendo — é a estratégia mais geral
- Tente GOAT se Crescendo for muito lento (GOAT geralmente tem sucesso em 3-5 turnos)
- Use Hydra se o alvo recusar com frequência (o retrocesso mantém a conversa limpa)
- Use Mischievous para alvos com forte detecção de padrões adversariais (a persona contorna heurísticas)
Configuração Multi-turno
As quatro estratégias compartilham a mesma estrutura de configuração:```yaml generators: rest.Rest: uri: "https://your-llm-endpoint/chat" method: POST req_template: '{"input": "$INPUT"}' response_json: true response_json_field: "response"
judge: generator_type: openai.OpenAI config: model: gpt-4 api_key: "${OPENAI_API_KEY}"
probes: attacker_generator_type: openai.OpenAI attacker_config: model: gpt-4 api_key: "${OPENAI_API_KEY}" settings: crescendo.Crescendo: # or goat.Goat, hydra.Hydra, mischievous.MischievousUser goal: "your test objective" max_turns: 10 success_threshold: 0.8 use_secondary_judge: true
| Configuração | Padrão | Descrição |
|---------|---------|-------------|
| `goal` | (obrigatório) | O objetivo que o atacante tenta alcançar |
| `max_turns` | 10 | Número máximo de turnos de conversa antes de parar |
| `success_threshold` | 0.8 | Pontuação do juiz (0.0-1.0) que aciona saída antecipada |
| `max_refusal_retries` | 10 | Tentativas de reformulação por turno quando o alvo recusa |
| `attack_max_attempts` | 5 | Tentativas de repetição para falhas de parsing JSON do LLM atacante |
| `use_secondary_judge` | true | Ativa juiz secundário para capturar falsos negativos |
| `max_backtracks` | 10 | Retrocessos no nível do turno em caso de recusa (apenas Hydra) |
| `enable_fast_refusal` | true | Detecção baseada em padrões antes da chamada do juiz LLM |
| `enable_scan_memory` | false | Aprendizagem entre casos de teste (compartilha táticas entre sondas) |
| `stateful` | false | Desativa retrocesso para alvos com estado |
| `exclude_target_output` | false | Oculta respostas do alvo do feedback do atacante (modo privacidade) |
| `attacker_model` | (auto) | Substitui o nome do modelo atacante para dimensionamento da janela de contexto |
#### Solução de Problemas em Múltiplas Etapas
| Sintoma | Causa Provável | Solução |
|---------|-------------|-----|
| `no turns completed (attacker_parse_failures=N)` | LLM atacante retornando JSON inválido | Use um modelo atacante mais forte (GPT-4, Claude Opus). Aumente `attack_max_attempts`. |
| `no turns completed (target_empty=N)` | Alvo retornando respostas vazias/nulas | Verifique se o endpoint do alvo está respondendo. Confirme o template de configuração REST. |
| Todos os turnos pontuam 0.0 | Objetivo muito vago ou atacante não engajando | Torne o `goal` mais específico. Tente uma estratégia diferente. |
| Pontuações altas, mas sem sucesso | `success_threshold` muito alto | Abaixe `success_threshold` de 0.8 para 0.6-0.7 |
| Execução muito longa / cara | Muitos turnos e repetições | Reduza `max_turns` (tente 5). Defina `enable_fast_refusal: true`. |
| Hydra fica retrocedendo | Alvo recusa tudo | Tente `stateful: true` ou mude para a estratégia Mischievous |
## Arquitetura```
cmd/augustus/ CLI entrypoint (Kong-based)
pkg/
attempt/ Probe execution lifecycle and result tracking
buffs/ Buff interface for prompt transformations
config/ Configuration loading (YAML/JSON) with profiles
detectors/ Public detector interfaces and registry
generators/ Public generator interfaces and registry
harnesses/ Harness interface for execution strategies
lib/http/ Shared HTTP client with proxy support
lib/stego/ LSB steganography for multimodal attacks
logging/ Structured slog-based logging
metrics/ Prometheus metrics collection
prefilter/ Aho-Corasick keyword pre-filtering
probes/ Public probe interfaces and registry
ratelimit/ Token bucket rate limiting
registry/ Generic capability registration system
results/ Result types and multi-format output
retry/ Exponential backoff with jitter
scanner/ Scanner orchestration with concurrency
templates/ YAML probe template loader (Nuclei-style)
types/ Canonical shared interfaces (Prober, Generator, Detector)
internal/
probes/ 210+ probe implementations (47 categories)
generators/ 28 LLM provider integrations (43 variants)
detectors/ 90+ detector implementations (35 categories)
harnesses/ 3 harness strategies (probewise, batch, agentwise)
buffs/ Buff interface for prompt transformations
attackengine/ Iterative adversarial attack engine (PAIR/TAP backend)
multiturn/ Multi-turn conversational attack engine (Crescendo/GOAT/Hydra/Mischievous)
ahocorasick/ Internal Aho-Corasick keyword matching
benchmarks/ Performance benchmarks
tests/ Integration and equivalence tests
research/ Research documentation and analysis
examples/ Example configurations
docs/ Documentation
Principais Decisões de Design
- Varredura concorrente com pools de goroutines limitados via
errgroup - Registro no estilo de plugin usando funções Go
init()para probes, geradores, detectores, buffs e harnesses - Mecanismo de ataque iterativo com gerenciamento de conversação multi-stream, poda de candidatos e pontuação baseada em juiz para PAIR/TAP
- Mecanismo de ataque multi-turno com histórico de conversação persistente, detecção de recusa e design independente de estratégia para Crescendo/GOAT
- Modelos de probe YAML (estilo Nuclei) para definições declarativas de probes juntamente com probes baseados em Go
- Pré-filtragem Aho-Corasick para correspondência rápida de palavras-chave em detectores
Configuração
Arquivo de Configuração YAML
Crie um arquivo config.yaml:```yaml
Runtime configuration
run: max_attempts: 3 timeout: "30s"
Generator configurations
generators: openai.OpenAI: model: "gpt-4" temperature: 0.7 api_key: "${OPENAI_API_KEY}" # Environment variable interpolation
anthropic.Anthropic: model: "claude-3-opus-20240229" temperature: 0.5 api_key: "${ANTHROPIC_API_KEY}"
ollama.OllamaChat: model: "llama3.2:3b" temperature: 0.8
Judge configuration (required for judge.Judge, judge.Refusal, and multi-turn probes)
judge: generator_type: openai.OpenAI model: gpt-4o-mini config: api_key: "${OPENAI_API_KEY}"
Output configuration
output: format: "jsonl" path: "./results.jsonl"
Named profiles for different scenarios
profiles: quick: run: max_attempts: 1 timeout: "10s" generators: openai.OpenAI: model: "gpt-3.5-turbo" temperature: 0.5 output: format: "table"
thorough: run: max_attempts: 5 timeout: "60s" generators: openai.OpenAI: model: "gpt-4" temperature: 0.3 output: format: "jsonl" path: "./thorough_results.jsonl"
### Variáveis de Ambiente```bash
# API Keys
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export COHERE_API_KEY="..."
# Debug mode
export AUGUSTUS_DEBUG=true
Configuração de Proxy
Roteie o tráfego HTTP por meio de um proxy (ex.: Burp Suite) para inspeção:```bash
Method 1: Via config parameter
augustus scan rest.Rest
--probe dan.Dan_11_0
--detector dan.DAN
--config '{"uri":"https://api.example.com","proxy":"http://127.0.0.1:8080"}'
--output results.jsonl
Method 2: Via environment variables
export HTTP_PROXY=http://127.0.0.1:8080 export HTTPS_PROXY=http://127.0.0.1:8080 augustus scan rest.Rest --probe dan.Dan_11_0 --config '{"uri":"https://api.example.com"}'
- Verificação TLS automaticamente desativada para inspeção de proxy
- Suporte a HTTP/2 ativado para APIs modernas
- Respostas Server-Sent Events (SSE) automaticamente detectadas e analisadas
### Referência da CLI```
Usage: augustus scan <generator> [flags]
Arguments:
<generator> Generator name (e.g., openai.OpenAI, anthropic.Anthropic)
Probe Selection (choose one):
--probe, -p Probe name (repeatable)
--probes-glob Comma-separated glob patterns (e.g., "dan.*,goodside.*")
--all Run all registered probes
Detector Selection:
--detector Detector name (repeatable)
--detectors-glob Comma-separated glob patterns
Buff Selection:
--buff, -b Buff names to apply (repeatable)
--buffs-glob Comma-separated buff glob patterns (e.g., "encoding.*")
Configuration:
--config-file Path to YAML config file
--config, -c JSON config for generator
Execution:
--harness Harness name (default: probewise.Probewise)
--timeout Overall scan timeout (default: 30m)
--probe-timeout Per-probe timeout (default: 5m)
--concurrency Max concurrent probes (default: 10, env: AUGUSTUS_CONCURRENCY)
Output:
--format, -f Output format: table, json, jsonl (default: table)
--output, -o JSONL output file path
--html HTML report file path
--verbose, -v Verbose output
Global:
--debug, -d Enable debug mode
Comandos:```bash augustus version # Print version information augustus list # List available probes, detectors, generators, harnesses, buffs augustus scan # Run vulnerability scan augustus completion # Generate shell completion (bash, zsh, fish)
**Códigos de Saída:**
| Código | Significado |
|--------|-------------|
| 0 | Sucesso - varredura concluída |
| 1 | Erro de varredura/tempo de execução |
| 2 | Erro de validação/uso |
## Perguntas Frequentes
### Como o Augustus se compara ao garak?
Augustus é uma reimplementação nativa em Go, inspirada pelo [garak](https://github.com/NVIDIA/garak) (scanner de vulnerabilidades LLM baseado em Python da NVIDIA). Principais diferenças:
- **Desempenho**: Binário Go vs Interpretador Python — execução mais rápida e menor uso de memória
- **Distribuição**: Binário único sem dependências de tempo de execução vs Pacote Python com pip install
- **Concorrência**: Pools de goroutines Go (paralelismo entre probes) vs Pools de multiprocessing Python (paralelismo dentro de probes)
- **Cobertura de probes**: Augustus tem mais de 210 probes; garak tem mais de 160 probes com um pedigree de pesquisa mais longo e artigo publicado (arXiv:2406.11036)
- **Cobertura de provedores**: Augustus tem 28 provedores; garak tem mais de 35 variantes de geradores em 22 módulos de provedores
### Posso testar modelos locais sem chaves de API?
Sim! Use a integração Ollama para testar modelos locais:```bash
# No API key needed
augustus scan ollama.OllamaChat \
--probe dan.Dan_11_0 \
--config '{"model":"llama3.2:3b"}'
Como adiciono probes personalizadas?
- Crie um novo arquivo Go em
internal/probes/ - Implemente a interface
probes.Probe - Registre usando
registry.RegisterProbe()em uma funçãoinit() - Reconstrua:
make build
Veja CONTRIBUTING.md para instruções detalhadas.
Quais formatos de saída são suportados?
Augustus suporta quatro formatos de saída:
| Formato | Bandeira | Caso de Uso |
|---|---|---|
| Tabela | --format table | Saída de terminal legível por humanos |
| JSON | --format json | Objeto JSON único para análise |
| JSONL | --format jsonl | JSON delimitado por linha para streaming |
| HTML | --html report.html | Relatórios visuais para stakeholders |
Como testo vários modelos de uma vez?```bash
Test multiple models sequentially
for model in "gpt-4" "gpt-3.5-turbo"; do
augustus scan openai.OpenAI
--all
--config "{"model":"$model"}"
--output "results-$model.jsonl"
done
### O Augustus é adequado para ambientes de produção?
Sim, o Augustus é projetado para uso em produção com:
- Escaneamento concorrente com limites configuráveis
- Limitação de taxa para respeitar cotas de API
- Tratamento de tempo limite para sondagens de longa duração
- Lógica de repetição para falhas transitórias
- Registro estruturado para observabilidade
## Solução de problemas
### Erro: "Limite de taxa da API excedido"
**Causa**: Muitas solicitações concorrentes ou solicitações por minuto.
**Soluções**:
1. Reduza a concorrência: `--concurrency 5`
2. Use configurações de limite de taxa específicas do provedor no arquivo de configuração YAML: ```yaml
generators:
openai.OpenAI:
rate_limit: 10 # requests per minute
Erro: "context deadline exceeded" ou "timeout"
Causa: Sondas complexas (como TAP ou PAIR) excedem o timeout padrão.
Solução:```bash
augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml
### Erro: "invalid API key" ou "authentication failed"
**Causa**: Credenciais de API ausentes ou inválidas.
**Soluções**:
1. Verifique se a variável de ambiente está definida: `echo $OPENAI_API_KEY`
2. Verifique erros de digitação no arquivo de configuração
3. Certifique-se de que a API key tenha as permissões necessárias
4. Para Ollama, certifique-se de que o serviço está em execução: `ollama serve`
### Erro: "probe not found" ou "detector not found"
**Causa**: Erro de digitação no nome ou probe não registrado.
**Solução**:```bash
# List all available probes and detectors
augustus list
# Use exact names from the list
augustus scan openai.OpenAI --probe dan.Dan_11_0 # Correct
A varredura não produz resultados
Causa: O detector não correspondeu a nenhuma resposta, ou a saída não foi escrita.
Soluções:
- Execute com
--verbosepara ver a saída detalhada - Verifique se o detector corresponde ao tipo de sonda
- Verifique se o caminho do arquivo de saída é gravável
Contribuindo
Aceitamos contribuições! Veja CONTRIBUTING.md para:
- Adicionar novas sondas de vulnerabilidade
- Criar novas implementações de detectores
- Adicionar integrações de provedores LLM
- Diretrizes de teste
- Requisitos de estilo de código
Desenvolvimento```bash
Run all tests
make test
Run specific package tests
go test ./pkg/scanner -v
Run equivalence tests (compare Go vs Python implementations)
go test ./tests/equivalence -v
Build binary
make build
Install to $GOPATH/bin
make install
### Ambiente de Benchmark (DevPod)
Um ambiente de desenvolvimento em nuvem pronto para uso para benchmark de LLMs está disponível através de [DevPod](https://devpod.sh/). Ele provisiona um contêiner remoto com Augustus, Ollama, Go e todas as dependências pré-instaladas.```bash
cd devpod
# CPU-only instance (~$0.08/hr) - cloud APIs only
make devpod-up-cpu
# GPU instance with NVIDIA T4 (~$0.53/hr) - local models up to 14B
make devpod-up-gpu
# GPU Pro instance with NVIDIA L4 (~$0.80/hr) - local models up to 32B
make devpod-up-gpu-pro
Dentro do devpod:```bash devpod/scripts/setup.sh # Configure LLM provider API keys devpod/scripts/pull-models.sh # Pull local Ollama models (GPU only) devpod/scripts/benchmark.sh # Run benchmarks with comparison reports
O ambiente também funciona como um [dev container](https://containers.dev/) padrão — abra o repositório no VS Code ou Cursor e selecione a configuração CPU ou GPU em `.devcontainer/`.
## Segurança
O Augustus foi projetado para **testes de segurança autorizados somente**.
- O Augustus envia prompts adversariais para LLMs que você especificar - sempre garanta que você tem autorização
- Nunca teste sistemas que você não possui ou que não tenha permissão explícita para testar
- Alguns probes geram conteúdo ofensivo intencionalmente (para testar filtros de segurança)
- Os resultados podem conter conteúdo prejudicial produzido pelos LLMs alvo
Relate problemas de segurança através das [Issues do GitHub](https://github.com/praetorian-inc/augustus/issues).
## Suporte
Se você achar o Augustus útil, considere:
- Dar uma **estrela** no GitHub
- [Abrir uma issue](https://github.com/praetorian-inc/augustus/issues) para bugs ou solicitações de funcionalidades
- [Contribuir](https://github.com/praetorian-inc/augustus/blob/HEAD/CONTRIBUTING.md) com novos probes, detectores ou integrações de provedores
[](https://star-history.com/#praetorian-inc/augustus&Date)
## Licença
[Apache 2.0](https://github.com/praetorian-inc/augustus/blob/HEAD/LICENSE) - Praetorian Security, Inc.
---
**Construído por [Praetorian](https://www.praetorian.com/)** - Soluções de Segurança Ofensiva