
augustus v0.14.24
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 Adversarial-Angriffstests
Augustus - LLM-Schwachstellenscanner
Testen Sie große Sprachmodelle gegen 210+ Adversarial-Angriffe, darunter Prompt Injection, Jailbreaks, Encoding-Exploits und Datenextraktion.
Augustus ist ein auf Go basierender LLM-Schwachstellenscanner für Sicherheitsexperten. Er testet große Sprachmodelle gegen eine breite Palette von Adversarial-Angriffen, integriert 28 LLM-Anbieter und erstellt umsetzbare Schwachstellenberichte.
Im Gegensatz zu forschungsorientierten Tools ist Augustus für produktive Sicherheitstests konzipiert – paralleles Scannen, Ratenbegrenzung, Wiederholungslogik und Timeout-Behandlung sind standardmäßig enthalten.
Inhaltsverzeichnis
- Warum Augustus
- Funktionen
- Schnellstart
- Unterstützte Anbieter
- Verwendung
- So funktioniert es
- Architektur
- Konfiguration
- FAQ
- Fehlerbehebung
- Mitwirken
- Sicherheit
- Support
- Lizenz
Warum Augustus
| Funktion | Augustus | garak | promptfoo |
|---|---|---|---|
| Sprache | Go | Python | TypeScript |
| Einzelne Binärdatei | Ja | Nein | Nein |
| Paralleles Scannen | Goroutine-Pools | Multiprocessing-Pools | Ja |
| LLM-Anbieter | 28 | 35+ | 80+ |
| Probe-Typen | 210+ | 160+ | 119 Plugins + 36 Strategien |
| Unternehmensfokus | Ja | Forschung | Ja |
Funktionen
| Funktion | Beschreibung |
|---|---|
| 210+ Schwachstellen-Probes | 47 Angriffskategorien: Jailbreaks, Prompt Injection, Adversarial-Beispiele, Datenextraktion, Sicherheits-Benchmarks, Agenten-Angriffe und mehr |
| 28 LLM-Anbieter | OpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama und 22 weitere mit 43 Generator-Varianten |
| 90+ Detektoren | Musterabgleich, LLM-als-Richter, HarmJudge (arXiv:2511.15304), Perspective API, Erkennung unsicherer Inhalte |
| 7 Buff-Transformationen | Kodierung, Paraphrasierung, Poesie (5 Formate, 3 Strategien), Übersetzung in ressourcenarme Sprachen, Falltransformationen |
| Flexible Ausgabe | Tabellen-, JSON-, JSONL- und HTML-Berichtsformate |
| Produktionsreif | Paralleles Scannen, Ratenbegrenzung, Wiederholungslogik, Timeout-Behandlung |
| Einzelne Binärdatei | Go-basiertes Tool kompiliert zu einer portablen ausführbaren Datei |
| Erweiterbar | Plugin-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
- Adversarial-Beispiele: GCG, PAIR, AutoDAN, TAP (Tree of Attack Prompts), TreeSearch, DRA
- Mehrrunden-Angriffe: Crescendo (schrittweise Eskalation), GOAT (adaptive Technikumschaltung)
- Datenextraktion: API-Key-Leckage, Package-Halluzination, PII-Extraktion, LeakReplay
- Kontextmanipulation: RAG-Vergiftung, Kontextüberlauf, Multimodale Angriffe, Fortsetzung, Divergenz
- Format-Exploits: Markdown-Injection, YAML/JSON-Parsing-Angriffe, ANSI-Escape, Web-Injection (XSS)
- Umgehungstechniken: Verschleierung, Zeichensubstitution, Übersetzungsbasierte Angriffe, Formulierung, ObscurePrompt
- Sicherheits-Benchmarks: DoNotAnswer, RealToxicityPrompts, Snowball, LMRC
- Agenten-Angriffe: Manipulation mehrerer Agenten, Browser-Exploits
- Sicherheitstests: Guardrail-Umgehung, AV/Spam-Scanning, Exploitation (SQLi, Code-Ausführung), BadChars
Warnung: Der
lmrc-Probe verwendet obszöne und beleidigende Sprache als Teil seiner Jailbreak-Tests. Verwenden Sie ihn nur in autorisierten Testumgebungen.
Schnellstart
Installation
Erfordert Go 1.27.0 oder höher.```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest
Or aus dem Quellcode bauen:```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
### Beispielausgabe```
+--------------+-------------+--------+-------+--------+
| 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 Fähigkeiten 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 | Generatorname(n) | Hinweise |
|--------------------|---------------------------|--------------------------------|
| 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 Open-Modelle |
| HuggingFace | `huggingface.InferenceAPI`, `huggingface.InferenceEndpoint`, `huggingface.Pipeline`, `huggingface.LLaVA` | HF-Inference-API, Endpunkte, Pipelines, multimodal |
| Together AI | `together.Together` | Schnelle Inferenz für OSS-Modelle |
| Anyscale | `anyscale.Anyscale` | Llama- und Mistral-Hosting |
| Groq | `groq.Groq` | Ultraschnelle LPU-Inferenz |
| Mistral | `mistral.Mistral` | Mistral-API-Modelle |
| Fireworks | `fireworks.Fireworks` | Produktions-Inferenzplattform |
| DeepInfra | `deepinfra.DeepInfra` | Serverlose GPU-Inferenz |
| NVIDIA NIM | `nim.NIM`, `nim.NVOpenAICompletion`, `nim.NVMultimodal`, `nim.Vision` | NVIDIA-AI-Endpunkte, multimodal |
| NVIDIA NeMo | `nemo.NeMo` | NVIDIA-NeMo-Framework |
| NVIDIA NVCF | `nvcf.NvcfChat`, `nvcf.NvcfCompletion` | NVIDIA Cloud Functions |
| 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-Konversations-KI |
| GGML | `ggml.Ggml` | GGML-lokale Modellinferenz |
| Funktion | `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. Konfiguration über Umgebungsvariablen oder YAML-Konfigurationsdateien. Siehe [Konfiguration](#configuration) für Einrichtungsdetails.
## Verwendung
### Einzelner Probe```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-Transformationen
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$INPUT-Platzhalterreq_template_json_object: JSON-Anforderungstext (automatisch gemarshallt,$INPUTin Zeichenfolgen verwenden)response_json: Antwort als JSON parsen (Standard: false)response_json_field: JSONPath zum Extrahieren (z. B.$.data.textoder einfacher Feldname)api_key: API-Schlüssel für die$KEY-Platzhalterersetzungproxy: HTTP-Proxy-URL für die 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"}'
## So funktioniert es
Augustus verwendet eine Pipeline-Architektur, um LLMs gegen adversariale 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 Name, Glob-Muster oder
--allauswählen - Buff-Transformation: Optional Prompts transformieren (kodieren, paraphrasieren, übersetzen, poetisieren)
- Generator-Aufruf: Adversarial-Prompts an das Ziel-LLM über dessen Provider-Integration senden
- Detektor-Analyse: Antworten mittels Musterabgleich, LLM-als-Richter oder spezialisierten 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 Kandidaten-Pruning und richterbasierter Bewertung
- Multi-Turn-Engine: Für konversationelle Proben (Crescendo, GOAT) pflegt die Multi-Turn-Engine den vollständigen Gesprächsverlauf mit dem Ziel über Turns hinweg, mit Verweigerungserkennung und dynamischer Anpassung
Multi-Turn-Angriffsstrategien
Multi-Turn-Angriffe führen ein persistentes Gespräch mit dem Ziel-LLM und nutzen die Tatsache aus, dass Modelle Informationen über Turns hinweg schrittweise preisgeben können, die sie in 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 graduelle 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, bildenden Fragen und erhöht die Spezifität über viele Turns hinweg schrittweise
- Eskalationsmuster: Historischer Kontext → technische Mechanismen → spezifische Details → direkte Anfragen, die als natürliche Folgefragen formuliert sind
- Stärke: Wirksam gegen Modelle, die den Gesprächston verfolgen — die graduelle Verschiebung umgeht Sicherheitsfilter```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 adversarischen Techniken und Chain-of-Attack-Thought-Argumentation, um dynamisch zwischen Strategien zu wechseln, je nachdem, was funktioniert oder scheitert.
- **Paper**: [Pavlova et al., 2024](https://arxiv.org/abs/2410.01606)
- **Ansatz**: Zielt ab Runde 1 auf das Ziel ab, unter Verwendung indirekter Rahmung, und erwähnt das Ziel dem Zielobjekt gegenüber nie direkt
- **7 Techniken** in 3 Kategorien:
- *Output-Manipulation*: Refusal Suppression, Response Priming
- *Safe-Response-Ablenkungen*: Dual Response, Topic Splitting, Opposite Intent
- *Fiktive Szenarien*: Persona Modification, Hypothetical
- **Chain-of-Attack-Thought**: In jeder Runde denkt der Angreifer über Observation → Thought → Strategy → Response nach, bevor er seine Nachricht verfasst
- **Technik-Stapelung**: Mehrere Techniken können in einer einzigen Runde kombiniert werden, um eine stärkere Wirkung zu erzielen
- **Stärke**: Erzielt hohe Erfolgsquoten in weniger Runden (typischerweise 3-5), indem aggressiv zwischen grundlegend unterschiedlichen Ansätzen gewechselt wird```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 Turns zurück, wenn das Ziel die Anfrage ablehnt, und fordert den Angreifer zu einem völlig anderen Ansatz auf. Im Gegensatz zu Crescendo/GOAT (die bei Ablehnung umformulieren) entfernt Hydras Backtracking abgelehnte Turns vollständig aus der Sicht des Ziels.
- Ansatz: Einzelpfad mit Backtracking auf Turn-Ebene — abgelehnte Turns 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 einen Turn löschen und erneut versuchen kann - Stateful-Modus: Setze
stateful: truefür Ziele, bei denen Nachrichten nicht zurückgenommen werden können (deaktiviert Backtracking) - Stärke: Hält den Gesprächsverlauf des Ziels sauber — das Ziel sieht niemals fehlgeschlagene Ansätze, was defensive Eskalation verhindert```bash
augustus scan rest.Rest
--probe hydra.Hydra
--config-file hydra.yaml
--html report.html -v
#### Unfug treibender Benutzer
Der Unfug treibende Benutzer simuliert eine unschuldige, neugierige Person, die auf subtile Weise die Grenzen der KI durch natürliche Konversation auslotet. Anders als bei adversarischen Strategien ist die Angreifer-Persona ein gelegentlicher Nutzer, der durch scheinbar harmlose Interaktion in Richtung verbotener Themen abdriftet.
- **Inspiriert von**: [Tau-bench](https://github.com/sierra-research/tau-bench) und promptfoos mischievous-user-Strategie
- **Ansatz**: Beziehungsaufbau-Phase → Grenzen ausloten → bestimmtes Nachfassen
- **7 Techniken**: Naive Neugier, absichtliches Missverständnis, sozialer Beweis, allmähliches Abdriften, emotionale Appelle, angenommene Erlaubnis, Rekontextualisierung
- **Zielspezifische Playbooks**: Integrierte Skripte zum Extrahieren von Systemanweisungen, Finden von Geheimnissen/Flags und Umgehen der Inhaltsrichtlinie
- **Standard-Runden**: 5 (weniger als bei anderen Strategien — der subtile Ansatz funktioniert entweder schnell oder gar nicht)
- **Stärke**: Wirksam gegen Modelle, die darauf trainiert sind, offensichtlichen adversarischen Mustern zu widerstehen — die lockere Persona umgeht die Heuristiken zur „Angriffserkennung"```bash
augustus scan rest.Rest \
--probe mischievous.MischievousUser \
--config-file mischievous.yaml \
--html report.html -v
Strategie-Auswahl-Leitfaden
| Strategie | Züge | Stil | Am besten geeignet 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 schwach gegenüber Framing-Tricks | Mittel-Hoch (Overhead durch Technik-Abwägung) |
hydra.Hydra | 10 | Zurückverfolgung bei Verweigerung | Sture Modelle, die häufig ablehnen | Hoch (Zurückverfolgung fügt Wiederholungen hinzu) |
mischievous.MischievousUser | 5 | Lässige Persona-Erkundung | Modelle, die gegen adversariale Muster trainiert wurden | Niedrig (5 Züge, subtiler Ansatz) |
Schnellentscheidung:
- Beginnen Sie mit Crescendo — es ist die vielseitigste Strategie
- Probieren Sie GOAT aus, wenn Crescendo zu langsam ist (GOAT gelingt typischerweise in 3-5 Zügen)
- Verwenden Sie Hydra, wenn das Ziel häufig ablehnt (Zurückverfolgung hält die Konversation sauber)
- Verwenden Sie Mischievous für Ziele mit starker Erkennung adversarischer Muster (die Persona umgeht Heuristiken)
Multi-Turn-Konfiguration
Alle vier Strategien teilen sich dieselbe 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
| `goal` | (erforderlich) | Das Ziel, das der Angreifer zu erreichen versucht |
|---------|---------|-------------|
| `max_turns` | 10 | Maximale Anzahl an Gesprächsrunden vor dem Stopp |
| `success_threshold` | 0.8 | Bewertungswert des Richters (0.0-1.0), der einen vorzeitigen Abbruch auslöst |
| `max_refusal_retries` | 10 | Umformulierungsversuche pro Runde, wenn das Ziel ablehnt |
| `attack_max_attempts` | 5 | Wiederholungen bei JSON-Parsing-Fehlern des Angreifer-LLM |
| `use_secondary_judge` | true | Sekundärer Richter aktivieren, um falsch-negative Ergebnisse zu erkennen |
| `max_backtracks` | 10 | Rollbacks auf Rundenebene bei Ablehnung (nur Hydra) |
| `enable_fast_refusal` | true | Musterbasierte Ablehnungserkennung vor dem LLM-Richteraufruf |
| `enable_scan_memory` | false | Lernen über Testfälle hinweg (teilt Taktiken über Sonden hinweg) |
| `stateful` | false | Backtracking für zustandsbehaftete Ziele deaktivieren |
| `exclude_target_output` | false | Zielantworten vor dem Angreifer-Feedback verbergen (Datenschutzmodus) |
| `attacker_model` | (automatisch) | Angreifer-Modellnamen für die Kontextfenstergröße überschreiben |
#### Fehlerbehebung bei mehreren Runden
| Symptom | Wahrscheinliche Ursache | Lösung |
|---------|-------------|-----|
| `no turns completed (attacker_parse_failures=N)` | Angreifer-LLM liefert ungültiges JSON zurück | Ein stärkeres Angreifer-Modell verwenden (GPT-4, Claude Opus). `attack_max_attempts` erhöhen. |
| `no turns completed (target_empty=N)` | Ziel liefert leere/null Antworten zurück | Prüfen, ob der Ziel-Endpunkt antwortet. REST-Konfigurationsvorlage überprüfen. |
| Alle Runden erzielen 0.0 | Ziel zu vage oder Angreifer nicht engagiert | `goal` spezifischer formulieren. Andere Strategie ausprobieren. |
| Hohe Werte, aber kein Erfolg | `success_threshold` zu hoch | `success_threshold` von 0.8 auf 0.6-0.7 senken |
| Läufe dauern zu lange / sind zu teuer | Zu viele Runden und Wiederholungen | `max_turns` reduzieren (5 versuchen). `enable_fast_refusal: true` setzen. |
| Hydra macht ständig Backtracking | Ziel lehnt alles ab | `stateful: true` versuchen oder auf Mischievous-Strategie wechseln |
## 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
Zentrale Designentscheidungen
- Paralleles Scannen mit begrenzten Goroutine-Pools über
errgroup - Plugin-basierte Registrierung mithilfe von Go-
init()-Funktionen für Probes, Generatoren, Detektoren, Buffs und Harnesses - Iterative Angriffs-Engine mit Verwaltung mehrerer Gesprächsströme, Kandidaten-Pruning und richterbasierter Bewertung für PAIR/TAP
- Mehrrunden-Angriffs-Engine mit persistentem Gesprächsverlauf, Verweigerungserkennung und strategieunabhängigem Design für Crescendo/GOAT
- YAML-Probe-Vorlagen (Nuclei-Stil) für deklarative Probe-Definitionen neben Go-basierten Probes
- Aho-Corasick-Vorfilterung für schnelles Schlüsselwort-Matching in Detektoren
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-Datenverkehr für die Inspektion durch einen Proxy (z. B. Burp Suite):```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 werden 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 Reimplementierung, inspiriert von [garak](https://github.com/NVIDIA/garak) (NVIDIAs Python-basiertem LLM-Schwachstellenscanner). Hauptunterschiede:
- **Leistung**: Go-Binary vs. Python-Interpreter – schnellere Ausführung und geringerer Speicherverbrauch
- **Verteilung**: Einzelnes Binary ohne Laufzeitabhängigkeiten vs. Python-Paket mit pip-Installation
- **Parallelität**: Go-Goroutine-Pools (probenübergreifende Parallelität) vs. Python-Multiprocessing-Pools (Parallelität innerhalb einer Probe)
- **Probenabdeckung**: Augustus verfügt über 210+ Proben; garak hat 160+ Proben mit längerer Forschungshistorie und veröffentlichtem Paper (arXiv:2406.11036)
- **Provider-Abdeckung**: Augustus verfügt über 28 Provider; garak hat 35+ Generatorvarianten über 22 Provider-Module
### 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 es mit
registry.RegisterProbe()in einerinit()-Funktion - Neu bauen:
make build
Siehe CONTRIBUTING.md für detaillierte Anweisungen.
Welche Ausgabeformate werden unterstützt?
Augustus unterstützt vier Ausgabeformate:
| Format | Flag | Anwendungsfall |
|---|---|---|
| Tabelle | --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 gleichzeitig?```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:
- Parallelem Scannen mit konfigurierbaren Grenzwerten
- Ratenbegrenzung zur Einhaltung von API-Kontingenten
- Timeout-Behandlung für langlaufende Sonden
- Wiederholungslogik für vorübergehende Fehler
- Strukturierter Protokollierung für Beobachtbarkeit
## Fehlerbehebung
### Fehler: „API-Ratenlimit überschritten"
**Ursache**: Zu viele gleichzeitige Anfragen oder Anfragen pro Minute.
**Lösungen**:
1. Parallelität reduzieren: `--concurrency 5`
2. Anbieterspezifische Ratenlimit-Einstellungen 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: „invalid API key" oder „authentication failed"
**Ursache**: Fehlende oder ungültige API-Anmeldeinformationen.
**Lösungen**:
1. Überprüfen, ob die Umgebungsvariable gesetzt ist: `echo $OPENAI_API_KEY`
2. Auf Tippfehler in der Konfigurationsdatei prüfen
3. Sicherstellen, dass der API-Schlüssel über die erforderlichen Berechtigungen verfügt
4. Für Ollama sicherstellen, dass der Dienst läuft: `ollama serve`
### Fehler: „probe not found" oder „detector not found"
**Ursache**: Tippfehler im Namen oder Probe 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: Der Detektor hat keine Antworten abgeglichen, oder die Ausgabe wurde nicht geschrieben.
Lösungen:
- Führen Sie den Scan mit
--verboseaus, um eine detaillierte Ausgabe zu sehen - Prüfen Sie, ob der Detektor zum Probentyp passt
- Stellen Sie sicher, dass der Ausgabedateipfad beschreibbar ist
Mitwirken
Wir freuen uns über Beiträge! Siehe CONTRIBUTING.md für:
- Hinzufügen neuer Schwachstellen-Probes
- 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 sofort einsatzbereite Cloud-Entwicklungsumgebung zum Benchmarking von LLMs ist über [DevPod](https://devpod.sh/) verfügbar. Sie 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
Inside the 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
Die Umgebung funktioniert auch als standardmäßiger [Dev-Container](https://containers.dev/) – öffnen Sie das Repository in VS Code oder Cursor und wählen Sie die CPU- oder GPU-Konfiguration aus `.devcontainer/`.
## Sicherheit
Augustus ist ausschließlich für **autorisierte Sicherheitstests** konzipiert.
- Augustus sendet adversariale Prompts an LLMs, die Sie festlegen – stellen Sie immer sicher, dass Sie autorisiert sind
- Testen Sie niemals Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis haben
- Einige Probes erzeugen absichtlich anstößige Inhalte (zum Testen von Sicherheitsfiltern)
- Ergebnisse können schädliche Inhalte enthalten, die von den 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/main/CONTRIBUTING.md) neue Probes, Detektoren oder Provider-Integrationen bei
[](https://star-history.com/#praetorian-inc/augustus&Date)
## Lizenz
[Apache 2.0](https://github.com/praetorian-inc/augustus/blob/main/LICENSE) – Praetorian Security, Inc.
---
**Entwickelt von [Praetorian](https://www.praetorian.com/)** – Offensive Security Solutions