Назад к обновлениям
New releaseAug 17, 2026

augustus v0.14.20

LLM security testing framework для обнаружения инъекций промптов, джейлбрейков и состязательных атак — 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
Один бинарный файлДаНетНет
Параллельное сканированиеПулы горутинПулы многопроцессностиДа
Провайдеры LLM2835+80+
Типы зондов210+160+119 плагинов + 36 стратегий
Ориентация на предприятияДаИсследованияДа

Возможности

ФункцияОписание
210+ зондов уязвимостей47 категорий атак: джейлбрейки, инъекции подсказок, состязательные примеры, извлечение данных, бенчмарки безопасности, атаки на агентов и многое другое
28 провайдеров LLMOpenAI, Anthropic, Azure, Bedrock, Vertex AI, Ollama и ещё 22 с 43 вариантами генераторов
90+ детекторовСопоставление с образцом, LLM-как-судья, HarmJudge (arXiv:2511.15304), Perspective API, обнаружение небезопасного контента
7 преобразований буфераКодирование, перефразирование, поэзия (5 форматов, 3 стратегии), перевод на низкоресурсные языки, преобразования регистра
Гибкий выводТабличный, JSON, JSONL и HTML-отчеты
Готовность к производствуПараллельное сканирование, ограничение скорости, логика повторных попыток, обработка таймаутов
Один бинарный файлИнструмент на Go компилируется в один портативный исполняемый файл
РасширяемостьРегистрация по плагинному принципу через 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, escape-последовательности ANSI, веб-инъекции (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`       | Модели OpenAI, размещённые в Azure |
| 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` | API Inference, эндпоинты, пайплайны, мультимодальные модели HF |
| Together AI        | `together.Together`       | Быстрый вывод для OSS-моделей  |
| Anyscale           | `anyscale.Anyscale`       | Хостинг Llama и Mistral        |
| Groq               | `groq.Groq`               | Сверхбыстрый вывод LPU         |
| Mistral            | `mistral.Mistral`         | API модели Mistral             |
| 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        |
| IBM watsonx        | `watsonx.WatsonX`         | Платформа IBM watsonx.ai       |
| LangChain          | `langchain.LangChain`     | Обёртка LLM LangChain          |
| LangChain Serve    | `langchain_serve.LangChainServe` | Эндпоинты LangChain Serve |
| Rasa               | `rasa.RasaRest`           | Диалоговый ИИ Rasa             |
| 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

### Усиливающие преобразования

Применяйте преобразования промптов для тестирования техник обхода защиты:```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: API-ключ для замены плейсхолдера $KEY
  • proxy: URL HTTP-прокси для проверки трафика

Расширенные параметры```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. Выбор проб: Выбор проб по имени, glob-шаблону или с помощью --all
  2. Преобразование Buff: Опциональное преобразование запросов (кодирование, перефразирование, перевод, поэтизация)
  3. Вызов генератора: Отправка состязательных запросов целевой LLM через интеграцию с провайдером
  4. Анализ детектора: Анализ ответов с использованием сопоставления шаблонов, LLM-судьи или специализированных детекторов
  5. Запись результатов: Оценка каждой попытки и вывод в запрошенном формате
  6. Механизм атаки: Для итеративных проб (PAIR, TAP) одношаговый механизм атаки уточняет запросы на итерациях с отсевом кандидатов и оценкой на основе судьи
  7. Многошаговый механизм: Для диалоговых проб (Crescendo, GOAT) многошаговый механизм сохраняет полную историю разговора с целью на всех шагах, с обнаружением отказов и динамической адаптацией

Многошаговые стратегии атаки

Многошаговые атаки поддерживают постоянный диалог с целевой LLM, используя тот факт, что модели могут раскрывать информацию постепенно на разных шагах, которую они бы отказались предоставить в одном запросе. Многошаговый механизм использует три 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)
- **Подход**: Нацеливается на объектив с первого хода, используя косвенную формулировку, никогда не упоминает цель напрямую адресату
- **7 техник** в 3 категориях:
  - *Манипуляция выводом*: Подавление отказа, Прайминг ответа
  - *Отвлекающие факторы безопасного ответа*: Двойной ответ, Разделение темы, Противоположное намерение
  - *Вымышленные сценарии*: Модификация личности, Гипотетический
- **Chain-of-Attack-Thought**: Каждый ход атакующий рассуждает через Наблюдение → Мысль → Стратегию → Ответ перед тем, как сформулировать сообщение
- **Стекинг техник**: Несколько техник могут быть объединены в одном ходу для усиления эффекта
- **Сила**: Достигает высокого процента успеха за меньшее количество ходов (обычно 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
#### Озорной пользователь

Озорной пользователь имитирует невинного любопытного человека, который тонко проверяет границы ИИ с помощью естественного разговора. В отличие от состязательных стратегий, личность атакующего — это обычный пользователь, который через невинное взаимодействие постепенно уходит в запретные темы.

- **Вдохновлён**: [Tau-bench](https://github.com/sierra-research/tau-bench) и стратегией mischievous-user из promptfoo
- **Подход**: Фаза установления доверия → зондирование границ → настойчивое давление
- **7 методов**: Наивное любопытство, умышленное непонимание, социальное доказательство, постепенное смещение, эмоциональный призыв, предполагаемое разрешение, реконтекстуализация
- **Сценарии под конкретные цели**: Встроенные скрипты для извлечения системных инструкций, поиска секретов/флагов и обхода политики контента
- **Раундов по умолчанию**: 5 (меньше, чем у других стратегий — тонкий подход либо срабатывает быстро, либо не срабатывает вовсе)
- **Сильная сторона**: Эффективен против моделей, обученных сопротивляться очевидным шаблонам атак — неформальная персона обходит эвристики «обнаружения атак»```bash
augustus scan rest.Rest \
  --probe mischievous.MischievousUser \
  --config-file mischievous.yaml \
  --html report.html -v

Strategy Selection Guide

StrategyШагиСтильЛучше всего дляСтоимость
crescendo.Crescendo10Постепенная эскалацияМодели с фильтрами безопасности на основе отслеживания тонаСредняя (10 шагов × 3 вызова LLM)
goat.Goat10Агрессивная смена техникБыстрый результат, модели, подверженные трюкам с обрамлениемСредне-высокая (накладные расходы на рассуждение о техниках)
hydra.Hydra10Откат при отказеУпрямые модели, часто отказывающиеВысокая (откат добавляет повторные попытки)
mischievous.MischievousUser5Зондирование личности в неформальной манереМодели, обученные против состязательных шаблоновНизкая (5 шагов, тонкий подход)

Быстрое решение:

  • Начните с Crescendo — это наиболее универсальная стратегия
  • Попробуйте GOAT, если Crescendo слишком медленный (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 | Повторные попытки при ошибках парсинга JSON у LLM атакующего |
| `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. |
| Все шаги имеют оценку 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

Key Design Decisions

  • Параллельное сканирование с пулами горутин с ограничением через errgroup
  • Регистрация в стиле плагинов с использованием функций init() Go для проб, генераторов, детекторов, баффов и обвязок
  • Итеративный движок атак с управлением многоструйными диалогами, отсевом кандидатов и оценкой на основе судьи для PAIR/TAP
  • Многораундовый движок атак с постоянной историей диалога, обнаружением отказов, независимым от стратегии дизайном для Crescendo/GOAT
  • YAML-шаблоны проб (стиль Nuclei) для декларативных определений проб наряду с пробами на Go
  • Предварительная фильтрация Ахо-Корасик для быстрого сопоставления ключевых слов в детекторах

Конфигурация

Файл конфигурации 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 | Ошибка проверки/использования |

## Часто задаваемые вопросы

### Как Augustus сравнивается с garak?

Augustus — это реализация на Go, вдохновлённая [garak](https://github.com/NVIDIA/garak) (сканером уязвимостей LLM от NVIDIA на Python). Основные различия:
- **Производительность**: бинарный файл Go против интерпретатора Python — более быстрое выполнение и меньшее потребление памяти
- **Распространение**: один бинарный файл без зависимостей во время выполнения против пакета Python с pip install
- **Параллелизм**: пулы горутин Go (параллелизм между пробами) против пулов multiprocessing Python (параллелизм внутри пробы)
- **Охват проб**: Augustus содержит более 210 проб; garak — более 160 проб с более длительной исследовательской историей и опубликованной статьёй (arXiv:2406.11036)
- **Охват провайдеров**: Augustus поддерживает 28 провайдеров; garak — более 35 вариантов генераторов в 22 модулях провайдеров

### Можно ли тестировать локальные модели без ключей API?

Да! Используйте интеграцию с Ollama для тестирования локальных моделей:```bash
# No API key needed
augustus scan ollama.OllamaChat \
  --probe dan.Dan_11_0 \
  --config '{"model":"llama3.2:3b"}'

Как добавить пользовательские пробы?

  1. Создайте новый Go-файл в internal/probes/
  2. Реализуйте интерфейс probes.Probe
  3. Зарегистрируйте с помощью registry.RegisterProbe() в функции init()
  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 rate limit exceeded"

**Причина**: Слишком много параллельных запросов или запросов в минуту.

**Решения**:
1. Уменьшите параллельность: `--concurrency 5`
2. Используйте настройки ограничения скорости, специфичные для провайдера, в YAML-конфигурации:   ```yaml
   generators:
     openai.OpenAI:
       rate_limit: 10  # requests per minute

Ошибка: "контекст превысил срок ожидания" или "тайм-аут"

Причина: Сложные пробы (например, TAP или PAIR) превышают тайм-аут по умолчанию.

Решение:```bash augustus scan openai.OpenAI
--probe tap.TAPv1
--timeout 60m
--config-file config.yaml

### Error: "invalid API key" or "authentication failed"

**Cause**: Отсутствуют или недействительны учетные данные API.

**Solutions**:
1. Проверьте, что установлена переменная окружения: `echo $OPENAI_API_KEY`
2. Проверьте опечатки в файле конфигурации
3. Убедитесь, что ключ API имеет необходимые разрешения
4. Для Ollama убедитесь, что служба запущена: `ollama serve`

### Error: "probe not found" or "detector not found"

**Cause**: Опечатка в имени или зонд не зарегистрирован.

**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

Сканирование не дает результатов

Причина: Детектор не сопоставился ни с одним ответом, или вывод не был записан.

Решения:

  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 и выберите конфигурацию CPU или GPU из `.devcontainer/`.

## Безопасность

Augustus предназначен **только для авторизованного тестирования безопасности**.

- Augustus отправляет состязательные промпты выбранным вами LLM — всегда убедитесь, что у вас есть разрешение
- Никогда не тестируйте системы, которыми вы не владеете или на тестирование которых у вас нет явного разрешения
- Некоторые зонды по определению генерируют оскорбительный контент (для тестирования фильтров безопасности)
- Результаты могут содержать вредоносный контент, созданный целевыми LLM

Сообщайте о проблемах безопасности через [GitHub Issues](https://github.com/praetorian-inc/augustus/issues).

## Поддержка

Если вы находите Augustus полезным, пожалуйста, рассмотрите:

- Поставьте ему **звезду** на GitHub
- [Открыть issue](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](https://www.praetorian.com/)** - Offensive Security Solutions

Категории