Torna agli aggiornamenti
New releaseJul 27, 2026

augustus v0.14.11

Framework di test di sicurezza per LLM per rilevare iniezioni di prompt, jailbreak e attacchi avversari — oltre 190 sonde, 28 fornitori, un singolo binario Go

Condividi

Augustus - Scanner di vulnerabilità LLM per injection di prompt, jailbreak e test di attacchi avversari

Augustus - Scanner di Vulnerabilità LLM

Testa grandi modelli linguistici contro oltre 210 attacchi avversari che coprono injection di prompt, jailbreak, exploit di codifica ed estrazione dati.

CI Versione Go Licenza Go Report Card GitHub Release

Augustus è uno scanner di vulnerabilità LLM basato su Go per professionisti della sicurezza. Testa grandi modelli linguistici contro un'ampia gamma di attacchi avversari, si integra con 28 fornitori LLM e produce report di vulnerabilità utilizzabili.

A differenza degli strumenti orientati alla ricerca, Augustus è progettato per il testing di sicurezza in produzione — scansione concorrente, limitazione della frequenza, logica di retry e gestione del timeout sono inclusi fin dall'inizio.

Indice dei contenuti

Perché Augustus

CaratteristicaAugustusgarakpromptfoo
LinguaggioGoPythonTypeScript
Binario singoloNoNo
Scansione concorrentePool di goroutinePool di multiprocessing
Fornitori LLM2835+80+
Tipi di sonda210+160+119 plugin + 36 strategie
Focus aziendaleRicerca

Caratteristiche

CaratteristicaDescrizione
210+ Sonde di Vulnerabilità47 categorie di attacco: jailbreak, injection di prompt, esempi avversari, estrazione dati, benchmark di sicurezza, attacchi agenti e altro ancora
28 Fornitori LLMOpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama e altri 22 con 43 varianti di generatore
90+ RilevatoriPattern matching, LLM-as-a-judge, HarmJudge (arXiv:2511.15304), Perspective API, rilevamento di contenuti non sicuri
7 Trasformazioni BuffCodifica, parafrasi, poesia (5 formati, 3 strategie), traduzione in lingue a basse risorse, trasformazioni di maiuscolo/minuscolo
Output FlessibileFormati di report: tabella, JSON, JSONL e HTML
Pronto per la ProduzioneScansione concorrente, limitazione della frequenza, logica di retry, gestione del timeout
Binario SingoloLo strumento basato su Go compila in un singolo eseguibile portabile
EstendibileRegistrazione in stile plugin tramite funzioni Go init()

Categorie di Attacco

  • Attacchi di jailbreak: DAN, DAN 11.0, AIM, AntiGPT, Grandma, ArtPrompts
  • Iniezione di prompt: Codifica (Base64, ROT13, Morse), Contrabbando di tag, FlipAttack, Iniezione di prefisso/suffisso
  • Esempi avversari: GCG, PAIR, AutoDAN, TAP (Tree of Attack Prompts), TreeSearch, DRA
  • Attacchi multi-turno: Crescendo (escalation graduale), GOAT (cambio adattivo di tecnica)
  • Estrazione dati: Perdita di chiavi API, Allucinazione di pacchetti, Estrazione di PII, LeakReplay
  • Manipolazione del contesto: Avvelenamento RAG, Overflow del contesto, Attacchi multimodali, Continuazione, Divergenza
  • Exploit di formato: Iniezione Markdown, Attacchi di parsing YAML/JSON, Escape ANSI, Iniezione web (XSS)
  • Tecniche di evasione: Offuscamento, Sostituzione di caratteri, Attacchi basati su traduzione, Parafrasi, ObscurePrompt
  • Benchmark di sicurezza: DoNotAnswer, RealToxicityPrompts, Snowball, LMRC
  • Attacchi agenti: Manipolazione multi-agente, Exploit di navigazione
  • Test di sicurezza: Bypass di guardrail, Scansione AV/spam, Exploitation (SQLi, esecuzione di codice), BadChars

Avviso: La sonda lmrc utilizza linguaggio profano e offensivo come parte del test di jailbreak. Utilizzare solo in ambienti di test autorizzati.

Avvio Rapido

Installazione

Richiede Go 1.25.3 o successivo.```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest

Oppure compila dal sorgente:```bash
git clone https://github.com/praetorian-inc/augustus.git
cd augustus
make build

Utilizzo di base```bash

export OPENAI_API_KEY="your-api-key" augustus scan openai.OpenAI
--probe dan.Dan_11_0
--detector dan.DAN
--verbose

### Esempio di output```
+--------------+-------------+--------+-------+--------+
| 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   |
+--------------+-------------+--------+-------+--------+

Elenca le capacità disponibili```bash

List all registered probes, detectors, generators, harnesses, and buffs

augustus list

## Provider Supportati

Augustus include 28 categorie di provider LLM con 43 varianti di generatori:

| Provider           | Nomi Generatore         | Note                          |
|--------------------|---------------------------|--------------------------------|
| OpenAI             | `openai.OpenAI`, `openai.OpenAIReasoning` | Modelli GPT-3.5, GPT-4, GPT-4 Turbo, o1/o3 di ragionamento |
| Anthropic          | `anthropic.Anthropic`     | Claude 3/3.5/4 (Opus, Sonnet, Haiku) |
| Azure OpenAI       | `azure.AzureOpenAI`       | Modelli OpenAI ospitati su Azure     |
| AWS Bedrock        | `bedrock.Bedrock`         | Modelli Claude, Llama, Titan    |
| Google Vertex AI   | `vertex.Vertex`           | Modelli PaLM, Gemini            |
| Cohere             | `cohere.Cohere`           | Modelli Command, Command R      |
| Replicate          | `replicate.Replicate`     | Modelli open ospitati su cloud       |
| HuggingFace        | `huggingface.InferenceAPI`, `huggingface.InferenceEndpoint`, `huggingface.Pipeline`, `huggingface.LLaVA` | API HF Inference, endpoint, pipeline, multimodale |
| Together AI        | `together.Together`       | Inferenza veloce per modelli OSS  |
| Anyscale           | `anyscale.Anyscale`       | Hosting di Llama e Mistral      |
| Groq               | `groq.Groq`               | Inferenza LPU ultra-veloce       |
| Mistral            | `mistral.Mistral`         | Modelli API Mistral             |
| Fireworks          | `fireworks.Fireworks`     | Piattaforma di inferenza di produzione  |
| DeepInfra          | `deepinfra.DeepInfra`     | Inferenza GPU serverless       |
| NVIDIA NIM         | `nim.NIM`, `nim.NVOpenAICompletion`, `nim.NVMultimodal`, `nim.Vision` | Endpoint AI NVIDIA, multimodale |
| NVIDIA NeMo        | `nemo.NeMo`               | Framework NVIDIA NeMo          |
| NVIDIA NVCF        | `nvcf.NvcfChat`, `nvcf.NvcfCompletion` | Funzioni Cloud NVIDIA   |
| NeMo Guardrails    | `guardrails.NeMoGuardrails` | NeMo Guardrails NVIDIA       |
| IBM watsonx        | `watsonx.WatsonX`         | Piattaforma IBM watsonx.ai        |
| LangChain          | `langchain.LangChain`     | Wrapper LLM di LangChain          |
| LangChain Serve    | `langchain_serve.LangChainServe` | Endpoint LangChain Serve |
| Rasa               | `rasa.RasaRest`           | AI conversazionale di Rasa         |
| GGML               | `ggml.Ggml`               | Inferenza locale di modelli GGML     |
| Function           | `function.Single`, `function.Multiple` | Generatori di funzioni personalizzati |
| Ollama             | `ollama.Ollama`, `ollama.OllamaChat` | Hosting locale di modelli    |
| LiteLLM            | `litellm.LiteLLM`         | Proxy API unificato              |
| REST API           | `rest.Rest`               | Endpoint REST personalizzati (supporto SSE) |
| Test               | `test.Blank`, `test.Repeat`, `test.Lipsum`, `test.Nones`, `test.Single`, `test.BlankVision` | Test e sviluppo |

Tutti i provider sono disponibili nel binario compilato. Configura tramite variabili d'ambiente o file di configurazione YAML. Vedi [Configurazione](#configuration) per i dettagli di configurazione.

## Utilizzo

### Sonda Singola```bash
# Test for DAN jailbreak
augustus scan openai.OpenAI \
  --probe dan.Dan_11_0 \
  --detector dan.DAN \
  --config-file config.yaml \
  --verbose

Sonde Multiple```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

Applica trasformazioni di prompt per testare tecniche di evasione:```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

Formati di output```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

### Endpoint REST personalizzati```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"
  }'

Chiavi di configurazione REST:

  • uri: Endpoint API di destinazione (obbligatorio)
  • method: Metodo HTTP (predefinito: POST)
  • headers: Intestazioni HTTP come coppie chiave-valore
  • req_template: Corpo della richiesta grezzo con segnaposto $INPUT
  • req_template_json_object: Corpo della richiesta JSON (auto-serializzato, usa $INPUT nelle stringhe)
  • response_json: Analizza la risposta come JSON (predefinito: false)
  • response_json_field: Percorso JSONPath da estrarre (es. $.data.text o nome di campo semplice)
  • api_key: Chiave API per la sostituzione del segnaposto $KEY
  • proxy: URL del proxy HTTP per l'ispezione del traffico

Opzioni Avanzate```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"}'

## Come funziona

Augustus utilizza un'architettura a pipeline per testare gli LLM contro attacchi avversari:```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 di scansione

  1. Selezione delle probe: Scegli le probe per nome, pattern glob o --all
  2. Trasformazione Buff: Trasforma facoltativamente i prompt (codifica, parafrasi, traduzione, poeticizzazione)
  3. Chiamata del generatore: Invia prompt avversari all'LLM target tramite la sua integrazione provider
  4. Analisi del rilevatore: Analizza le risposte utilizzando pattern matching, LLM-as-a-judge o rilevatori specializzati
  5. Registrazione dei risultati: Assegna un punteggio a ogni tentativo e produce output nel formato richiesto
  6. Motore di attacco: Per le probe iterative (PAIR, TAP), il motore di attacco a turno singolo perfeziona i prompt attraverso le iterazioni con pruning dei candidati e scoring basato sul giudice
  7. Motore multi-turno: Per le probe conversazionali (Crescendo, GOAT), il motore multi-turno mantiene la cronologia completa della conversazione con il target attraverso i turni, con rilevamento del rifiuto e adattamento dinamico

Strategie di attacco multi-turno

Gli attacchi multi-turno mantengono una conversazione persistente con l'LLM target, sfruttando il fatto che i modelli possono rivelare informazioni incrementalmente attraverso i turni che rifiuterebbero in un singolo prompt. Il motore multi-turno utilizza tre LLM: un attaccante (genera domande), un target (il sistema sotto test), e un giudice (valuta i progressi e rileva i rifiuti).

Crescendo

Crescendo utilizza un'escalation graduale (tecnica del piede nella porta) per spostare lentamente una conversazione da argomenti benigni verso un obiettivo proibito.

  • Articolo: Russinovich et al., 2024
  • Approccio: Inizia con domande genuinamente benigne ed educative e aumenta incrementalmente la specificità nel corso di molti turni
  • Schema di escalation: Contesto storico → meccanismi tecnici → dettagli specifici → richieste dirette formulate come follow-up naturali
  • Punto di forza: Efficace contro modelli che tracciano il tono della conversazione — lo spostamento graduale evita di attivare i filtri di sicurezza```bash augustus scan rest.Rest
    --probe crescendo.Crescendo
    --config-file crescendo.yaml
    --html report.html -v
#### GOAT (Generative Offensive Agent Tester)

GOAT utilizza un approccio aggressivo e adattivo con 7 tecniche avversariali e un ragionamento Chain-of-Attack-Thought per cambiare dinamicamente strategia in base a ciò che funziona o fallisce.

- **Paper**: [Pavlova et al., 2024](https://arxiv.org/abs/2410.01606)
- **Approccio**: Punta all'obiettivo fin dal turno 1 usando un framing indiretto, senza mai menzionare l'obiettivo direttamente al bersaglio
- **7 tecniche** in 3 categorie:
  - *Manipolazione dell'Output*: Soppressione del Rifiuto, Priming della Risposta
  - *Distrattori di Risposta Sicura*: Doppia Risposta, Divisione dell'Argomento, Intento Opposto
  - *Scenari Fittizi*: Modifica della Persona, Ipotetico
- **Chain-of-Attack-Thought**: Ogni turno l'attaccante ragiona attraverso Osservazione → Pensiero → Strategia → Risposta prima di formulare il suo messaggio
- **Combinazione di tecniche**: Più tecniche possono essere combinate in un singolo turno per un effetto più forte
- **Punto di forza**: Raggiunge tassi di successo elevati in meno turni (tipicamente 3-5) passando aggressivamente tra approcci fondamentalmente diversi```bash
augustus scan rest.Rest \
  --probe goat.Goat \
  --config-file goat.yaml \
  --html report.html -v

Hydra

Hydra mantiene un unico percorso di conversazione e annulla interi turni quando il target rifiuta, chiedendo all'attaccante un approccio completamente diverso. A differenza di Crescendo/GOAT (che riformulano al rifiuto), il backtracking di Hydra rimuove completamente i turni rifiutati dalla visuale del target.

  • Approccio: Percorso singolo con backtracking a livello di turno — i turni rifiutati vengono cancellati e sostituiti
  • Tecniche: Scomposizione (suddividere l'obiettivo in sotto-domande innocue), sfruttamento del contesto (basarsi sulle parole del target), simulazione di autorità, inquadramento emotivo, normalizzazione progressiva
  • Caratteristica chiave: max_backtracks controlla quante volte Hydra può cancellare e riprovare un turno
  • Modalità stateful: Imposta stateful: true per target in cui i messaggi non possono essere annullati (disabilita il backtracking)
  • Punto di forza: Mantiene pulita la cronologia della conversazione del target — il target non vede mai i tentativi falliti, prevenendo l'escalation difensiva```bash augustus scan rest.Rest
    --probe hydra.Hydra
    --config-file hydra.yaml
    --html report.html -v
#### Utente Malizioso

L'Utente Malizioso simula una persona innocente e curiosa che sonda sottilmente i confini dell'IA attraverso una conversazione naturale. A differenza delle strategie avversariali, la persona dell'attaccante è un utente occasionale che si sposta verso argomenti proibiti attraverso un coinvolgimento apparentemente innocente.

- **Ispirato da**: [Tau-bench](https://github.com/sierra-research/tau-bench) e dalla strategia mischievous-user di promptfoo
- **Approccio**: Fase di costruzione del rapporto → sondaggio dei confini → spinta assertiva
- **7 tecniche**: Curiosità ingenua, fraintendimento deliberato, prova sociale, deriva graduale, appello emotivo, permesso presunto, ricontestualizzazione
- **Playbook specifici per obiettivi**: Script integrati per estrarre istruzioni di sistema, trovare segreti/flag e bypassare la politica dei contenuti
- **Turni predefiniti**: 5 (meno di altre strategie — l'approccio sottile funziona rapidamente o per niente)
- **Punto di forza**: Efficace contro modelli addestrati a resistere a pattern avversariali ovvi — la persona occasionale bypassa le euristiche di 'rilevamento degli attacchi'```bash
augustus scan rest.Rest \
  --probe mischievous.MischievousUser \
  --config-file mischievous.yaml \
  --html report.html -v

Guida alla Selezione della Strategia

StrategiaTurniStileIdeale perCosto
crescendo.Crescendo10Escalation gradualeModelli con filtri di sicurezza che tracciano il tonoMedio (10 turni × 3 chiamate LLM)
goat.Goat10Cambio aggressivo di tecnicaRisultati rapidi, modelli vulnerabili ai trucchi di framingMedio-Alto (overhead di ragionamento della tecnica)
hydra.Hydra10Backtracking sul rifiutoModelli ostinati che rifiutano frequentementeAlto (il backtracking aggiunge tentativi)
mischievous.MischievousUser5Sondaggio informale della personalitàModelli addestrati contro schemi avversariBasso (5 turni, approccio sottile)

Decisione rapida:

  • Inizia con Crescendo — è la strategia più versatile
  • Prova GOAT se Crescendo è troppo lento (GOAT generalmente ha successo in 3-5 turni)
  • Usa Hydra se il target rifiuta frequentemente (il backtracking mantiene la conversazione pulita)
  • Usa Mischievous per target con forte rilevamento di schemi avversari (la personalità bypassa le euristiche)

Configurazione Multi-Turn

Tutte e quattro le strategie condividono la stessa struttura di configurazione:```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

| Setting | Default | Descrizione |
|---------|---------|-------------|
| `goal` | (obbligatorio) | L'obiettivo che l'attaccante cerca di raggiungere |
| `max_turns` | 10 | Numero massimo di turni di conversazione prima dell'arresto |
| `success_threshold` | 0.8 | Punteggio del giudice (0.0-1.0) che attiva l'uscita anticipata |
| `max_refusal_retries` | 10 | Tentativi di riformulazione per turno quando il bersaglio rifiuta |
| `attack_max_attempts` | 5 | Riprova per errori di parsing JSON dell'LLM attaccante |
| `use_secondary_judge` | true | Abilita giudice secondario per cogliere falsi negativi |
| `max_backtracks` | 10 | Rollback a livello di turno in caso di rifiuto (solo Hydra) |
| `enable_fast_refusal` | true | Rilevamento del rifiuto basato su pattern prima della chiamata al giudice LLM |
| `enable_scan_memory` | false | Apprendimento cross-test-case (condivide tattiche tra probe) |
| `stateful` | false | Disabilita il backtracking per bersagli stateful |
| `exclude_target_output` | false | Nascondi le risposte del bersaglio dal feedback dell'attaccante (modalità privacy) |
| `attacker_model` | (auto) | Sostituisci il nome del modello attaccante per il dimensionamento della finestra di contesto |

#### Risoluzione dei problemi Multi-Turn

| Sintomo | Causa probabile | Soluzione |
|---------|-----------------|-----------|
| `no turns completed (attacker_parse_failures=N)` | LLM attaccante restituisce JSON non valido | Usa un modello attaccante più potente (GPT-4, Claude Opus). Aumenta `attack_max_attempts`. |
| `no turns completed (target_empty=N)` | Il bersaglio restituisce risposte vuote/nulle | Controlla che l'endpoint del bersaglio risponda. Verifica il template di configurazione REST. |
| All turns score 0.0 | Obiettivo troppo vago o attaccante non coinvolto | Rendi `goal` più specifico. Prova una strategia diversa. |
| High scores but no success | `success_threshold` troppo alto | Abbassa `success_threshold` da 0.8 a 0.6-0.7 |
| Runs too long / expensive | Troppi turni e riprove | Riduci `max_turns` (prova 5). Imposta `enable_fast_refusal: true`. |
| Hydra keeps backtracking | Il bersaglio rifiuta tutto | Prova `stateful: true` o passa alla strategia Mischievous |

## Architecture```
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

Decisioni Chiave di Progetto

  • Scansione concorrente con pool di goroutine limitati tramite errgroup
  • Registrazione in stile plugin utilizzando funzioni Go init() per probe, generatori, rilevatori, buff e harness
  • Motore di attacco iterativo con gestione delle conversazioni multi-stream, pruning dei candidati e punteggio basato su giudice per PAIR/TAP
  • Motore di attacco multi-turno con cronologia delle conversazioni persistente, rilevamento dei rifiuti, design agnostico rispetto alla strategia per Crescendo/GOAT
  • Template YAML per probe (stile Nuclei) per definizioni dichiarative di probe insieme a probe basati su Go
  • Prefiltraggio Aho-Corasick per il rapido matching di parole chiave nei rilevatori

Configurazione

File di Configurazione YAML

Crea un file 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"

### Variabili d'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

Configurazione Proxy

Instradare il traffico HTTP attraverso un proxy (es. Burp Suite) per l'ispezione:```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 TLS automaticamente disabilitata per l'ispezione proxy
- Supporto HTTP/2 abilitato per API moderne
- Risposte Server-Sent Events (SSE) automaticamente rilevate e analizzate

### Riferimenti 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

Comandi:```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)

**Codici di uscita:**

| Codice | Significato |
|--------|-------------|
| 0 | Successo - scansione completata |
| 1 | Errore di scansione/esecuzione |
| 2 | Errore di validazione/utilizzo |

## FAQ

### Come si confronta Augustus con garak?

Augustus è una reimplementazione nativa in Go ispirata da [garak](https://github.com/NVIDIA/garak) (lo scanner di vulnerabilità LLM basato su Python di NVIDIA). Differenze principali:
- **Prestazioni**: Binario Go vs interprete Python — esecuzione più veloce e minor consumo di memoria
- **Distribuzione**: Singolo binario senza dipendenze runtime vs pacchetto Python con installazione tramite pip
- **Concorrenza**: Pool di goroutine Go (parallelismo cross-probe) vs pool di multiprocessing Python (parallelismo intra-probe)
- **Copertura dei probe**: Augustus ha 210+ probe; garak ha 160+ probe con un pedigree di ricerca più lungo e un articolo pubblicato (arXiv:2406.11036)
- **Copertura dei provider**: Augustus ha 28 provider; garak ha 35+ varianti di generatori su 22 moduli provider

### Posso testare modelli locali senza chiavi API?

Sì! Usa l'integrazione Ollama per il test di modelli locali:```bash
# No API key needed
augustus scan ollama.OllamaChat \
  --probe dan.Dan_11_0 \
  --config '{"model":"llama3.2:3b"}'

Come aggiungo sonde personalizzate?

  1. Crea un nuovo file Go in internal/probes/
  2. Implementa l'interfaccia probes.Probe
  3. Registra usando registry.RegisterProbe() in una funzione init()
  4. Ricostruisci: make build

Vedi CONTRIBUTING.md per istruzioni dettagliate.

Quali formati di output sono supportati?

Augustus supporta quattro formati di output:

FormatoFlagCaso d'uso
Tabella--format tableOutput terminale leggibile
JSON--format jsonOggetto JSON singolo per parsing
JSONL--format jsonlJSON delimitato da righe per streaming
HTML--html report.htmlReport visivi per le parti interessate

Come testare più modelli contemporaneamente?```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

### Augustus è adatto per ambienti di produzione?

Sì, Augustus è progettato per l'uso in produzione con:
- Scansione concorrente con limiti configurabili
- Limitazione della velocità per rispettare le quote API
- Gestione dei timeout per probe a lunga esecuzione
- Logica di retry per errori transitori
- Log strutturato per l'osservabilità

## Risoluzione dei problemi

### Errore: "Limite di velocità API superato"

**Causa**: Troppe richieste concorrenti o richieste al minuto.

**Soluzioni**:
1. Riduci la concorrenza: `--concurrency 5`
2. Utilizza le impostazioni del limite di velocità specifiche del provider nella configurazione YAML:   ```yaml
   generators:
     openai.OpenAI:
       rate_limit: 10  # requests per minute

Error: "context deadline exceeded" or "timeout"

Cause: Sonde complesse (come TAP o PAIR) superano il timeout predefinito.

Solution:```bash augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml

### Errore: "chiave API non valida" o "autenticazione fallita"

**Causa**: Credenziali API mancanti o non valide.

**Soluzioni**:
1. Verificare che la variabile d'ambiente sia impostata: `echo $OPENAI_API_KEY`
2. Controllare la presenza di errori di battitura nel file di configurazione
3. Assicurarsi che la chiave API abbia i permessi necessari
4. Per Ollama, assicurarsi che il servizio sia in esecuzione: `ollama serve`

### Errore: "sonda non trovata" o "rilevatore non trovato"

**Causa**: Errore di battitura nel nome o sonda non registrata.

**Soluzione**:```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

La scansione non produce risultati

Causa: Il rilevatore non ha corrisposto a nessuna risposta, oppure l'output non è stato scritto.

Soluzioni:

  1. Eseguire con --verbose per vedere l'output dettagliato
  2. Verificare che il rilevatore corrisponda al tipo di sonda
  3. Controllare che il percorso del file di output sia scrivibile

Contribuire

Accogliamo con favore i contributi! Vedi CONTRIBUTING.md per:

  • Aggiungere nuove sonde di vulnerabilità
  • Creare nuove implementazioni di rilevatori
  • Aggiungere integrazioni con provider LLM
  • Linee guida per i test
  • Requisiti di stile del codice

Sviluppo```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 di Benchmark (DevPod)

Un ambiente di sviluppo cloud pronto all'uso per il benchmarking degli LLM è disponibile tramite [DevPod](https://devpod.sh/). Fornisce un container remoto con Augustus, Ollama, Go e tutte le dipendenze preinstallate.```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 il 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

L'ambiente funziona anche come un [dev container](https://containers.dev/) standard — apri il repository in VS Code o Cursor e seleziona la configurazione CPU o GPU da `.devcontainer/`.

## Sicurezza

Augustus è progettato **esclusivamente per test di sicurezza autorizzati**.

- Augustus invia prompt avversari agli LLM che specifici — assicurati sempre di avere l'autorizzazione
- Non testare mai sistemi che non possiedi o per i quali non hai esplicito permesso
- Alcune probe generano contenuti offensivi per progettazione (per testare i filtri di sicurezza)
- I risultati possono contenere contenuti dannosi prodotti dagli LLM di destinazione

Segnala problemi di sicurezza tramite [GitHub Issues](https://github.com/praetorian-inc/augustus/issues).

## Supporto

Se trovi Augustus utile, considera:

- Assegnare una **stella** su GitHub
- [Aprire una issue](https://github.com/praetorian-inc/augustus/issues) per bug o richieste di funzionalità
- [Contribuire](https://github.com/praetorian-inc/augustus/blob/HEAD/CONTRIBUTING.md) con nuove probe, rilevatori o integrazioni di provider

[![Star History Chart](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](https://star-history.com/#praetorian-inc/augustus&Date)

## Licenza

[Apache 2.0](https://github.com/praetorian-inc/augustus/blob/HEAD/LICENSE) — Praetorian Security, Inc.

---

**Realizzato da [Praetorian](https://www.praetorian.com/)** — Soluzioni di Sicurezza Offensiva

Categorie