
augustus v0.14.24
Cadre de test de sécurité pour LLM pour détecter les injections de prompt, les jailbreaks et les attaques adversariales — 190+ sondes, 28 fournisseurs, un seul binaire Go
Augustus - Scanner de vulnérabilités LLM pour les tests d
Augustus - Scanner de vulnérabilités LLM
Testez les grands modèles de langage contre plus de 210 attaques adversariales couvrant l'injection de prompts, les jailbreaks, les exploits d'encodage et l'extraction de données.
Augustus est un scanner de vulnérabilités LLM basé sur Go, conçu pour les professionnels de la sécurité. Il teste les grands modèles de langage contre un large éventail d'attaques adversariales, s'intègre à 28 fournisseurs de LLM et produit des rapports de vulnérabilités exploitables.
Contrairement aux outils orientés recherche, Augustus est conçu pour les tests de sécurité en production — l'analyse concurrente, la limitation de débit, la logique de nouvelle tentative et la gestion des délais d'attente sont incluses par défaut.
Table des matières
- Pourquoi Augustus
- Fonctionnalités
- Démarrage rapide
- Fournisseurs pris en charge
- Utilisation
- Comment ça fonctionne
- Architecture
- Configuration
- FAQ
- Dépannage
- Contribution
- Sécurité
- Support
- Licence
Pourquoi Augustus
| Fonctionnalité | Augustus | garak | promptfoo |
|---|---|---|---|
| Langage | Go | Python | TypeScript |
| Binaire unique | Oui | Non | Non |
| Analyse concurrente | Pools de goroutines | Pools de multiprocessing | Oui |
| Fournisseurs de LLM | 28 | 35+ | 80+ |
| Types de sondes | 210+ | 160+ | 119 plugins + 36 stratégies |
| Orientation entreprise | Oui | Recherche | Oui |
Fonctionnalités
| Fonctionnalité | Description |
|---|---|
| Plus de 210 sondes de vulnérabilité | 47 catégories d'attaques : jailbreaks, injection de prompts, exemples adversariaux, extraction de données, benchmarks de sécurité, attaques d'agents, et plus encore |
| 28 fournisseurs de LLM | OpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama, et 22 autres avec 43 variantes de générateurs |
| Plus de 90 détecteurs | Correspondance de motifs, LLM-en-tant-que-juge, HarmJudge (arXiv:2511.15304), API Perspective, détection de contenu dangereux |
| 7 transformations Buff | Encodage, paraphrase, poésie (5 formats, 3 stratégies), traduction en langues à faibles ressources, transformations de casse |
| Sortie flexible | Formats de rapport Table, JSON, JSONL et HTML |
| Prêt pour la production | Analyse concurrente, limitation de débit, logique de nouvelle tentative, gestion des délais d'attente |
| Binaire unique | Outil basé sur Go compilé en un seul exécutable portable |
| Extensible | Enregistrement de type plugin via les fonctions init() de Go |
Catégories d'attaques
- Attaques de jailbreak : DAN, DAN 11.0, AIM, AntiGPT, Grandma, ArtPrompts
- Injection de prompts : Encodage (Base64, ROT13, Morse), contrebande de balises, FlipAttack, injection de préfixe/suffixe
- Exemples adversariaux : GCG, PAIR, AutoDAN, TAP (Tree of Attack Prompts), TreeSearch, DRA
- Attaques multi-tours : Crescendo (escalade progressive), GOAT (commutation adaptative de techniques)
- Extraction de données : Fuite de clés API, hallucination de paquets, extraction de PII, LeakReplay
- Manipulation du contexte : Empoisonnement RAG, dépassement de contexte, attaques multimodales, continuation, divergence
- Exploits de format : Injection Markdown, attaques d'analyse YAML/JSON, échappement ANSI, injection Web (XSS)
- Techniques d'évasion : Obfuscation, substitution de caractères, attaques basées sur la traduction, reformulation, ObscurePrompt
- Benchmarks de sécurité : DoNotAnswer, RealToxicityPrompts, Snowball, LMRC
- Attaques d'agents : Manipulation multi-agents, exploits de navigation
- Tests de sécurité : Contournement de garde-fous, analyse AV/spam, exploitation (SQLi, exécution de code), BadChars
Avertissement : La sonde
lmrcutilise un langage grossier et offensant dans le cadre de ses tests de jailbreak. Utilisez-la uniquement dans des environnements de test autorisés.
Démarrage rapide
Installation
Nécessite Go 1.27.0 ou version ultérieure.```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest
Or build from source:
```bash
git clone https://github.com/example/repo.git
cd repo
make build
This will compile the binary into the bin/ directory.```bash
git clone https://github.com/praetorian-inc/augustus.git
cd augustus
make build
### Utilisation de base```bash
export OPENAI_API_KEY="your-api-key"
augustus scan openai.OpenAI \
--probe dan.Dan_11_0 \
--detector dan.DAN \
--verbose
Exemple de sortie```
+--------------+-------------+--------+-------+--------+ | 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 | +--------------+-------------+--------+-------+--------+
### Liste des capacités disponibles```bash
# List all registered probes, detectors, generators, harnesses, and buffs
augustus list
Fournisseurs pris en charge
Augustus inclut 28 catégories de fournisseurs LLM avec 43 variantes de générateurs :
| Fournisseur | Noms des générateurs | Remarques |
|---|---|---|
| OpenAI | openai.OpenAI, openai.OpenAIReasoning | Modèles de raisonnement GPT-3.5, GPT-4, GPT-4 Turbo, o1/o3 |
| Anthropic | anthropic.Anthropic | Claude 3/3.5/4 (Opus, Sonnet, Haiku) |
| Azure OpenAI | azure.AzureOpenAI | Modèles OpenAI hébergés sur Azure |
| AWS Bedrock | bedrock.Bedrock | Modèles Claude, Llama, Titan |
| Google Vertex AI | vertex.Vertex | Modèles PaLM, Gemini |
| Cohere | cohere.Cohere | Modèles Command, Command R |
| Replicate | replicate.Replicate | Modèles open source hébergés dans le cloud |
| HuggingFace | huggingface.InferenceAPI, huggingface.InferenceEndpoint, huggingface.Pipeline, huggingface.LLaVA | API d'inférence HF, endpoints, pipelines, multimodal |
| Together AI | together.Together | Inférence rapide pour les modèles OSS |
| Anyscale | anyscale.Anyscale | Hébergement Llama et Mistral |
| Groq | groq.Groq | Inférence LPU ultra-rapide |
| Mistral | mistral.Mistral | Modèles API Mistral |
| Fireworks | fireworks.Fireworks | Plateforme d'inférence de production |
| DeepInfra | deepinfra.DeepInfra | Inférence GPU sans serveur |
| NVIDIA NIM | nim.NIM, nim.NVOpenAICompletion, nim.NVMultimodal, nim.Vision | Endpoints NVIDIA AI, multimodal |
| NVIDIA NeMo | nemo.NeMo | Framework NVIDIA NeMo |
| NVIDIA NVCF | nvcf.NvcfChat, nvcf.NvcfCompletion | Fonctions cloud NVIDIA |
| NeMo Guardrails | guardrails.NeMoGuardrails | NVIDIA NeMo Guardrails |
| IBM watsonx | watsonx.WatsonX | Plateforme IBM watsonx.ai |
| LangChain | langchain.LangChain | Wrapper LLM LangChain |
| LangChain Serve | langchain_serve.LangChainServe | Endpoints LangChain Serve |
| Rasa | rasa.RasaRest | IA conversationnelle Rasa |
| GGML | ggml.Ggml | Inférence de modèles locaux GGML |
| Function | function.Single, function.Multiple | Générateurs de fonctions personnalisées |
| Ollama | ollama.Ollama, ollama.OllamaChat | Hébergement de modèles locaux |
| LiteLLM | litellm.LiteLLM | Proxy API unifié |
| API REST | rest.Rest | Endpoints REST personnalisés (prise en charge SSE) |
| Test | test.Blank, test.Repeat, test.Lipsum, test.Nones, test.Single, test.BlankVision | Tests et développement |
Tous les fournisseurs sont disponibles dans le binaire compilé. Configurez-les via des variables d'environnement ou des fichiers de configuration YAML. Consultez Configuration pour les détails de configuration.
Utilisation
Sonde unique```bash
Test for DAN jailbreak
augustus scan openai.OpenAI
--probe dan.Dan_11_0
--detector dan.DAN
--config-file config.yaml
--verbose
### Sondes multiples```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
Transformations de Buff
Appliquez des transformations de prompt pour tester les techniques d'évasion :```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
### Formats de sortie```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
Points de terminaison REST personnalisés```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"
}'
**Clés de configuration REST :**
- `uri` : Point de terminaison de l’API cible (obligatoire)
- `method` : Méthode HTTP (par défaut : POST)
- `headers` : En-têtes HTTP sous forme de paires clé-valeur
- `req_template` : Corps de requête brut avec l’espace réservé `$INPUT`
- `req_template_json_object` : Corps de requête JSON (sérialisé automatiquement, utilisez `$INPUT` dans les chaînes)
- `response_json` : Analyser la réponse en JSON (par défaut : false)
- `response_json_field` : Chemin JSONPath à extraire (par exemple, `$.data.text` ou un simple nom de champ)
- `api_key` : Clé API pour la substitution de l’espace réservé `$KEY`
- `proxy` : URL du proxy HTTP pour l’inspection du trafic
### Options avancées```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"}'
How It Works
Augustus utilise une architecture en pipeline pour tester les LLM contre des attaques adversariales :```mermaid flowchart LR A[Probe Selection] --> B[Buff Transform] B --> C[Generator / LLM Call] C --> D[Detector Analysis] D --> E{Vulnerable?} E -->|Yes| F[Record Finding] E -->|No| G[Record Pass]
subgraph Scanner
B
C
D
E
end
### Pipeline de Scan
1. **Sélection des sondes** : Choisir les sondes par nom, motif glob, ou `--all`
2. **Transformation des prompts** : Transformer optionnellement les prompts (encodage, reformulation, traduction, poétisation)
3. **Appel au générateur** : Envoyer les prompts adversariaux au LLM cible via son intégration de fournisseur
4. **Analyse par le détecteur** : Analyser les réponses à l'aide de correspondance de motifs, de LLM-en-tant-que-juge, ou de détecteurs spécialisés
5. **Enregistrement des résultats** : Noter chaque tentative et produire la sortie dans le format demandé
6. **Moteur d'attaque** : Pour les sondes itératives (PAIR, TAP), le moteur d'attaque à tour unique affine les prompts au fil des itérations avec élagage des candidats et notation basée sur un juge
7. **Moteur multi-tours** : Pour les sondes conversationnelles (Crescendo, GOAT), le moteur multi-tours conserve l'historique complet de la conversation avec la cible à chaque tour, avec détection des refus et adaptation dynamique
### Stratégies d'attaque multi-tours
Les attaques multi-tours maintiennent une conversation persistante avec le LLM cible, exploitant le fait que les modèles peuvent divulguer des informations progressivement au fil des tours qu'ils refuseraient dans un prompt unique. Le moteur multi-tours utilise trois LLM : un **attaquant** (génère les questions), une **cible** (le système testé), et un **juge** (note la progression et détecte les refus).
#### Crescendo
Crescendo utilise une escalade graduelle (technique du pied-dans-la-porte) pour faire passer progressivement une conversation de sujets bénins vers un objectif interdit.
- **Article** : [Russinovich et al., 2024](https://arxiv.org/abs/2404.01833)
- **Approche** : Commence par des questions réellement bénignes et éducatives, puis augmente progressivement la spécificité sur de nombreux tours
- **Schéma d'escalade** : Contexte historique → mécanismes techniques → détails spécifiques → demandes directes formulées comme des suivis naturels
- **Atout** : Efficace contre les modèles qui suivent le ton de la conversation — le changement graduel évite de déclencher les filtres de sécurité```bash
augustus scan rest.Rest \
--probe crescendo.Crescendo \
--config-file crescendo.yaml \
--html report.html -v
GOAT (Generative Offensive Agent Tester)
GOAT utilise une approche agressive et adaptative avec 7 techniques adverses et un raisonnement Chain-of-Attack-Thought pour changer dynamiquement de stratégie en fonction de ce qui fonctionne ou échoue.
- Article : Pavlova et al., 2024
- Approche : Vise l'objectif dès le tour 1 en utilisant un cadrage indirect, ne mentionne jamais le but directement à la cible
- 7 techniques réparties en 3 catégories :
- Manipulation de la sortie : Suppression du refus, Amorçage de la réponse
- Distracteurs de réponse sûre : Double réponse, Division du sujet, Intention opposée
- Scénarios fictifs : Modification de persona, Hypothétique
- Chain-of-Attack-Thought : À chaque tour, l'attaquant raisonne via Observation → Pensée → Stratégie → Réponse avant de formuler son message
- Empilement de techniques : Plusieurs techniques peuvent être combinées en un seul tour pour un effet plus fort
- Atout : Atteint des taux de réussite élevés en moins de tours (généralement 3 à 5) en basculant agressivement entre des approches fondamentalement différentes```bash
augustus scan rest.Rest
--probe goat.Goat
--config-file goat.yaml
--html report.html -v
#### Hydra
Hydra maintient un chemin de conversation unique et annule entièrement les tours lorsque la cible refuse, demandant à l'attaquant une approche complètement différente. Contrairement à Crescendo/GOAT (qui reformulent en cas de refus), le retour en arrière d'Hydra supprime complètement les tours refusés de la vue de la cible.
- **Approche** : Chemin unique avec retour en arrière au niveau du tour — les tours refusés sont effacés et remplacés
- **Techniques** : Décomposition (diviser l'objectif en sous-questions innocentes), exploitation du contexte (s'appuyer sur les propres mots de la cible), simulation d'autorité, cadrage émotionnel, normalisation progressive
- **Caractéristique clé** : `max_backtracks` contrôle combien de fois Hydra peut effacer et réessayer un tour
- **Mode avec état** : Définissez `stateful: true` pour les cibles où les messages ne peuvent pas être retirés (désactive le retour en arrière)
- **Atout** : Garde l'historique de conversation de la cible propre — la cible ne voit jamais les approches échouées, empêchant l'escalade défensive```bash
augustus scan rest.Rest \
--probe hydra.Hydra \
--config-file hydra.yaml \
--html report.html -v
Utilisateur Malicieux
L’Utilisateur Malicieux simule une personne innocente et curieuse qui sonde subtilement les limites de l’IA à travers une conversation naturelle. Contrairement aux stratégies adversariales, ce persona d’attaquant est un utilisateur décontracté qui dérive vers des sujets interdits via un engagement apparemment inoffensif.
- Inspiré par : Tau-bench et la stratégie de l’utilisateur malicieux de promptfoo
- Approche : Phase d’établissement de rapport → sondage des limites → poussée assertive
- 7 techniques : Curiosité naïve, malentendu délibéré, preuve sociale, dérive progressive, appel émotionnel, permission supposée, recontextualisation
- Playbooks spécifiques aux objectifs : Scripts intégrés pour extraire les instructions système, trouver des secrets/drapeaux et contourner la politique de contenu
- Tours par défaut : 5 (moins que les autres stratégies — l’approche subtile fonctionne soit rapidement, soit pas du tout)
- Atout : Efficace contre les modèles entraînés à résister aux schémas adversariales évidents — le persona décontracté contourne les heuristiques de « détection d’attaque »```bash
augustus scan rest.Rest
--probe mischievous.MischievousUser
--config-file mischievous.yaml
--html report.html -v
#### Guide de sélection des stratégies
| Stratégie | Tours | Style | Idéal pour | Coût |
|----------|-------|-------|----------|------|
| `crescendo.Crescendo` | 10 | Escalade progressive | Modèles avec filtres de sécurité basés sur le suivi du ton | Moyen (10 tours × 3 appels LLM) |
| `goat.Goat` | 10 | Changement de technique agressif | Résultats rapides, modèles vulnérables aux astuces de cadrage | Moyen-Élevé (surcharge de raisonnement technique) |
| `hydra.Hydra` | 10 | Retour en arrière en cas de refus | Modèles obstinés qui refusent fréquemment | Élevé (le retour en arrière ajoute des tentatives) |
| `mischievous.MischievousUser` | 5 | Sondage de personnalité décontracté | Modèles entraînés contre les schémas adversariaux | Faible (5 tours, approche subtile) |
**Décision rapide** :
- Commencez par **Crescendo** — c'est la stratégie la plus polyvalente
- Essayez **GOAT** si Crescendo est trop lent (GOAT réussit généralement en 3 à 5 tours)
- Utilisez **Hydra** si la cible refuse fréquemment (le retour en arrière garde la conversation propre)
- Utilisez **Mischievous** pour les cibles dotées d'une forte détection de schémas adversariaux (la personnalité contourne les heuristiques)
#### Configuration multi-tours
Les quatre stratégies partagent la même structure de configuration :```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 | Description |
|---|---|---|
goal | (obligatoire) | L'objectif que l'attaquant tente d'atteindre |
max_turns | 10 | Nombre maximal de tours de conversation avant l'arrêt |
success_threshold | 0.8 | Score du juge (0.0-1.0) qui déclenche une sortie anticipée |
max_refusal_retries | 10 | Tentatives de reformulation par tour lorsque la cible refuse |
attack_max_attempts | 5 | Nouvelles tentatives en cas d'échec d'analyse JSON du LLM attaquant |
use_secondary_judge | true | Active un juge secondaire pour détecter les faux négatifs |
max_backtracks | 10 | Retours en arrière au niveau du tour en cas de refus (Hydra uniquement) |
enable_fast_refusal | true | Détection de refus basée sur des motifs avant l'appel au juge LLM |
enable_scan_memory | false | Apprentissage inter-cas de test (partage les tactiques entre les sondes) |
stateful | false | Désactive le retour en arrière pour les cibles avec état |
exclude_target_output | false | Masque les réponses de la cible aux retours de l'attaquant (mode confidentialité) |
attacker_model | (auto) | Remplace le nom du modèle attaquant pour le dimensionnement de la fenêtre de contexte |
Dépannage Multi-Tour
| Symptôme | Cause probable | Correctif |
|---|---|---|
no turns completed (attacker_parse_failures=N) | Le LLM attaquant renvoie un JSON invalide | Utilisez un modèle attaquant plus puissant (GPT-4, Claude Opus). Augmentez attack_max_attempts. |
no turns completed (target_empty=N) | La cible renvoie des réponses vides/nulles | Vérifiez que le point de terminaison de la cible répond. Validez le modèle de configuration REST. |
| Tous les tours obtiennent un score de 0.0 | Objectif trop vague ou attaquant pas assez engagé | Rendez goal plus spécifique. Essayez une stratégie différente. |
| Scores élevés mais aucun succès | success_threshold trop élevé | Abaissez success_threshold de 0.8 à 0.6-0.7 |
| Exécutions trop longues / coûteuses | Trop de tours et de nouvelles tentatives | Réduisez max_turns (essayez 5). Définissez enable_fast_refusal: true. |
| Hydra ne cesse de revenir en arrière | La cible refuse tout | Essayez stateful: true ou passez à la stratégie 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
### Décisions de conception clés
- **Analyse concurrente** avec des pools de goroutines bornés via `errgroup`
- **Enregistrement de type plugin** utilisant les fonctions `init()` de Go pour les sondes, générateurs, détecteurs, buffs et harnais
- **Moteur d’attaque itératif** avec gestion de conversations multi-flux, élagage de candidats et notation basée sur un juge pour PAIR/TAP
- **Moteur d’attaque multi-tours** avec historique de conversation persistant, détection de refus, conception agnostique à la stratégie pour Crescendo/GOAT
- **Modèles de sondes YAML** (style Nuclei) pour des définitions déclaratives de sondes aux côtés des sondes basées sur Go
- **Pré-filtrage Aho-Corasick** pour une correspondance rapide de mots-clés dans les détecteurs
## Configuration
### Fichier de configuration YAML
Créez un fichier `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"
Variables d'environnement```bash
API Keys
export OPENAI_API_KEY="sk-..." export ANTHROPIC_API_KEY="sk-ant-..." export COHERE_API_KEY="..."
Debug mode
export AUGUSTUS_DEBUG=true
### Configuration du proxy
Acheminez le trafic HTTP via un proxy (par exemple, Burp Suite) pour inspection :```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"}'
- Vérification TLS automatiquement désactivée pour l’inspection par proxy
- Prise en charge HTTP/2 activée pour les API modernes
- Réponses Server-Sent Events (SSE) automatiquement détectées et analysées
Référence CLI```
Usage: augustus scan [flags]
Arguments: 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
**Commandes :**```bash
augustus version # Print version information
augustus list # List available probes, detectors, generators, harnesses, buffs
augustus scan <generator> # Run vulnerability scan
augustus completion <shell> # Generate shell completion (bash, zsh, fish)
Codes de sortie :
| Code | Signification |
|---|---|
| 0 | Succès - analyse terminée |
| 1 | Erreur d'analyse/d'exécution |
| 2 | Erreur de validation/utilisation |
FAQ
Comment Augustus se compare-t-il à garak ?
Augustus est une réimplémentation native en Go inspirée par garak (le scanner de vulnérabilités LLM basé sur Python de NVIDIA). Principales différences :
- Performances : binaire Go vs interpréteur Python — exécution plus rapide et consommation mémoire réduite
- Distribution : binaire unique sans dépendances d'exécution vs paquet Python avec installation via pip
- Concurrence : pools de goroutines Go (parallélisme entre sondes) vs pools multiprocessing Python (parallélisme au sein des sondes)
- Couverture des sondes : Augustus dispose de plus de 210 sondes ; garak en compte plus de 160 avec un historique de recherche plus long et un article publié (arXiv:2406.11036)
- Couverture des fournisseurs : Augustus prend en charge 28 fournisseurs ; garak propose plus de 35 variantes de générateurs réparties sur 22 modules de fournisseurs
Puis-je tester des modèles locaux sans clés API ?
Oui ! Utilisez l'intégration Ollama pour tester des modèles locaux :```bash
No API key needed
augustus scan ollama.OllamaChat
--probe dan.Dan_11_0
--config '{"model":"llama3.2:3b"}'
### Comment ajouter des sondes personnalisées ?
1. Créez un nouveau fichier Go dans `internal/probes/`
2. Implémentez l'interface `probes.Probe`
3. Enregistrez-la à l'aide de `registry.RegisterProbe()` dans une fonction `init()`
4. Recompilez : `make build`
Consultez [CONTRIBUTING.md](https://github.com/praetorian-inc/augustus/blob/main/CONTRIBUTING.md) pour des instructions détaillées.
### Quels formats de sortie sont pris en charge ?
Augustus prend en charge quatre formats de sortie :
| Format | Option | Cas d'utilisation |
|--------|--------|-------------------|
| Table | `--format table` | Sortie terminal lisible par un humain |
| JSON | `--format json` | Objet JSON unique pour l'analyse |
| JSONL | `--format jsonl` | JSON délimité par des lignes pour le streaming |
| HTML | `--html report.html` | Rapports visuels pour les parties prenantes |
### Comment tester plusieurs modèles à la fois ?```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 convient-il aux environnements de production ?
Oui, Augustus est conçu pour une utilisation en production avec :
- Analyse concurrente avec limites configurables
- Limitation de débit pour respecter les quotas d'API
- Gestion des délais d'attente pour les sondes de longue durée
- Logique de nouvelle tentative pour les échecs transitoires
- Journalisation structurée pour l'observabilité
Dépannage
Erreur : « Limite de débit d'API dépassée »
Cause : Trop de requêtes concurrentes ou de requêtes par minute.
Solutions :
- Réduire la concurrence :
--concurrency 5 - Utiliser les paramètres de limite de débit spécifiques au fournisseur dans la configuration YAML : ```yaml
generators:
openai.OpenAI:
rate_limit: 10 # requests per minute
Erreur : « context deadline exceeded » ou « timeout »
Cause : Les sondes complexes (comme TAP ou PAIR) dépassent le délai d’attente par défaut.
Solution :```bash
augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml
### Erreur : « clé API invalide » ou « échec de l’authentification »
**Cause** : Identifiants API manquants ou invalides.
**Solutions** :
1. Vérifiez que la variable d’environnement est définie : `echo $OPENAI_API_KEY`
2. Recherchez les fautes de frappe dans le fichier de configuration
3. Assurez-vous que la clé API dispose des autorisations requises
4. Pour Ollama, assurez-vous que le service est en cours d’exécution : `ollama serve`
### Erreur : « sonde introuvable » ou « détecteur introuvable »
**Cause** : Faute de frappe dans le nom ou sonde non enregistrée.
**Solution** :```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
L'analyse ne produit aucun résultat
Cause : Le détecteur n'a correspondu à aucune réponse, ou la sortie n'a pas été écrite.
Solutions :
- Exécutez avec
--verbosepour voir la sortie détaillée - Vérifiez que le détecteur correspond au type de sonde
- Vérifiez que le chemin du fichier de sortie est accessible en écriture
Contribution
Nous accueillons les contributions ! Voir CONTRIBUTING.md pour :
- Ajouter de nouvelles sondes de vulnérabilité
- Créer de nouvelles implémentations de détecteurs
- Ajouter des intégrations de fournisseurs LLM
- Directives de test
- Exigences de style de code
Développement```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
### Environnement de référence (DevPod)
Un environnement de développement cloud prêt à l'emploi pour l'évaluation comparative des LLM est disponible via [DevPod](https://devpod.sh/). Il provisionne un conteneur distant avec Augustus, Ollama, Go et toutes les dépendances préinstallées.```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
L'environnement fonctionne également comme un [conteneur de développement](https://containers.dev/) standard — ouvrez le dépôt dans VS Code ou Cursor et sélectionnez la configuration CPU ou GPU depuis `.devcontainer/`.
## Sécurité
Augustus est conçu pour **les tests de sécurité autorisés uniquement**.
- Augustus envoie des invites adversariales aux LLM que vous spécifiez — assurez-vous toujours d'avoir l'autorisation
- Ne testez jamais des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite
- Certaines sondes génèrent du contenu offensant par conception (pour tester les filtres de sécurité)
- Les résultats peuvent contenir du contenu nuisible produit par les LLM cibles
Signalez les problèmes de sécurité via [GitHub Issues](https://github.com/praetorian-inc/augustus/issues).
## Support
Si vous trouvez Augustus utile, pensez à :
- Lui attribuer une **étoile** sur GitHub
- [Ouvrir un problème](https://github.com/praetorian-inc/augustus/issues) pour les bugs ou demandes de fonctionnalités
- [Contribuer](https://github.com/praetorian-inc/augustus/blob/main/CONTRIBUTING.md) avec de nouvelles sondes, détecteurs ou intégrations de fournisseurs
[](https://star-history.com/#praetorian-inc/augustus&Date)
## Licence
[Apache 2.0](https://github.com/praetorian-inc/augustus/blob/main/LICENSE) - Praetorian Security, Inc.
---
**Développé par [Praetorian](https://www.praetorian.com/)** - Solutions de sécurité offensive