Voltar às atualizações
New releaseJul 27, 2026

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

Compartilhar

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.

CI Go Version License Go Report Card GitHub Release

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

RecursoAugustusgarakpromptfoo
LinguagemGoPythonTypeScript
Binário únicoSimNãoNão
Varredura concorrentePools de goroutinesPools de multiprocessamentoSim
Provedores LLM2835+80+
Tipos de sonda210+160+119 plugins + 36 estratégias
Foco empresarialSimPesquisaSim

Recursos

RecursoDescrição
Mais de 210 Sondas de Vulnerabilidade47 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 LLMOpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama e mais 22 com 43 variantes de geradores
Mais de 90 DetectoresCorrespondência de padrões, LLM-como-juiz, HarmJudge (arXiv:2511.15304), Perspective API, detecção de conteúdo inseguro
7 Transformações BuffCodificação, paráfrase, poesia (5 formatos, 3 estratégias), tradução para idiomas de baixos recursos, transformações de caixa
Saída FlexívelFormatos de relatório: Tabela, JSON, JSONL e HTML
Pronto para ProduçãoVarredura concorrente, limitação de taxa, lógica de repetição, tratamento de timeout
Binário ÚnicoFerramenta baseada em Go compila em um executável portátil
ExtensívelRegistro 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 lmrc usa 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-valor
  • req_template: Corpo da requisição bruto com espaço reservado $INPUT
  • req_template_json_object: Corpo da requisição JSON (auto-serializado, use $INPUT em strings)
  • response_json: Analisar resposta como JSON (padrão: falso)
  • response_json_field: JSONPath para extrair (ex.: $.data.text ou nome de campo simples)
  • api_key: Chave de API para substituição do espaço reservado $KEY
  • proxy: 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

  1. Seleção de Sondas: Escolha sondas por nome, padrão glob ou --all
  2. Transformação Buff: Opcionalmente, transforme prompts (codificar, parafrasear, traduzir, poetizar)
  3. Chamada do Gerador: Envie prompts adversariais para o LLM alvo através da integração com seu provedor
  4. Análise do Detector: Analise respostas usando correspondência de padrões, LLM como juiz ou detectores especializados
  5. Registro de Resultados: Pontue cada tentativa e produza saída no formato solicitado
  6. 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
  7. 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_backtracks controla quantas vezes o Hydra pode apagar e tentar novamente um turno
  • Modo stateful: Defina stateful: true para 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égiaTurnosEstiloMelhor ParaCusto
crescendo.Crescendo10Escalação gradualModelos com filtros de segurança baseados em tomMédio (10 turnos × 3 chamadas LLM)
goat.Goat10Troca agressiva de técnicasResultados rápidos, modelos fracos contra truques de enquadramentoMédio-Alto (sobrecarga de raciocínio da técnica)
hydra.Hydra10Retrocesso em caso de recusaModelos teimosos que recusam com frequênciaAlto (retrocesso adiciona repetições)
mischievous.MischievousUser5Sondagem casual de personaModelos treinados contra padrões adversariaisBaixo (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?

  1. Crie um novo arquivo Go em internal/probes/
  2. Implemente a interface probes.Probe
  3. Registre usando registry.RegisterProbe() em uma função init()
  4. 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:

FormatoBandeiraCaso de Uso
Tabela--format tableSaída de terminal legível por humanos
JSON--format jsonObjeto JSON único para análise
JSONL--format jsonlJSON delimitado por linha para streaming
HTML--html report.htmlRelató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:

  1. Execute com --verbose para ver a saída detalhada
  2. Verifique se o detector corresponde ao tipo de sonda
  3. 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

[![Star History Chart](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](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

Categorias