アップデート一覧に戻る
New releaseJul 27, 2026

augustus v0.14.11

LLMセキュリティテストフレームワーク — プロンプトインジェクション、ジェイルブレイク、敵対的攻撃を検出。190以上のプローブ、28のプロバイダ、単一のGoバイナリ。

共有

Augustus - LLM脆弱性スキャナー(プロンプトインジェクション、ジェイルブレイク、敵対的攻撃テスト用)

Augustus - LLM脆弱性スキャナー

大規模言語モデルを210以上の敵対的攻撃(プロンプトインジェクション、ジェイルブレイク、エンコーディング悪用、データ抽出を含む)でテストします。

CI Go Version License Go Report Card GitHub Release

Augustus は、セキュリティプロフェッショナル向けのGoベースのLLM脆弱性スキャナーです。幅広い敵対的攻撃に対して大規模言語モデルをテストし、28のLLMプロバイダーと連携し、実用的な脆弱性レポートを生成します。

研究指向のツールとは異なり、Augustusは本番環境でのセキュリティテスト向けに構築されています。同時スキャン、レート制限、リトライロジック、タイムアウト処理が標準装備されています。

目次

なぜAugustusか

機能Augustusgarakpromptfoo
言語GoPythonTypeScript
単一バイナリはいいいえいいえ
同時スキャンGoroutineプールマルチプロセッシングプールはい
LLMプロバイダー2835以上80以上
プローブタイプ210以上160以上119プラグイン + 36戦略
エンタープライズ重視はい研究はい

機能

機能説明
210以上の脆弱性プローブ47の攻撃カテゴリ:ジェイルブレイク、プロンプトインジェクション、敵対的例、データ抽出、安全性ベンチマーク、エージェント攻撃など
28のLLMプロバイダーOpenAI、Anthropic、Azure、Bedrock、Vertex AI、Ollama、およびその他22のプロバイダーと43のジェネレータバリアント
90以上の検出器パターンマッチング、LLM-as-a-judge、HarmJudge (arXiv:2511.15304)、Perspective API、安全でないコンテンツ検出
7つのバッファ変換エンコーディング、言い換え、詩(5形式、3戦略)、低リソース言語翻訳、大文字/小文字変換
柔軟な出力テーブル、JSON、JSONL、HTMLレポート形式
本番対応同時スキャン、レート制限、リトライロジック、タイムアウト処理
単一バイナリGoベースのツールで、1つのポータブル実行ファイルにコンパイル
拡張可能Goのinit()関数によるプラグイン形式の登録

攻撃カテゴリ

  • ジェイルブレイク攻撃: DAN、DAN 11.0、AIM、AntiGPT、Grandma、ArtPrompts
  • プロンプトインジェクション: エンコーディング(Base64, ROT13, モールス信号)、タグ密輸、FlipAttack、プレフィックス/サフィックスインジェクション
  • 敵対的例: GCG、PAIR、AutoDAN、TAP(Tree of Attack Prompts)、TreeSearch、DRA
  • マルチターン攻撃: Crescendo(段階的エスカレーション)、GOAT(適応的テクニック切り替え)
  • データ抽出: APIキー漏洩、パッケージ幻覚、PII抽出、LeakReplay
  • コンテキスト操作: RAGポイズニング、コンテキストオーバーフロー、マルチモーダル攻撃、継続、分岐
  • フォーマット悪用: Markdownインジェクション、YAML/JSON解析攻撃、ANSIエスケープ、Webインジェクション(XSS)
  • 回避テクニック: 難読化、文字置換、翻訳ベースの攻撃、言い回し、ObscurePrompt
  • 安全性ベンチマーク: DoNotAnswer、RealToxicityPrompts、Snowball、LMRC
  • エージェント攻撃: マルチエージェント操作、ブラウジング悪用
  • セキュリティテスト: ガードレールバイパス、AV/スパムスキャン、悪用(SQLi、コード実行)、BadChars

警告: lmrc プローブは、ジェイルブレイクテストの一部として卑猥で攻撃的な言葉を使用します。許可されたテスト環境でのみ使用してください。

クイックスタート

インストール

Go 1.25.3 以降が必要です。```bash go install github.com/praetorian-inc/augustus/cmd/augustus@latest

ソースからビルドする場合:```bash
git clone https://github.com/praetorian-inc/augustus.git
cd augustus
make build

基本的な使い方```bash

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

### 出力例```
+--------------+-------------+--------+-------+--------+
| 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   |
+--------------+-------------+--------+-------+--------+

利用可能な機能の一覧```bash

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

augustus list

## サポートされているプロバイダー

Augustus は、28のLLMプロバイダーカテゴリと43のジェネレーターバリアントを含みます:

| プロバイダー           | ジェネレーター名         | 備考                          |
|--------------------|---------------------------|--------------------------------|
| OpenAI             | `openai.OpenAI`, `openai.OpenAIReasoning` | 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`       | Azure ホステッド OpenAI モデル     |
| AWS Bedrock        | `bedrock.Bedrock`         | Claude、Llama、Titan モデル    |
| Google Vertex AI   | `vertex.Vertex`           | PaLM、Gemini モデル            |
| Cohere             | `cohere.Cohere`           | Command、Command R モデル      |
| Replicate          | `replicate.Replicate`     | クラウドホステッドのオープンモデル       |
| HuggingFace        | `huggingface.InferenceAPI`, `huggingface.InferenceEndpoint`, `huggingface.Pipeline`, `huggingface.LLaVA` | HF 推論API、エンドポイント、パイプライン、マルチモーダル |
| Together AI        | `together.Together`       | OSSモデルの高速推論  |
| Anyscale           | `anyscale.Anyscale`       | Llama および Mistral ホスティング      |
| Groq               | `groq.Groq`               | 超高速LPU推論       |
| Mistral            | `mistral.Mistral`         | Mistral API モデル             |
| Fireworks          | `fireworks.Fireworks`     | プロダクション推論プラットフォーム  |
| DeepInfra          | `deepinfra.DeepInfra`     | サーバーレスGPU推論       |
| NVIDIA NIM         | `nim.NIM`, `nim.NVOpenAICompletion`, `nim.NVMultimodal`, `nim.Vision` | NVIDIA AI エンドポイント、マルチモーダル |
| NVIDIA NeMo        | `nemo.NeMo`               | NVIDIA NeMo フレームワーク          |
| NVIDIA NVCF        | `nvcf.NvcfChat`, `nvcf.NvcfCompletion` | NVIDIA Cloud Functions   |
| NeMo Guardrails    | `guardrails.NeMoGuardrails` | NVIDIA NeMo Guardrails       |
| IBM watsonx        | `watsonx.WatsonX`         | IBM watsonx.ai プラットフォーム        |
| LangChain          | `langchain.LangChain`     | LangChain LLM ラッパー          |
| LangChain Serve    | `langchain_serve.LangChainServe` | LangChain Serve エンドポイント |
| Rasa               | `rasa.RasaRest`           | Rasa 会話型AI         |
| GGML               | `ggml.Ggml`               | GGML ローカルモデル推論     |
| Function           | `function.Single`, `function.Multiple` | カスタム関数ジェネレーター |
| Ollama             | `ollama.Ollama`, `ollama.OllamaChat` | ローカルモデルホスティング    |
| LiteLLM            | `litellm.LiteLLM`         | 統合APIプロキシ              |
| REST API           | `rest.Rest`               | カスタムRESTエンドポイント(SSE対応) |
| Test               | `test.Blank`, `test.Repeat`, `test.Lipsum`, `test.Nones`, `test.Single`, `test.BlankVision` | テストおよび開発 |

すべてのプロバイダーはコンパイル済みバイナリで利用可能です。環境変数またはYAML設定ファイルで設定します。セットアップの詳細は[設定](#configuration)を参照してください。

## 使用法

### 単一プローブ```bash
# Test for DAN jailbreak
augustus scan openai.OpenAI \
  --probe dan.Dan_11_0 \
  --detector dan.DAN \
  --config-file config.yaml \
  --verbose

複数のプローブ```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

プロンプト変換を適用して回避手法をテストします:```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

出力形式```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

### カスタムRESTエンドポイント```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設定キー:

  • uri: ターゲットAPIエンドポイント(必須)
  • method: HTTPメソッド(デフォルト: POST)
  • headers: HTTPヘッダー(キーと値のペア)
  • req_template: $INPUTプレースホルダを含む生のリクエストボディ
  • req_template_json_object: JSONリクエストボディ(自動マーシャル、文字列内で$INPUTを使用)
  • response_json: レスポンスをJSONとして解析(デフォルト: false)
  • response_json_field: 抽出するJSONPath(例: $.data.text または単純なフィールド名)
  • api_key: $KEYプレースホルダ置換用のAPIキー
  • proxy: トラフィック検査用のHTTPプロキシURL

詳細オプション```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"}'

## 動作の仕組み

Augustusはパイプラインアーキテクチャを使用して、LLMを敵対的攻撃に対してテストします。```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

スキャンパイプライン

  1. プローブ選択: 名前、グロブパターン、または --all でプローブを選択
  2. バッファ変換: オプションでプロンプトを変換(エンコード、言い換え、翻訳、詩的にする)
  3. ジェネレータ呼び出し: プロバイダ統合を介して、標的のLLMに敵対的プロンプトを送信
  4. 検出器分析: パターンマッチング、LLM-as-a-judge、または専用検出器を使用して応答を分析
  5. 結果記録: 各試行をスコアリングし、要求された形式で出力を生成
  6. アタックエンジン: 反復型プローブ(PAIR、TAP)の場合、単一ターンの攻撃エンジンが、候補の枝刈りと判定ベースのスコアリングを用いて反復全体でプロンプトを洗練
  7. マルチターンエンジン: 会話型プローブ(Crescendo、GOAT)の場合、マルチターンエンジンがターン全体にわたる完全な会話履歴を標的と維持し、拒否検出と動的適応を行う

マルチターン攻撃戦略

マルチターン攻撃は標的のLLMとの持続的な会話を維持し、モデルが単一のプロンプトでは拒否する情報を、ターンをまたいで段階的に開示する可能性があることを利用します。マルチターンエンジンは3つのLLMを使用します: 攻撃者(質問を生成)、標的(テスト対象システム)、判定者(進行状況のスコアリングと拒否の検出)。

Crescendo

Crescendoは段階的なエスカレーション(フット・イン・ザ・ドア技法)を使用して、会話を無害な話題から禁止された目的へとゆっくりとシフトさせます。

  • 論文: Russinovich et al., 2024
  • アプローチ: 真に無害で教育的な質問から始め、多くのターンにわたって徐々に具体性を高める
  • エスカレーションパターン: 歴史的背景 → 技術的メカニズム → 具体的な詳細 → 自然なフォローアップとして装った直接的な要求
  • 強み: 会話のトーンを追跡するモデルに対して効果的 — 段階的な変化によりセーフティフィルターが作動するのを回避```bash augustus scan rest.Rest
    --probe crescendo.Crescendo
    --config-file crescendo.yaml
    --html report.html -v
#### GOAT (Generative Offensive Agent Tester)

GOATは、7つの対抗手法とChain-of-Attack-Thought推論を用いた攻撃的かつ適応的なアプローチを採用し、成功・失敗に基づいて動的に戦略を切り替えます。

- **論文**: [Pavlova et al., 2024](https://arxiv.org/abs/2410.01606)
- **アプローチ**: ターン1から間接的な枠組みを用いて目標を狙い、対象に直接目的を述べることはありません
- **7つの手法**(3カテゴリ):
  - *Output Manipulation*: Refusal Suppression, Response Priming
  - *Safe Response Distractors*: Dual Response, Topic Splitting, Opposite Intent
  - *Fictional Scenarios*: Persona Modification, Hypothetical
- **Chain-of-Attack-Thought**: 各ターンで攻撃者は観察→思考→戦略→応答のプロセスを経てメッセージを作成します
- **手法のスタッキング**: 1回のターンで複数の手法を組み合わせ、より強力な効果を発揮します
- **強み**: 根本的に異なるアプローチを積極的に切り替えることで、少ないターン数(通常3~5ターン)で高い成功率を達成します```bash
augustus scan rest.Rest \
  --probe goat.Goat \
  --config-file goat.yaml \
  --html report.html -v

Hydra

Hydraは単一の会話パスを維持し、ターゲットが拒否した場合にターン全体をロールバックし、攻撃者に全く異なるアプローチを求めます。Crescendo/GOAT(拒否時に言い換える)とは異なり、Hydraのバックトラッキングは、拒否されたターンをターゲットの視界から完全に削除します。

  • アプローチ: ターンレベルのバックトラッキングによる単一パス — 拒否されたターンは消去され置き換えられる
  • テクニック: 分解(目標を無害なサブ質問に分割)、コンテキスト活用(ターゲットの言葉に基づいて構築)、権威のシミュレーション、感情的なフレーミング、段階的な正常化
  • 主な特徴: max_backtracks はHydraがターンを消去して再試行できる回数を制御する
  • ステートフルモード: ターゲットがメッセージを取り消せない場合は stateful: true を設定(バックトラッキングを無効化)
  • 強み: ターゲットの会話履歴をクリーンに保つ — ターゲットは失敗したアプローチを一切見ることがなく、防御的なエスカレーションを防ぐ```bash augustus scan rest.Rest
    --probe hydra.Hydra
    --config-file hydra.yaml
    --html report.html -v
#### いたずら好きなユーザー

いたずら好きなユーザーは、無邪気で好奇心旺盛な人物を模倣し、自然な会話を通じてAIの境界線を巧妙に探ります。敵対的戦略とは異なり、攻撃者は一見無害な関与を通じて禁止トピックへと徐々に移行するカジュアルユーザーとして振る舞います。

- **着想**: [Tau-bench](https://github.com/sierra-research/tau-bench) および promptfoo のいたずら好きユーザー戦略
- **アプローチ**: ラポール形成フェーズ → 境界探り → 積極的な押し込み
- **7つのテクニック**: 素朴な好奇心、意図的な誤解、社会的証明、段階的な漂流、感情的な訴え、許可の想定、再文脈化
- **目標別プレイブック**: システム指示の抽出、秘密/フラグの発見、コンテンツポリシーの回避のための組み込みスクリプト
- **デフォルトのターン数**: 5(他の戦略よりも少ない — この微妙なアプローチは迅速に効果を発揮するか、まったく効かないかのどちらか)
- **強み**: 明白な敵対パターンに抵抗するよう訓練されたモデルに対して効果的 — カジュアルなペルソナが「攻撃検出」ヒューリスティックを回避する```bash
augustus scan rest.Rest \
  --probe mischievous.MischievousUser \
  --config-file mischievous.yaml \
  --html report.html -v

戦略選択ガイド

戦略ターン数スタイル最適な状況コスト
crescendo.Crescendo10段階的エスカレーショントーントラッキング型安全フィルターを備えたモデル中程度(10ターン × 3 LLM呼び出し)
goat.Goat10攻撃的な手法切り替え素早い結果、フレーミングのトリックに弱いモデル中〜高(手法推論のオーバーヘッド)
hydra.Hydra10拒否時のバックトラッキング頻繁に拒否する頑固なモデル高(バックトラッキングによる再試行増加)
mischievous.MischievousUser5カジュアルな人物調査敵対的パターンに対して訓練されたモデル低(5ターン、控えめなアプローチ)

クイック判断:

  • Crescendoから始める — 最も汎用的な戦略です
  • Crescendoが遅すぎる場合はGOATを試す(通常3〜5ターンで成功します)
  • ターゲットが頻繁に拒否する場合はHydraを使用する(バックトラッキングにより会話をクリーンに保ちます)
  • 強い敵対的パターン検出を持つターゲットにはMischievousを使用する(人物調査がヒューリスティックを回避します)

マルチターン設定

4つの戦略はすべて同じ設定構造を共有しています:```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` | (必須) | 攻撃者が達成しようとする目的 |
| `max_turns` | 10 | 停止前の最大会話ターン数 |
| `success_threshold` | 0.8 | 早期終了をトリガーする判定スコア (0.0-1.0) |
| `max_refusal_retries` | 10 | ターゲットが拒否した場合のターンごとの言い換え試行回数 |
| `attack_max_attempts` | 5 | 攻撃者LLMのJSON解析失敗時の再試行回数 |
| `use_secondary_judge` | true | 偽陰性を捕捉するためのセカンダリ判定官を有効化 |
| `max_backtracks` | 10 | 拒否時のターンレベルのロールバック (Hydraのみ) |
| `enable_fast_refusal` | true | LLM判定官呼び出し前のパターンベースの拒否検出 |
| `enable_scan_memory` | false | テストケース間の学習(プローブ間で戦術を共有) |
| `stateful` | false | ステートフルなターゲット向けにバックトラッキングを無効化 |
| `exclude_target_output` | false | 攻撃者へのフィードバックからターゲット応答を隠す(プライバシーモード) |
| `attacker_model` | (自動) | コンテキストウィンドウサイズ変更のため攻撃者モデル名を上書き |

#### マルチターントラブルシューティング

| 症状 | 考えられる原因 | 修正方法 |
|---------|-------------|-----|
| `no turns completed (attacker_parse_failures=N)` | 攻撃者LLMが無効なJSONを返している | より強力な攻撃者モデル(GPT-4、Claude Opus)を使用してください。`attack_max_attempts` を増やしてください。 |
| `no turns completed (target_empty=N)` | ターゲットが空またはnullの応答を返している | ターゲットエンドポイントが応答しているか確認してください。REST設定テンプレートを確認してください。 |
| All turns score 0.0 | 目標が曖すぎる、または攻撃者が関与していない | `goal` をより具体的にしてください。別の戦略を試してください。 |
| High scores but no success | `success_threshold` が高すぎる | `success_threshold` を0.8から0.6〜0.7に下げてください |
| Runs too long / expensive | ターン数と再試行が多すぎる | `max_turns` を減らしてください(5を試す)。`enable_fast_refusal: true` に設定してください。 |
| Hydra keeps backtracking | ターゲットがすべてを拒否する | `stateful: true` を試すか、Mischievous戦略に切り替えてください |

## アーキテクチャ```
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

主要な設計上の決定

  • 同時スキャンerrgroup を使用した制限付きゴルーチンプール
  • プラグイン形式の登録:プローブ、ジェネレーター、検出器、バフ、ハーネスに対する Go の init() 関数を使用
  • 反復攻撃エンジン:マルチストリーム会話管理、候補削減、PAIR/TAP の評価者ベースのスコアリング
  • マルチターン攻撃エンジン:永続的な会話履歴、拒否検出、Crescendo/GOAT の戦略非依存設計
  • YAML プローブテンプレート(Nuclei スタイル):宣言的なプローブ定義と Go ベースのプローブ
  • Aho-Corasick 事前フィルタリング:検出器での高速キーワードマッチング

設定

YAML 設定ファイル

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"

### 環境変数```bash
# API Keys
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export COHERE_API_KEY="..."

# Debug mode
export AUGUSTUS_DEBUG=true

プロキシ設定

HTTPトラフィックをプロキシ(例: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検証はプロキシ検査のために自動的に無効化されます
- HTTP/2サポートは最新のAPIに対して有効化されます
- Server-Sent Events (SSE) レスポンスは自動的に検出され解析されます

### CLIリファレンス```
Usage: augustus scan <generator> [flags]

Arguments:
  <generator>                 Generator name (e.g., openai.OpenAI, anthropic.Anthropic)

Probe Selection (choose one):
  --probe, -p                 Probe name (repeatable)
  --probes-glob               Comma-separated glob patterns (e.g., "dan.*,goodside.*")
  --all                       Run all registered probes

Detector Selection:
  --detector                  Detector name (repeatable)
  --detectors-glob            Comma-separated glob patterns

Buff Selection:
  --buff, -b                  Buff names to apply (repeatable)
  --buffs-glob                Comma-separated buff glob patterns (e.g., "encoding.*")

Configuration:
  --config-file               Path to YAML config file
  --config, -c                JSON config for generator

Execution:
  --harness                   Harness name (default: probewise.Probewise)
  --timeout                   Overall scan timeout (default: 30m)
  --probe-timeout             Per-probe timeout (default: 5m)
  --concurrency               Max concurrent probes (default: 10, env: AUGUSTUS_CONCURRENCY)

Output:
  --format, -f                Output format: table, json, jsonl (default: table)
  --output, -o                JSONL output file path
  --html                      HTML report file path
  --verbose, -v               Verbose output

Global:
  --debug, -d                 Enable debug mode

コマンド:```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)

**終了コード:**

| コード | 意味 |
|------|---------|
| 0 | 成功 - スキャン完了 |
| 1 | スキャン/ランタイムエラー |
| 2 | 検証/使用方法エラー |

## FAQ

### Augustusはgarakとどう違うのですか?

Augustusは、[garak](https://github.com/NVIDIA/garak) (NVIDIAのPythonベースLLM脆弱性スキャナー) に触発されたGoネイティブの再実装です。主な違いは以下の通りです:
- **パフォーマンス**: Goバイナリ vs Pythonインタプリタ — より高速な実行と低メモリ使用量
- **配布**: ランタイム依存関係のない単一バイナリ vs pipインストールが必要なPythonパッケージ
- **並行性**: Goのgoroutineプール (プローブ間並列処理) vs Pythonのmultiprocessingプール (プローブ内並列処理)
- **プローブカバレッジ**: Augustusは210以上のプローブを搭載; garakは160以上のプローブを持ち、より長い研究実績と公開論文 (arXiv:2406.11036) があります
- **プロバイダカバレッジ**: Augustusは28のプロバイダを搭載; garakは22のプロバイダモジュールにわたって35以上のジェネレータバリエーションを持っています

### APIキーなしでローカルモデルをテストできますか?

はい!ローカルモデルテストにはOllama統合を使用してください:```bash
# No API key needed
augustus scan ollama.OllamaChat \
  --probe dan.Dan_11_0 \
  --config '{"model":"llama3.2:3b"}'

カスタムプローブを追加するには?

  1. internal/probes/ に新しいGoファイルを作成
  2. probes.Probe インターフェースを実装
  3. init() 関数内で registry.RegisterProbe() を使用して登録
  4. 再ビルド: make build

詳細は CONTRIBUTING.md を参照してください。

サポートされている出力形式は?

Augustusは4つの出力形式をサポートしています:

形式フラグユースケース
テーブル--format table人間が読みやすいターミナル出力
JSON--format json解析用の単一JSONオブジェクト
JSONL--format jsonlストリーミング用の行区切りJSON
HTML--html report.html関係者向けのビジュアルレポート

複数のモデルを一度にテストするには?```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は本番環境に適していますか?

はい、Augustusは本番環境での使用を想定して設計されています。以下の機能を備えています:
- 設定可能な制限付きの並行スキャン
- APIクォータを尊重するレート制限
- 長時間実行プローブのタイムアウト処理
- 一時的な障害に対するリトライロジック
- 可観測性のための構造化ログ

## トラブルシューティング

### エラー: 「APIレート制限超過」

**原因**: 同時リクエスト数または1分あたりのリクエスト数が多すぎる。

**解決策**:
1. 同時実行数を減らす: `--concurrency 5`
2. YAML設定でプロバイダ固有のレート制限設定を使用する:   ```yaml
   generators:
     openai.OpenAI:
       rate_limit: 10  # requests per minute

エラー: "context deadline exceeded" または "timeout"

原因: 複雑なプローブ(TAPやPAIRなど)がデフォルトのタイムアウトを超えました。

解決方法:```bash augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml

### エラー:「無効なAPIキー」または「認証に失敗しました」

**原因**: API認証情報が不足している、または無効です。

**解決方法**:
1. 環境変数が設定されていることを確認します: `echo $OPENAI_API_KEY`
2. 設定ファイルのタイプミスを確認します
3. APIキーに必要な権限があることを確認します
4. Ollamaの場合、サービスが起動していることを確認します: `ollama serve`

### エラー:「プローブが見つかりません」または「検出器が見つかりません」

**原因**: 名前のタイプミス、またはプローブが登録されていません。

**解決方法**:```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

スキャンが結果を生成しない

原因: 検出器がレスポンスと一致しなかったか、出力が書き込まれていません。

解決策:

  1. --verbose を使用して詳細な出力を表示する
  2. 検出器がプローブタイプと一致していることを確認する
  3. 出力ファイルパスが書き込み可能であることを確認する

コントリビューション

貢献を歓迎します!詳細は CONTRIBUTING.md をご覧ください:

  • 新しい脆弱性プローブの追加
  • 新しい検出器実装の作成
  • LLMプロバイダー統合の追加
  • テストガイドライン
  • コードスタイル要件

開発```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

### ベンチマーク環境 (DevPod)

LLMのベンチマーク用のすぐに使えるクラウド開発環境が、[DevPod](https://devpod.sh/) で提供されています。この環境では、Augustus、Ollama、Go、およびすべての依存関係がプリインストールされたリモートコンテナがプロビジョニングされます。```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

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

環境は標準の[dev container](https://containers.dev/)としても動作します。リポジトリをVS CodeまたはCursorで開き、`.devcontainer/`からCPUまたはGPU構成を選択してください。

## セキュリティ

Augustusは**許可されたセキュリティテスト専用**に設計されています。

- Augustusは指定したLLMに対して敵対的プロンプトを送信します。必ず承認を得ていることを確認してください。
- 自分が所有していない、または明示的な許可を得ていないシステムをテストしないでください。
- 一部のプローブは(セーフティフィルターをテストするために)意図的に攻撃的なコンテンツを生成します。
- 結果にはターゲットLLMによって生成された有害なコンテンツが含まれる可能性があります。

セキュリティの問題は[GitHub Issues](https://github.com/praetorian-inc/augustus/issues)で報告してください。

## サポート

Augustusが役立つと感じられたなら、以下のご協力をお願いします。

- GitHubで**スター**を付ける
- バグや機能リクエストは[イシューを開く](https://github.com/praetorian-inc/augustus/issues)
- 新しいプローブ、検出器、プロバイダー統合の[貢献](https://github.com/praetorian-inc/augustus/blob/HEAD/CONTRIBUTING.md)

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

## ライセンス

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

---

**Praetorianが制作** - オフェンシブセキュリティソリューション

カテゴリ