
augustus v0.14.20
LLM-Sicherheitstestframework zur Erkennung von Prompt-Injection, Jailbreaks und adversarialen Angriffen — 190+ Sonden, 28 Anbieter, einzelne Go-Binärdatei
Augustus – LLM-Schwachstellenscanner für Prompt-Injection, Jailbreak und adversariales Angriffstesting
Augustus – LLM-Schwachstellenscanner
Testen Sie große Sprachmodelle gegen über 210 adversarial Angriffe, die Prompt-Injection, Jailbreaks, Kodierungsexploits und Datenextraktion abdecken.
Augustus ist ein in Go geschriebener LLM-Schwachstellenscanner für Sicherheitsexperten. Es testet große Sprachmodelle gegen eine breite Palette adversarialer Angriffe, integriert 28 LLM-Anbieter und erstellt umsetzbare Schwachstellenberichte.
Anders als forschungsorientierte Werkzeuge ist Augustus für den produktiven Sicherheitstest gebaut – gleichzeitiges Scannen, Ratenbegrenzung, Wiederholungslogik und Timeout-Behandlung sind von Haus aus enthalten.
Inhaltsverzeichnis
- Warum Augustus
- Funktionen
- Schnellstart
- Unterstützte Anbieter
- Verwendung
- Funktionsweise
- Architektur
- Konfiguration
- FAQ
- Fehlerbehebung
- Mitwirken
- Sicherheit
- Support
- Lizenz
Warum Augustus
| Funktion | Augustus | garak | promptfoo |
|---|---|---|---|
| Sprache | Go | Python | TypeScript |
| Einzelne Binärdatei | Ja | Nein | Nein |
| Gleichzeitiges Scannen | Goroutine-Pools | Multiprocessing-Pools | Ja |
| LLM-Anbieter | 28 | 35+ | 80+ |
| Sondentypen | 210+ | 160+ | 119 Plugins + 36 Strategien |
| Unternehmensfokus | Ja | Forschung | Ja |
Funktionen
| Funktion | Beschreibung |
|---|---|
| 210+ Schwachstellensonden | 47 Angriffskategorien: Jailbreaks, Prompt-Injection, adversarial Beispiele, Datenextraktion, Sicherheitsbenchmarks, Agentenangriffe und mehr |
| 28 LLM-Anbieter | OpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama und 22 weitere mit 43 Generatorvarianten |
| 90+ Detektoren | Mustererkennung, LLM-as-a-Judge, HarmJudge (arXiv:2511.15304), Perspective API, Erkennung unsicherer Inhalte |
| 7 Buff-Transformationen | Kodierung, Paraphrasieren, Poesie (5 Formate, 3 Strategien), Übersetzung in ressourcenarme Sprachen, Falltransformationen |
| Flexible Ausgabe | Tabellen-, JSON-, JSONL- und HTML-Berichtsformate |
| Produktionsbereit | Gleichzeitiges Scannen, Ratenbegrenzung, Wiederholungslogik, Timeout-Behandlung |
| Einzelne Binärdatei | In Go basiertes Werkzeug, kompiliert zu einer tragbaren ausführbaren Datei |
| Erweiterbar | Plug-in-artige Registrierung über Go init()-Funktionen |
Angriffskategorien
- Jailbreak-Angriffe: DAN, DAN 11.0, AIM, AntiGPT, Grandma, ArtPrompts
- Prompt-Injection: Kodierung (Base64, ROT13, Morse), Tag-Schmuggel, FlipAttack, Präfix-/Suffix-Injection
- Adversariale Beispiele: GCG, PAIR, AutoDAN, TAP (Tree of Attack Prompts), TreeSearch, DRA
- Multi-Turn-Angriffe: Crescendo (graduelle Eskalation), GOAT (adaptive Technikumschaltung)
- Datenextraktion: API-Schlüsselleckage, Paket-Halluzination, PII-Extraktion, LeakReplay
- Kontextmanipulation: RAG-Vergiftung, Kontextüberlauf, multimodale Angriffe, Fortsetzung, Abweichung
- Format-Exploits: Markdown-Injection, YAML/JSON-Parsing-Angriffe, ANSI-Escape, Web-Injection (XSS)
- Umgehungstechniken: Verschleierung, Zeichenersetzung, übersetzungsbasierte Angriffe, Umformulierungen, ObscurePrompt
- Sicherheitsbenchmarks: DoNotAnswer, RealToxicityPrompts, Snowball, LMRC
- Agentenangriffe: Multi-Agenten-Manipulation, Browsing-Exploits
- Sicherheitstests: Guardrail-Umgehung, AV/Spam-Scanning, Exploitation (SQLi, Code-Ausführung), BadChars
Warnung: Die
lmrc-Sonde verwendet anstößige und beleidigende Sprache im Rahmen ihrer Jailbreak-Tests. Nur in autorisierten Testumgebungen verwenden.
Schnellstart
Installation
Erfordert Go 1.25.3 oder höher.```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest
Oder aus dem Quellcode erstellen:```bash
git clone https://github.com/praetorian-inc/augustus.git
cd augustus
make build
Grundlegende Verwendung```bash
export OPENAI_API_KEY="your-api-key"
augustus scan openai.OpenAI
--probe dan.Dan_11_0
--detector dan.DAN
--verbose
### Beispiel Ausgabe```
+--------------+-------------+--------+-------+--------+
| 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 |
+--------------+-------------+--------+-------+--------+
Verfügbare Funktionen auflisten```bash
List all registered probes, detectors, generators, harnesses, and buffs
augustus list
## Unterstützte Anbieter
Augustus umfasst 28 LLM-Anbieterkategorien mit 43 Generatorvarianten:
| Anbieter | Generator-Name(n) | Anmerkungen |
|--------------------|---------------------------|--------------------------------------|
| OpenAI | `openai.OpenAI`, `openai.OpenAIReasoning` | GPT-3.5, GPT-4, GPT-4 Turbo, o1/o3 Reasoning-Modelle |
| Anthropic | `anthropic.Anthropic` | Claude 3/3.5/4 (Opus, Sonnet, Haiku) |
| Azure OpenAI | `azure.AzureOpenAI` | Azure-gehostete OpenAI-Modelle |
| AWS Bedrock | `bedrock.Bedrock` | Claude, Llama, Titan-Modelle |
| Google Vertex AI | `vertex.Vertex` | PaLM, Gemini-Modelle |
| Cohere | `cohere.Cohere` | Command, Command R-Modelle |
| Replicate | `replicate.Replicate` | Cloud-gehostete offene Modelle |
| HuggingFace | `huggingface.InferenceAPI`, `huggingface.InferenceEndpoint`, `huggingface.Pipeline`, `huggingface.LLaVA` | HF Inference API, Endpoints, Pipelines, multimodal |
| Together AI | `together.Together` | Schnelle Inferenz für OSS-Modelle |
| Anyscale | `anyscale.Anyscale` | Llama- und Mistral-Hosting |
| Groq | `groq.Groq` | Ultra-schnelle LPU-Inferenz |
| Mistral | `mistral.Mistral` | Mistral-API-Modelle |
| Fireworks | `fireworks.Fireworks` | Produktions-Inferenz-Plattform |
| DeepInfra | `deepinfra.DeepInfra` | Serverlose GPU-Inferenz |
| NVIDIA NIM | `nim.NIM`, `nim.NVOpenAICompletion`, `nim.NVMultimodal`, `nim.Vision` | NVIDIA KI-Endpunkte, multimodal |
| NVIDIA NeMo | `nemo.NeMo` | NVIDIA NeMo-Framework |
| NVIDIA NVCF | `nvcf.NvcfChat`, `nvcf.NvcfCompletion` | NVIDIA Cloud-Funktionen |
| NeMo Guardrails | `guardrails.NeMoGuardrails` | NVIDIA NeMo Guardrails |
| IBM watsonx | `watsonx.WatsonX` | IBM watsonx.ai-Plattform |
| LangChain | `langchain.LangChain` | LangChain LLM-Wrapper |
| LangChain Serve | `langchain_serve.LangChainServe` | LangChain Serve-Endpunkte |
| Rasa | `rasa.RasaRest` | Rasa Conversational AI |
| GGML | `ggml.Ggml` | GGML lokale Modell-Inferenz |
| Function | `function.Single`, `function.Multiple` | Benutzerdefinierte Funktionsgeneratoren |
| Ollama | `ollama.Ollama`, `ollama.OllamaChat` | Lokales Modell-Hosting |
| LiteLLM | `litellm.LiteLLM` | Einheitlicher API-Proxy |
| REST API | `rest.Rest` | Benutzerdefinierte REST-Endpunkte (SSE-Unterstützung) |
| Test | `test.Blank`, `test.Repeat`, `test.Lipsum`, `test.Nones`, `test.Single`, `test.BlankVision` | Testen und Entwicklung |
Alle Anbieter sind in der kompilierten Binärdatei verfügbar. Konfigurieren Sie über Umgebungsvariablen oder YAML-Konfigurationsdateien. Siehe [Konfiguration](#configuration) für Einrichtungsdetails.
## Nutzung
### Einzelne Sonde```bash
# Test for DAN jailbreak
augustus scan openai.OpenAI \
--probe dan.Dan_11_0 \
--detector dan.DAN \
--config-file config.yaml \
--verbose
Mehrere Sonden```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
Wenden Sie Prompt-Transformationen an, um Umgehungstechniken zu testen:```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
Ausgabeformate```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
### Benutzerdefinierte REST-Endpunkte```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"
}'
REST-Konfigurationsschlüssel:
uri: Ziel-API-Endpunkt (erforderlich)method: HTTP-Methode (Standard: POST)headers: HTTP-Header als Schlüssel-Wert-Paarereq_template: Roher Anforderungstext mit Platzhalter$INPUTreq_template_json_object: JSON-Anforderungstext (automatisch umgewandelt, verwenden Sie$INPUTin Zeichenketten)response_json: Antwort als JSON parsen (Standard: false)response_json_field: Zu extrahierender JSONPath (z.B.$.data.textoder einfacher Feldname)api_key: API-Schlüssel für die$KEY-Platzhalterersetzungproxy: HTTP-Proxy-URL zur Verkehrsüberwachung
Erweiterte Optionen```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"}'
## Funktionsweise
Augustus verwendet eine Pipeline-Architektur, um LLMs gegen adversarial Angriffe zu testen:```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
Scan Pipeline
- Probenauswahl: Proben nach Namen, Glob-Muster oder
--allauswählen - Buff-Transformation: Optional Prompts transformieren (kodieren, paraphrasieren, übersetzen, poetisieren)
- Generator-Aufruf: Adversarial-Prompts an das Ziel-LLM über seine Provider-Integration senden
- Detektor-Analyse: Antworten mittels Mustervergleich, LLM-as-a-Judge oder spezialisierter Detektoren analysieren
- Ergebnisaufzeichnung: Jeden Versuch bewerten und Ausgabe im angeforderten Format erzeugen
- Angriffs-Engine: Für iterative Proben (PAIR, TAP) verfeinert die Single-Turn-Angriffs-Engine Prompts über Iterationen hinweg mit Kandidatenbereinigung und Judge-basierter Bewertung
- Multi-Turn-Engine: Für konversationelle Proben (Crescendo, GOAT) verwaltet die Multi-Turn-Engine den vollständigen Gesprächsverlauf mit dem Ziel über mehrere Runden hinweg, mit Verweigerungserkennung und dynamischer Anpassung
Multi-Turn-Angriffsstrategien
Multi-Turn-Angriffe führen eine anhaltende Konversation mit dem Ziel-LLM, und nutzen aus, dass Modelle Informationen schrittweise über mehrere Runden hinweg preisgeben können, die sie bei einem einzelnen Prompt verweigern würden. Die Multi-Turn-Engine verwendet drei LLMs: einen Angreifer (generiert Fragen), ein Ziel (das zu testende System) und einen Richter (bewertet Fortschritt und erkennt Verweigerungen).
Crescendo
Crescendo nutzt die allmähliche Eskalation (Foot-in-the-Door-Technik), um ein Gespräch langsam von harmlosen Themen zu einem verbotenen Ziel zu verschieben.
- Paper: Russinovich et al., 2024
- Ansatz: Beginnt mit wirklich harmlosen, pädagogischen Fragen und steigert schrittweise die Spezifität über viele Runden hinweg
- Eskalationsmuster: Historischer Kontext → technische Mechanismen → spezifische Details → direkte Anfragen, die als natürliche Nachfragen formuliert sind
- Stärke: Wirksam gegen Modelle, die den Gesprächston verfolgen – die allmähliche Verschiebung vermeidet das Auslösen von Sicherheitsfiltern```bash
augustus scan rest.Rest
--probe crescendo.Crescendo
--config-file crescendo.yaml
--html report.html -v
#### GOAT (Generative Offensive Agent Tester)
GOAT verwendet einen aggressiven, adaptiven Ansatz mit 7 adversarialen Techniken und Chain-of-Attack-Thought-Reasoning, um dynamisch zwischen Strategien zu wechseln, basierend darauf, was funktioniert oder fehlschlägt.
- **Paper**: [Pavlova et al., 2024](https://arxiv.org/abs/2410.01606)
- **Ansatz**: Verfolgt das Ziel ab Zug 1 mittels indirekter Rahmung, erwähnt das Ziel nie direkt gegenüber dem Ziel
- **7 Techniken** in 3 Kategorien:
- *Output Manipulation*: Refusal Suppression, Response Priming
- *Safe Response Distractors*: Dual Response, Topic Splitting, Opposite Intent
- *Fictional Scenarios*: Persona Modification, Hypothetical
- **Chain-of-Attack-Thought**: In jedem Zug denkt der Angreifer durch Observation → Thought → Strategy → Response, bevor er seine Nachricht formuliert
- **Technik-Stapelung**: Mehrere Techniken können in einem einzigen Zug kombiniert werden, um eine stärkere Wirkung zu erzielen
- **Stärke**: Erzielt hohe Erfolgsraten in weniger Zügen (typischerweise 3-5), indem es aggressiv zwischen grundlegend verschiedenen Ansätzen wechselt```bash
augustus scan rest.Rest \
--probe goat.Goat \
--config-file goat.yaml \
--html report.html -v
Hydra
Hydra unterhält einen einzigen Gesprächspfad und rollt ganze Runden zurück, wenn das Ziel ablehnt, und bittet den Angreifer um einen völlig anderen Ansatz. Im Gegensatz zu Crescendo/GOAT (die bei Ablehnung umformulieren), entfernt Hydras Zurücksetzen abgelehnte Runden vollständig aus der Sicht des Ziels.
- Ansatz: Einzelner Pfad mit Zurücksetzen auf Rundenebene — abgelehnte Runden werden gelöscht und ersetzt
- Techniken: Zerlegung (Ziel in harmlose Unterfragen aufteilen), Kontextnutzung (auf den eigenen Worten des Ziels aufbauen), Autoritätssimulation, emotionale Rahmung, progressive Normalisierung
- Hauptmerkmal:
max_backtrackssteuert, wie oft Hydra eine Runde löschen und wiederholen kann - Zustandsmodus: Setzen Sie
stateful: truefür Ziele, bei denen Nachrichten nicht rückgängig gemacht werden können (deaktiviert Zurücksetzen) - Stärke: Hält den Gesprächsverlauf des Ziels sauber — das Ziel sieht niemals fehlgeschlagene Ansätze, wodurch defensive Eskalation verhindert wird```bash
augustus scan rest.Rest
--probe hydra.Hydra
--config-file hydra.yaml
--html report.html -v
#### Schelmischer Benutzer
Der schelmische Benutzer simuliert eine harmlose, neugierige Person, die subtil die Grenzen der KI durch natürliche Konversation auslotet. Im Gegensatz zu adversarialen Strategien ist die Angreifer-Persona ein beiläufiger Benutzer, der durch scheinbar harmlose Interaktion in Richtung verbotener Themen abdriftet.
- **Inspiriert von**: [Tau-bench](https://github.com/sierra-research/tau-bench) und promptfoo's mischievous-user-Strategie
- **Ansatz**: Rapportaufbau-Phase → Grenzabtastung → durchsetzungsstarkes Vorstoßen
- **7 Techniken**: Naive Neugier, bewusstes Missverständnis, sozialer Beweis, allmähliches Abgleiten, emotionale Ansprache, angenommene Erlaubnis, Rekontextualisierung
- **Zielspezifische Handbücher**: Eingebaute Skripte zum Extrahieren von Systemanweisungen, Finden von Geheimnissen/Flags und Umgehen der Inhaltsrichtlinie
- **Standardanzahl Züge**: 5 (weniger als andere Strategien — der subtile Ansatz funktioniert entweder schnell oder gar nicht)
- **Stärke**: Wirksam gegen Modelle, die darauf trainiert sind, offensichtliche adversarialen Mustern zu widerstehen — die lässige Persona umgeht Heuristiken zur "Angriffserkennung"```bash
augustus scan rest.Rest \
--probe mischievous.MischievousUser \
--config-file mischievous.yaml \
--html report.html -v
Strategie-Auswahlhilfe
| Strategie | Züge | Stil | Beste für | Kosten |
|---|---|---|---|---|
crescendo.Crescendo | 10 | Schrittweise Eskalation | Modelle mit tonverfolgenden Sicherheitsfiltern | Mittel (10 Züge × 3 LLM-Aufrufe) |
goat.Goat | 10 | Aggressiver Technikwechsel | Schnelle Ergebnisse, Modelle anfällig für Framing-Tricks | Mittel-Hoch (Overhead durch Techniküberlegung) |
hydra.Hydra | 10 | Rückzieher bei Ablehnung | Hartnäckige Modelle, die häufig ablehnen | Hoch (Rückzieher erhöhen Wiederholungen) |
mischievous.MischievousUser | 5 | Lässige Persona-Erkundung | Modelle, die gegen adversarial Patterns trainiert sind | Niedrig (5 Züge, subtiler Ansatz) |
Schnellentscheidung:
- Beginnen Sie mit Crescendo — es ist die universellste Strategie
- Versuchen Sie GOAT, wenn Crescendo zu langsam ist (GOAT gelingt typischerweise in 3-5 Zügen)
- Verwenden Sie Hydra, wenn das Ziel häufig ablehnt (Rückzieher halten die Konversation sauber)
- Verwenden Sie Mischievous für Ziele mit starker Erkennung adversarialer Muster (die Persona umgeht Heuristiken)
Multi-Turn-Konfiguration
Alle vier Strategien haben die gleiche Konfigurationsstruktur:```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
| Einstellung | Standard | Beschreibung |
|---------|---------|-------------|
| `goal` | (required) | Das Ziel, das der Angreifer erreichen möchte |
| `max_turns` | 10 | Maximale Anzahl an Gesprächsrunden vor dem Stoppen |
| `success_threshold` | 0.8 | Bewertungswert (0.0-1.0), der einen vorzeitigen Ausstieg auslöst |
| `max_refusal_retries` | 10 | Umformulierungsversuche pro Runde, wenn das Ziel ablehnt |
| `attack_max_attempts` | 5 | Wiederholungsversuche bei JSON-Parsing-Fehlern des Angreifer-LLM |
| `use_secondary_judge` | true | Sekundären Bewerter aktivieren, um falsch negative Ergebnisse zu erkennen |
| `max_backtracks` | 10 | Rücksetzungen auf Rundenebene bei Ablehnung (nur Hydra) |
| `enable_fast_refusal` | true | Musterbasierte Erkennung von Ablehnungen vor dem Aufruf des LLM-Bewerters |
| `enable_scan_memory` | false | Lernübergreifend über Testfälle (teilt Taktiken zwischen Sonden) |
| `stateful` | false | Rücksetzungen für zustandsbehaftete Ziele deaktivieren |
| `exclude_target_output` | false | Zielantworten aus dem Feedback des Angreifers ausblenden (Datenschutzmodus) |
| `attacker_model` | (auto) | Modellnamen des Angreifers überschreiben für die Größenanpassung des Kontextfensters |
#### Fehlerbehebung bei mehreren Runden
| Symptom | Wahrscheinliche Ursache | Behebung |
|---------|-------------|-----|
| `no turns completed (attacker_parse_failures=N)` | Angreifer-LLM gibt ungültiges JSON zurück | Verwenden Sie ein stärkeres Angreifer-Modell (GPT-4, Claude Opus). Erhöhen Sie `attack_max_attempts`. |
| `no turns completed (target_empty=N)` | Ziel gibt leere/Null-Antworten zurück | Überprüfen Sie, ob der Ziel-Endpunkt antwortet. Überprüfen Sie die REST-Konfigurationsvorlage. |
| All turns score 0.0 | Ziel zu vage oder Angreifer nicht engagiert | Machen Sie das `goal` spezifischer. Versuchen Sie eine andere Strategie. |
| High scores but no success | `success_threshold` zu hoch | Senken Sie `success_threshold` von 0.8 auf 0.6-0.7 |
| Runs too long / expensive | Zu viele Runden und Wiederholungen | Reduzieren Sie `max_turns` (versuchen Sie 5). Setzen Sie `enable_fast_refusal: true`. |
| Hydra keeps backtracking | Ziel lehnt alles ab | Versuchen Sie `stateful: true` oder wechseln Sie zur Mischievous-Strategie |
## Architektur```
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
Wichtige Designentscheidungen
- Gleichzeitiges Scannen mit begrenzten Goroutine-Pools über
errgroup - Plugin-artige Registrierung unter Verwendung von Go
init()-Funktionen für Probes, Generators, Detectors, Buffs und Harnesses - Iterative Angriffs-Engine mit Multi-Stream-Konversationsmanagement, Kandidatenbereinigung und richterbasierter Bewertung für PAIR/TAP
- Multi-Turn-Angriffs-Engine mit persistentem Konversationsverlauf, Ablehnungserkennung und strategieagnostischem Design für Crescendo/GOAT
- YAML-Probe-Vorlagen (Nuclei-Stil) für deklarative Probendefinitionen neben Go-basierten Probes
- Aho-Corasick-Vorfilterung für schnelles Schlüsselwort-Matching in Detectors
Konfiguration
YAML-Konfigurationsdatei
Erstellen Sie eine config.yaml-Datei:```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"
### Umgebungsvariablen```bash
# API Keys
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export COHERE_API_KEY="..."
# Debug mode
export AUGUSTUS_DEBUG=true
Proxy-Konfiguration
Leiten Sie HTTP-Verkehr über einen Proxy (z. B. Burp Suite) zur Inspektion:```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"}'
- TLS-Verifizierung automatisch deaktiviert für Proxy-Inspektion
- HTTP/2-Unterstützung aktiviert für moderne APIs
- Server-Sent Events (SSE)-Antworten automatisch erkannt und geparst
### CLI-Referenz```
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
Befehle:```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)
**Exit-Codes:**
| Code | Bedeutung |
|------|---------|
| 0 | Erfolg - Scan abgeschlossen |
| 1 | Scan-/Laufzeitfehler |
| 2 | Validierungs-/Nutzungsfehler |
## FAQ
### Wie schneidet Augustus im Vergleich zu garak ab?
Augustus ist eine in Go native implementierte Neuauflage, inspiriert von [garak](https://github.com/NVIDIA/garak) (NVIDIAs Python-basiertem LLM-Schwachstellenscanner). Hauptunterschiede:
- **Leistung**: Go-Binärdatei vs. Python-Interpreter — schnellere Ausführung und geringerer Speicherverbrauch
- **Verteilung**: Einzelne Binärdatei ohne Laufzeitabhängigkeiten vs. Python-Paket mit pip-Installation
- **Nebenläufigkeit**: Go-Goroutine-Pools (Parallelität zwischen Probes) vs. Python-Multiprocessing-Pools (Parallelität innerhalb von Probes)
- **Probe-Abdeckung**: Augustus hat über 210 Probes; garak hat über 160 Probes mit einer längeren Forschungshistorie und veröffentlichtem Paper (arXiv:2406.11036)
- **Provider-Abdeckung**: Augustus hat 28 Provider; garak hat über 35 Generator-Varianten in 22 Provider-Modulen
### Kann ich lokale Modelle ohne API-Schlüssel testen?
Ja! Nutzen Sie die Ollama-Integration für lokale Modelltests:```bash
# No API key needed
augustus scan ollama.OllamaChat \
--probe dan.Dan_11_0 \
--config '{"model":"llama3.2:3b"}'
Wie füge ich benutzerdefinierte Probes hinzu?
- Erstelle eine neue Go-Datei in
internal/probes/ - Implementiere das
probes.Probe-Interface - Registriere mit
registry.RegisterProbe()in einerinit()-Funktion - Neu erstellen:
make build
Siehe CONTRIBUTING.md für detaillierte Anweisungen.
Welche Ausgabeformate werden unterstützt?
Augustus unterstützt vier Ausgabeformate:
| Format | Flag | Use Case |
|---|---|---|
| Table | --format table | Für Menschen lesbare Terminalausgabe |
| JSON | --format json | Einzelnes JSON-Objekt zum Parsen |
| JSONL | --format jsonl | Zeilengetrenntes JSON für Streaming |
| HTML | --html report.html | Visuelle Berichte für Stakeholder |
Wie teste ich mehrere Modelle auf einmal?```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
### Ist Augustus für Produktionsumgebungen geeignet?
Ja, Augustus ist für den Produktionseinsatz konzipiert mit:
- Gleichzeitiges Scannen mit konfigurierbaren Grenzen
- Ratenbegrenzung zur Einhaltung von API-Kontingenten
- Timeout-Behandlung für langlebige Sonden
- Wiederholungslogik für vorübergehende Fehler
- Strukturiertes Logging für Beobachtbarkeit
## Fehlerbehebung
### Fehler: "API rate limit exceeded"
**Ursache**: Zu viele gleichzeitige Anfragen oder Anfragen pro Minute.
**Lösungen**:
1. Nebenläufigkeit reduzieren: `--concurrency 5`
2. Anbieterspezifische Ratenbegrenzungseinstellungen in der YAML-Konfiguration verwenden: ```yaml
generators:
openai.OpenAI:
rate_limit: 10 # requests per minute
Fehler: "context deadline exceeded" oder "timeout"
Ursache: Komplexe Probes (wie TAP oder PAIR) überschreiten das Standard-Timeout.
Lösung:```bash
augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml
### Fehler: "ungültiger API-Schlüssel" oder "Authentifizierung fehlgeschlagen"
**Ursache**: Fehlende oder ungültige API-Anmeldedaten.
**Lösungen**:
1. Überprüfen Sie, ob die Umgebungsvariable gesetzt ist: `echo $OPENAI_API_KEY`
2. Überprüfen Sie die Konfigurationsdatei auf Tippfehler
3. Stellen Sie sicher, dass der API-Schlüssel die erforderlichen Berechtigungen hat
4. Für Ollama stellen Sie sicher, dass der Dienst läuft: `ollama serve`
### Fehler: "Sonde nicht gefunden" oder "Detektor nicht gefunden"
**Ursache**: Tippfehler im Namen oder Sonde nicht registriert.
**Lösung**:```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
Scan liefert keine Ergebnisse
Ursache: Detektor hat keine Antworten gefunden oder Ausgabe nicht geschrieben.
Lösungen:
- Mit
--verboseausführen, um detaillierte Ausgabe zu sehen - Überprüfen, ob Detektor zum Sondentyp passt
- Sicherstellen, dass der Ausgabedateipfad beschreibbar ist
Mitwirken
Wir freuen uns über Beiträge! Siehe CONTRIBUTING.md für:
- Hinzufügen neuer Schwachstellen-Sonden
- Erstellen neuer Detektor-Implementierungen
- Hinzufügen von LLM-Anbieter-Integrationen
- Testrichtlinien
- Code-Stil-Anforderungen
Entwicklung```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
### Benchmark-Umgebung (DevPod)
Eine einsatzbereite Cloud-Entwicklungsumgebung zum Benchmarking von LLMs ist über [DevPod](https://devpod.sh/) verfügbar. Es stellt einen Remote-Container mit Augustus, Ollama, Go und allen vorinstallierten Abhängigkeiten bereit.```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
Innerhalb des devpods:```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
Die Umgebung funktioniert auch als standardmäßiger [Dev-Container](https://containers.dev/) — öffnen Sie das Repo in VS Code oder Cursor und wählen Sie die CPU- oder GPU-Konfiguration aus `.devcontainer/`.
## Security
Augustus ist nur für **autorisierte Sicherheitstests** konzipiert.
- Augustus sendet gegnerische Eingabeaufforderungen an von Ihnen angegebene LLMs – stellen Sie stets sicher, dass Sie dazu autorisiert sind
- Testen Sie niemals Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis haben
- Einige Sonden erzeugen absichtlich anstößige Inhalte (zum Testen von Sicherheitsfiltern)
- Ergebnisse können schädliche Inhalte enthalten, die von Ziel-LLMs erzeugt wurden
Melden Sie Sicherheitsprobleme über [GitHub Issues](https://github.com/praetorian-inc/augustus/issues).
## Support
Wenn Sie Augustus nützlich finden, ziehen Sie bitte Folgendes in Betracht:
- Geben Sie ihm einen **Stern** auf GitHub
- [Eröffnen Sie ein Issue](https://github.com/praetorian-inc/augustus/issues) für Fehler oder Feature-Anfragen
- [Tragen Sie](https://github.com/praetorian-inc/augustus/blob/HEAD/CONTRIBUTING.md) neue Sonden, Detektoren oder Provider-Integrationen bei
[](https://star-history.com/#praetorian-inc/augustus&Date)
## License
[Apache 2.0](https://github.com/praetorian-inc/augustus/blob/HEAD/LICENSE) - Praetorian Security, Inc.
---
**Entwickelt von [Praetorian](https://www.praetorian.com/)** - Offensive Security Solutions