Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
augustus — LLM security testing framework для обнаружения инъекций промптов, джейлбрейков и состязательных атак — 190+ проб, 28 провайдеров, один Go бинарник | Kitploit
Инструменты/GitHubGitHub/praetorian-inc/augustus
Сканеры уязвимостейФаззингТестирование на ПроникновениеОбучение и ОбразованиеБезопасность ИИСостязательная Атака
GitHubpraetorian-inc/augustus

augustus

LLM security testing framework для обнаружения инъекций промптов, джейлбрейков и состязательных атак — 190+ проб, 28 провайдеров, один Go бинарник

Репозиторий
27335323 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Augustus - LLM vulnerability scanner for prompt injection, jailbreak, and adversarial attack testing

# Augustus - Сканер уязвимостей LLM

> Тестируйте большие языковые модели на устойчивость к 210+ атакующим сценариям, охватывающим prompt injection, джейлбрейки, эксплойты кодирования и извлечение данных.

[![CI](https://github.com/praetorian-inc/augustus/actions/workflows/ci.yaml/badge.svg)](https://github.com/praetorian-inc/augustus/actions/workflows/ci.yaml)
[![Go Version](https://img.shields.io/github/go-mod/go-version/praetorian-inc/augustus)](go.mod)
[![License](https://img.shields.io/github/license/praetorian-inc/augustus)](LICENSE)
[![Go Report Card](https://goreportcard.com/badge/github.com/praetorian-inc/augustus)](https://goreportcard.com/report/github.com/praetorian-inc/augustus)
[![GitHub Release](https://img.shields.io/github/v/release/praetorian-inc/augustus?include_prereleases&sort=semver)](https://github.com/praetorian-inc/augustus/releases)

**Augustus** — это сканер уязвимостей LLM на базе Go, предназначенный для специалистов по безопасности. Он тестирует большие языковые модели на устойчивость к широкому спектру атакующих сценариев, интегрируется с 28 LLM-провайдерами и формирует практические отчеты об уязвимостях.

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

## Содержание

- [Почему Augustus](#почему-augustus)
- [Возможности](#возможности)
- [Быстрый старт](#быстрый-старт)
- [Поддерживаемые провайдеры](#поддерживаемые-провайдеры)
- [Использование](#использование)
  - [Одиночный зонд](#одиночный-зонд)
  - [Несколько зондов](#несколько-зондов)
  - [Преобразования Buff](#преобразования-buff)
  - [Форматы вывода](#форматы-вывода)
  - [Пользовательские REST-конечные точки](#пользовательские-rest-конечные-точки)
- [Как это работает](#как-это-работает)
- [Архитектура](#архитектура)
- [Конфигурация](#конфигурация)
- [FAQ](#faq)
- [Устранение неполадок](#устранение-неполадок)
- [Участие в разработке](#участие-в-разработке)
- [Безопасность](#безопасность)
- [Поддержка](#поддержка)
- [Лицензия](#лицензия)

## Почему Augustus

| Возможность | Augustus | garak | promptfoo |
|---------|----------|-------|-----------|
| Язык | Go | Python | TypeScript |
| Один бинарный файл | Да | Нет | Нет |
| Параллельное сканирование | Пул горутин | Пул многопроцессорности | Да |
| LLM-провайдеры | 28 | 35+ | 80+ |
| Типы зондов | 210+ | 160+ | 119 плагинов + 36 стратегий |
| Ориентация на предприятия | Да | Исследования | Да |

## Возможности

| Возможность | Описание |
|---------|-------------|
| **210+ зондов уязвимостей** | 47 категорий атак: джейлбрейки, prompt injection, состязательные примеры, извлечение данных, бенчмарки безопасности, атаки на агентов и многое другое |
| **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 компилируется в один переносимый исполняемый файл |
| **Расширяемость** | Регистрация по принципу плагинов через функции `init()` в Go |

### Категории атак

- **Джейлбрейк-атаки**: DAN, DAN 11.0, AIM, AntiGPT, Grandma, ArtPrompts
- **Prompt injection**: Кодирование (Base64, ROT13, азбука Морзе), контрабанда тегов, FlipAttack, инъекции префиксов/суффиксов
- **Состязательные примеры**: GCG, PAIR, AutoDAN, TAP (Tree of Attack Prompts), TreeSearch, DRA
- **Многоходовые атаки**: Crescendo (постепенная эскалация), GOAT (адаптивное переключение техник)
- **Извлечение данных**: утечка API-ключей, галлюцинации пакетов, извлечение PII, LeakReplay
- **Манипуляция контекстом**: отравление RAG, переполнение контекста, мультимодальные атаки, продолжение, расхождение
- **Эксплойты форматов**: инъекция Markdown, атаки на парсинг YAML/JSON, ANSI-escape, веб-инъекции (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 reasoning |
| 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` | HF Inference API, эндпоинты, пайплайны, мультимодальные |
| 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 Cloud Functions   |
| NeMo Guardrails   | `guardrails.NeMoGuardrails` | NVIDIA NeMo Guardrails        |
| 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
```
### Преобразования 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`: Ключ 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"}'
```
## How It Works

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

### Многоходовые стратегии атак

Многоходовые атаки поддерживают постоянный диалог с целевой LLM, используя тот факт, что модели могут раскрывать информацию постепенно на протяжении ходов, которую они отказались бы предоставить в одном запросе. Многоходовой механизм использует три LLM: **атакующего** (генерирует вопросы), **цель** (тестируемую систему) и **судью** (оценивает прогресс и обнаруживает отказы).

#### Crescendo

Crescendo использует постепенную эскалацию (техника «нога в двери»), чтобы медленно переводить разговор от безобидных тем к запретной цели.

- **Статья**: [Russinovich et al., 2024](https://arxiv.org/abs/2404.01833)
- **Подход**: Начинается с действительно безобидных, образовательных вопросов и постепенно повышает конкретность на протяжении многих ходов
- **Схема эскалации**: Исторический контекст → технические механизмы → конкретные детали → прямые запросы, оформленные как естественные продолжения
- **Сила**: Эффективен против моделей, отслеживающих тон разговора — постепенный сдвиг позволяет избежать срабатывания фильтров безопасности```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) и стратегией озорного пользователя от promptfoo
- **Подход**: Фаза установления контакта → проверка границ → настойчивое давление
- **7 техник**: Наивное любопытство, намеренное непонимание, социальное доказательство, постепенное смещение темы, эмоциональное обращение, предполагаемое разрешение, реконтекстуализация
- **Сценарии под конкретные цели**: Встроенные скрипты для извлечения системных инструкций, поиска секретов/флагов и обхода политики контента
- **Ходы по умолчанию**: 5 (меньше, чем у других стратегий — тонкий подход либо срабатывает быстро, либо не срабатывает вовсе)
- **Сила**: Эффективна против моделей, обученных сопротивляться очевидным состязательным шаблонам — обыденный персонаж обходит эвристики «обнаружения атак»```bash
augustus scan rest.Rest \
  --probe mischievous.MischievousUser \
  --config-file mischievous.yaml \
  --html report.html -v
```
#### Руководство по выбору стратегии

| Стратегия | Ходы | Стиль | Для чего лучше всего | Стоимость |
|----------|-------|-------|----------|------|
| `crescendo.Crescendo` | 10 | Постепенная эскалация | Модели с фильтрами безопасности, отслеживающими тон | Средняя (10 ходов × 3 вызова LLM) |
| `goat.Goat` | 10 | Агрессивная смена техник | Быстрые результаты, модели уязвимые к приёмам фрейминга | Средне-высокая (накладные расходы на рассуждения о техниках) |
| `hydra.Hydra` | 10 | Возврат назад при отказе | Упрямые модели, которые часто отказывают | Высокая (возврат добавляет повторные попытки) |
| `mischievous.MischievousUser` | 5 | Непринуждённое зондирование личности | Модели, обученные против состязательных паттернов | Низкая (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
```
### Ключевые проектные решения

- **Параллельное сканирование** с ограниченными пулами горутин через `errgroup`
- **Регистрация в стиле плагинов** с использованием Go-функций `init()` для проб, генераторов, детекторов, баффов и обвязок (harnesses)
- **Итеративный движок атак** с управлением много-поточными диалогами, отсечением кандидатов и оценкой на основе судьи для 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
```
### Proxy Configuration

Направьте 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 <generator>     # Run vulnerability scan
augustus completion <shell>   # Generate shell completion (bash, zsh, fish)
```
**Коды выхода:**

| Код | Значение |
|------|---------|
| 0 | Успех — сканирование завершено |
| 1 | Ошибка сканирования/выполнения |
| 2 | Ошибка проверки/использования |

## FAQ

### Чем Augustus отличается от garak?

Augustus — это нативная реализация на Go, вдохновлённая [garak](https://github.com/NVIDIA/garak) (сканером уязвимостей LLM от NVIDIA на Python). Ключевые различия:
- **Производительность**: бинарный файл Go против интерпретатора Python — более быстрое выполнение и меньшее потребление памяти
- **Распространение**: один бинарный файл без зависимостей времени выполнения против Python-пакета с установкой через pip
- **Параллелизм**: пулы горутин 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](https://github.com/praetorian-inc/augustus/blob/main/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
```
### Ошибка: "invalid API key" или "authentication failed"

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

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

### Ошибка: "probe not found" или "detector not found"

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

**Решение**:```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](https://github.com/praetorian-inc/augustus/blob/main/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 отправляет adversarial-запросы указанным вами 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/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/)** — решения в области наступательной безопасности
Скачать инструмент