返回更新列表
新发布Sep 4, 2026

augustus v0.14.24

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作为裁判、HarmJudge (arXiv:2511.15304)、Perspective API、不安全内容检测
7种Buff变换编码、改写、诗歌(5种格式、3种策略)、低资源语言翻译、大小写变换
灵活输出表格、JSON、JSONL和HTML报告格式
生产就绪并发扫描、速率限制、重试逻辑、超时处理
单一二进制文件基于Go的工具可编译为单个可移植可执行文件
可扩展通过Go init()函数实现插件式注册

攻击类别

  • 越狱攻击:DAN、DAN 11.0、AIM、AntiGPT、Grandma、ArtPrompts
  • 提示注入:编码(Base64、ROT13、摩尔斯电码)、标签走私、FlipAttack、前缀/后缀注入
  • 对抗性示例:GCG、PAIR、AutoDAN、TAP(攻击提示树)、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.27.0或更高版本。```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 云函数          |
| 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 变换

应用提示变换来测试规避技术:```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 作为评判者或专用检测器分析响应
  5. 结果记录:为每次尝试评分,并以请求的格式生成输出
  6. 攻击引擎:对于迭代式探针(PAIR、TAP),单轮攻击引擎在多次迭代中优化提示,并带有候选剪枝和基于评判者的评分
  7. 多轮引擎:对于对话式探针(Crescendo、GOAT),多轮引擎在轮次间维护与目标的完整对话历史,并带有拒绝检测和动态适应

多轮攻击策略

多轮攻击与目标 LLM 保持持续对话,利用模型可能在多轮中逐步披露信息这一事实,而这些信息在单次提示中会被拒绝。多轮引擎使用三个 LLM:攻击者(生成问题)、目标(被测系统)和评判者(评估进度并检测拒绝)。

Crescendo

Crescendo 使用渐进式升级(登门槛技术)将对话从良性话题缓慢转向被禁止的目标。

  • 论文Russinovich 等人,2024
  • 方法:从真正良性的、教育性的问题开始,并在多轮中逐步提高具体性
  • 升级模式:历史背景 → 技术机制 → 具体细节 → 以自然追问形式呈现的直接请求
  • 优势:对跟踪对话语气的模型有效——渐进式转变可避免触发安全过滤器```bash augustus scan rest.Rest
    --probe crescendo.Crescendo
    --config-file crescendo.yaml
    --html report.html -v
#### GOAT(生成式对抗性智能体测试器)

GOAT 采用激进、自适应的方式,结合 7 种对抗性技术与攻击链思维推理,根据有效或失败的策略动态切换攻击手法。

- **论文**:[Pavlova 等人,2024](https://arxiv.org/abs/2410.01606)
- **方法**:从第 1 轮起即通过间接框架瞄准目标,从不直接向目标提及真实意图
- **7 种技术**,涵盖 3 个类别:
  - *输出操纵*:拒绝抑制、响应预置
  - *安全响应干扰项*:双重响应、话题拆分、意图反转
  - *虚构场景*:角色修改、假设情境
- **攻击链思维**:每一轮攻击者在构造消息前,都会依次进行 观察 → 思考 → 策略 → 响应 的推理
- **技术叠加**:单轮攻击中可组合多种技术,以增强攻击效果
- **优势**:通过在不同根本性策略间激进切换,在更少的轮次内(通常 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
#### 恶意用户(Mischievous User)

恶意用户模拟一个天真、好奇的人,通过自然对话巧妙地试探 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(GOAT 通常在 3-5 轮内成功)
  • 如果目标频繁拒绝,使用 Hydra(回溯保持对话干净)
  • 对于具有强对抗性模式检测的目标,使用 Mischievous(角色绕过启发式规则)

多轮配置

所有四种策略共享相同的配置结构:```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)` | 目标返回空/空值响应 | 检查目标端点是否正常响应。验证 REST 配置模板。 |
| 所有轮次得分均为 0.0 | 目标过于模糊或攻击者未有效参与 | 使 `goal` 更具体。尝试不同的策略。 |
| 得分高但未成功 | `success_threshold` 过高 | 将 `success_threshold` 从 0.8 降低至 0.6-0.7 |
| 运行时间过长/成本过高 | 轮次和重试过多 | 减少 `max_turns`(尝试设为 5)。设置 `enable_fast_refusal: true`。 |
| Hydra 持续回退 | 目标拒绝所有请求 | 尝试 `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 使用有界 goroutine 池
  • 插件式注册,利用 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

代理配置

通过代理(例如 Burp Suite)路由 HTTP 流量以进行检查:```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 验证
- 为现代 API 启用 HTTP/2 支持
- 自动检测并解析服务器发送事件(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 | 验证/使用错误 |

## 常见问题

### Augustus 与 garak 相比如何?

Augustus 是受 [garak](https://github.com/NVIDIA/garak)(NVIDIA 基于 Python 的 LLM 漏洞扫描器)启发而用 Go 原生重新实现的工具。主要区别:
- **性能**:Go 二进制文件 vs Python 解释器 — 执行更快,内存占用更低
- **分发**:单个二进制文件,无运行时依赖 vs 通过 pip install 安装的 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 支持四种输出格式:

格式标志使用场景
表格--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. 降低并发数:`--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 上为它点个 **star**
- [提交 issue](https://github.com/praetorian-inc/augustus/issues) 报告错误或功能请求
- [贡献](https://github.com/praetorian-inc/augustus/blob/main/CONTRIBUTING.md)新的探针、检测器或提供商集成

[![Star History Chart](https://api.star-history.com/svg?repos=praetorian-inc/augustus&type=Date)](https://star-history.com/#praetorian-inc/augustus&Date)

## 许可证

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

---

**由 [Praetorian](https://www.praetorian.com/) 构建** - 进攻性安全解决方案

分类