MLSecRecommendations
Глава 07 · Безопасность

Рекомендации ИБ: Red Teaming, тестирование моделей и CI/CD интеграция

~51 мин51 мин осталось 11 418 словОбновлено 13 мая 2026 г.red teamingGarakPyRITPromptfooadversarialbug bounty

Рекомендации ИБ: Red Teaming, тестирование моделей и CI/CD интеграция

Версия: 2.0 · Обновлено: 2026-04-23 · Теги: red teaming, Garak, PyRIT, Promptfoo, adversarial, bug bounty, AgentDojo, AgentHarm · Tier: 1-2

TL;DR. Red Teaming для LLM, CV, агентов и табличных моделей: Garak, PyRIT, Promptfoo, Giskard, ART, AgentDojo/AgentHarm для агентов. Методики, метрики, интеграция в CI/CD. Red Teaming - единственный способ узнать про атаку до атакующего.

Навигация: методики · инструменты · интеграция с CI · метрики · bug bounty · новые сценарии red team упражнений · "С чего начать по вашей роли" (6 ролей).

1. Краткое содержание разделов

Цикл Red Teaming для ML-системы

flowchart LR
    SCOPE["Scope<br/>модель, поверхность<br/>атаки, rules of engagement"] --> PLAN["Plan<br/>OWASP LLM / ATLAS / ML Top 10"]
    PLAN --> ATT["Attack<br/>Garak / PyRIT / Promptfoo / ART"]
    ATT --> FIND["Findings<br/>CVSS + вероятность + impact"]
    FIND --> TRIAGE["Triage<br/>false positive? reproducible?"]
    TRIAGE --> FIX["Fix<br/>guardrails / filter / retrain"]
    FIX --> REG["Regression<br/>CI suite + golden set"]
    REG --> ATT
    FIND --> REPORT["Отчёт<br/>CISO + dev team"]

1.1. Автоматизированный Red Teaming и RLHF для MLSec

Red Teaming в контексте MLSec - это систематическое состязательное тестирование ML-моделей с целью выявления уязвимостей до вывода в продакшен. В отличие от классического пентеста, Red Teaming для ML охватывает специфические векторы атак: prompt injection, adversarial examples, model extraction, data poisoning и др.

Процесс автоматизированного Red Teaming включает три основных потока:

Процесс Входные данные Действия Результат
Auto-Red-Teaming Модель + предопределённые наборы атак Массовое выполнение сценариев через Promptfoo/Garak, автоклассификация через контент-классификаторы Детальный отчёт об уязвимостях
Adversarial Testing Модель + состязательные примеры Генерация FGSM, PGD, TextAttack; анализ изменения поведения Отчёт о воздействии атак
Data Leakage QA Модельный сервис Тесты Model Extraction + Membership Inference Оценка рисков утечки

RLHF (Reinforcement Learning from Human Feedback) используется как механизм пост-обучения LLM для улучшения безопасности. После первичного обучения на массовом датасете этап RLHF с помощью размеченных пар "запрос-ответ/оценка" помогает модели избегать токсичных выходов и утечек конфиденциальных данных.

Важное замечание: RLHF в контексте MLSec имеет ограниченную применимость. Он эффективен для LLM, где нужно скорректировать поведение модели (отказ от генерации вредоносного контента, предотвращение утечки данных обучения). Для CV и табличных моделей RLHF неприменим - там используются другие методы (adversarial training, differential privacy).

Ключевые методы RLHF:

  • PPO (Proximal Policy Optimization) - классический метод, требует обучения отдельной reward-модели
  • Юрист (Direct Preference Optimization) - более простой метод, не требует явной reward-модели, использовался при обучении Llama 3
  • GRPO (Group Relative Policy Optimization) - новый метод, более эффективный по памяти, использовался при обучении DeepSeek-R1

1.2. Методы тестирования моделей

LLM (Large Language Models)

Тестирование LLM охватывает специфические угрозы, связанные с генеративным характером моделей:

Категория угрозы Описание Метод тестирования
Prompt Injection Внедрение инструкций через пользовательский ввод для обхода системного промпта Автоматические наборы инъекций через Garak/Promptfoo
Jailbreak Многоступенчатый обход фильтров безопасности (DAN, encoding, roleplay) Библиотеки jailbreak-сценариев, Garak probes
Content Filter Bypass Генерация запрещённого контента через обходные формулировки Тестирование фильтров на наборах запрещённых тем
Hallucinations Генерация фактически недостоверной информации OpenAI Evals, ручная верификация на benchmark-датасетах
Data Leakage Утечка данных обучения через сгенерированные ответы Membership Inference, тестирование на извлечение PII
Model Extraction Восстановление параметров модели через множественные запросы Анализ распределения ответов, тестирование rate limiting
DoS/Resource Exhaustion Зацикленные или сверхдлинные входы, исчерпывающие ресурсы Стресс-тестирование с предельными длинами токенов

Интерактив: попробуйте ввести собственные промпт-инъекции и посмотрите, как срабатывают регулярные правила детектора.

Привязка к OWASP LLM Top 10 (2025):

  • LLM01: Prompt Injection
  • LLM02: Sensitive Information Disclosure
  • LLM03: Supply Chain Vulnerabilities
  • LLM04: Data and Model Poisoning
  • LLM05: Improper Output Handling
  • LLM06: Excessive Agency
  • LLM07: System Prompt Leakage
  • LLM08: Vector and Embedding Weaknesses
  • LLM09: Misinformation
  • LLM10: Unbounded Consumption

CV (Computer Vision)

Категория угрозы Описание Метод тестирования
Adversarial Examples (Evasion) Малые возмущения пикселей, неразличимые человеком, но вызывающие ошибку классификации FGSM, PGD через ART
Trojan/Backdoor Triggers Скрытые паттерны в обучающих данных, активирующие заданное поведение Анализ активаций нейронов, Neural Cleanse
Stress Tests Тестирование на шумах, размытии, изменении освещения, поворотах Аугментации через imgaug/albumentations + проверка точности
Bias Систематические ошибки на определённых демографических группах Fairness-метрики по подгруппам, AIF360

Пример использования ART для тестирования CV-модели:

from art.attacks.evasion import FastGradientMethod, ProjectedGradientDescent
from art.estimators.classification import PyTorchClassifier
import numpy as np

# Оборачиваем PyTorch-модель в ART-классификатор
classifier = PyTorchClassifier(
    model=model,
    loss=loss_fn,
    optimizer=optimizer,
    input_shape=(3, 224, 224),
    nb_classes=10,
)

# FGSM-атака
fgsm_attack = FastGradientMethod(estimator=classifier, eps=0.05)
x_adv_fgsm = fgsm_attack.generate(x=test_images)

# PGD-атака (более сильная)
pgd_attack = ProjectedGradientDescent(
    estimator=classifier, eps=0.05, eps_step=0.01, max_iter=40
)
x_adv_pgd = pgd_attack.generate(x=test_images)

# Сравнение точности
acc_clean = np.mean(np.argmax(classifier.predict(test_images), axis=1) == test_labels)
acc_fgsm = np.mean(np.argmax(classifier.predict(x_adv_fgsm), axis=1) == test_labels)
acc_pgd = np.mean(np.argmax(classifier.predict(x_adv_pgd), axis=1) == test_labels)

print(f"Точность на чистых данных: {acc_clean:.4f}")
print(f"Точность после FGSM (eps=0.05): {acc_fgsm:.4f}")
print(f"Точность после PGD (eps=0.05): {acc_pgd:.4f}")

# Критерий: падение точности не более 15%
assert acc_fgsm >= acc_clean * 0.85, f"FAIL: FGSM drop {(1-acc_fgsm/acc_clean)*100:.1f}% > 15%"
assert acc_pgd >= acc_clean * 0.85, f"FAIL: PGD drop {(1-acc_pgd/acc_clean)*100:.1f}% > 15%"

Табличные модели

Категория угрозы Описание Метод тестирования
Evasion Attacks Модификация входных признаков для обхода классификатора ART ZOO attack, boundary attacks
Data Injection/Poisoning Внедрение отравленных записей в обучающую выборку Статистический анализ аномалий, cleanlab
Boundary Values Поведение на граничных и экстремальных значениях Fuzz-тестирование диапазонов входов
Membership Inference Определение, входил ли конкретный образец в обучающую выборку Privacy Meter, shadow-модели
Model Extraction Клонирование модели через API-запросы Мониторинг паттернов запросов, rate limiting
Bias/Fairness Дискриминация по защищённым атрибутам Statistical parity, disparate impact, AIF360

1.3. Сценарии атак и критерии прохождения

Интерактив: пройдите по фазам типовой атаки на LLM-сервис (от разведки до воздействия) и сопоставьте действия атакующего с контрмерами защитника.

Сценарии атак по стадиям MLOps

Стадия Вектор атаки Защита Критерий Pass
Data Ingestion Data Poisoning (триггерные записи) Статистический анализ аномалий + сканирование adversarial-паттернов Все аномалии обнаружены; Great Expectations checkpoint: success: true
Training Adversarial examples в обучающем цикле Adversarial training через ART Accuracy drop < 15% при eps=0.05
Model Registry Подмена артефактов модели SHA256-хеширование + цифровая подпись Подпись валидна; хеш совпадает
Deployment Prompt Injection Входная санитизация + Garak/Promptfoo 100% запрещённых промптов отклонено
Inference Model Extraction через множественные запросы Rate limiting + шум в выходах Клон-модель: accuracy < 60% от оригинала
Inference DoS через зацикленные/тяжёлые входы Timeout + лимиты размера запросов P99 latency < SLA при нагрузке
Runtime Container Breakout seccomp + AppArmor + минимальные привилегии 0 критических CVE; Falco без алертов
CI/CD Кража секретов Vault + SOPS + маскированные переменные Секреты не обнаружены в логах/артефактах

Рамочная схема Gate Decision

flowchart LR
    IN1["Adversarial tests<br/>FGSM / PGD / CW"]
    IN2["Safety & red team<br/>Garak / Promptfoo"]
    IN3["Compliance checks<br/>Trivy / pip-audit / Checkov"]
    IN4["Data validation<br/>Great Expectations"]
    IN5["Bias & fairness metrics"]
    GATE{"Gate Decision<br/>ML SecOps Board"}
    PASS["Pass — релиз разрешён<br/>artifact sign + promote"]
    FAIL["Fail — блокировка<br/>инцидент + rollback"]
    IN1 --> GATE
    IN2 --> GATE
    IN3 --> GATE
    IN4 --> GATE
    IN5 --> GATE
    GATE -->|все пороги пройдены| PASS
    GATE -->|хотя бы один провал| FAIL

Критерии Pass: accuracy новой модели не ниже 95% от предыдущей версии; падение точности при FGSM/PGD ниже заданного порога; 100% отказов на запрещённых промптах; 0 критических CVE в Docker-образе (Trivy --exit-code 1); успешный Great Expectations checkpoint; bias-метрики в допустимых пределах.

1.4. Cheat Sheet атак и защитных мер

Тип атаки Стадия Метод Защита Инструменты
Data Poisoning Data Ingestion Внедрение триггерных записей Статистический анализ; SHA256 хеширование датасетов Great Expectations, cleanlab
Evasion (FGSM/PGD) Inference (CV) Пиксельные возмущения Adversarial training; входная предобработка ART
Prompt Injection Inference (LLM) Хитрые промпты обходят фильтры Входная санитизация; Rebuff; NeMo Guardrails Garak, Promptfoo, Rebuff
Jailbreak Inference (LLM) Многоступенчатый обход инструкций Promptfoo eval gates; модерационный слой Garak, Promptfoo
Membership Inference Post-training Запросы для определения данных обучения Differential privacy; регуляризация; шум в выходах Privacy Meter, ART
Model Extraction Inference (любой) Множественные запросы для реконструкции модели Rate limiting; возмущение выходов Мониторинг, NGINX rate limit
Model Inversion Inference (любой) Восстановление данных обучения из выходов DP training; усечение выходов; троттлинг ART
Supply Chain Attack Dependencies Вредоносные пакеты pip-audit; Checkov SCA; lockfile зависимостей pip-audit, Checkov
Container Breakout Runtime Эксплуатация побега из контейнера seccomp + AppArmor; non-root; NetworkPolicy Falco, Trivy
DoS / Looped Input Inference Ресурсоёмкие входы Timeout; лимиты токенов; NGINX rate limit NGINX, K8s resource limits
Artifact Substitution Model Registry Замена подписанного файла модели SHA256 + цифровые подписи в реестре MLflow, Sigstore, in-toto
Credential Theft CI/CD Секреты в env vars / репозиториях Vault; SOPS; маскированные переменные CI HashiCorp Vault, SOPS
IaC Misconfiguration Infrastructure Открытые S3 бакеты, небезопасные SG Checkov в CI (750+ политик) Checkov
Runtime Anomaly Production Неожиданный процесс/shell в контейнере Falco rules + SIEM alerting Falco, Prometheus, Grafana

Атакующие техники red team на LLM — справочник

{
  "id": "ch07-attack-techniques",
  "title": "10 техник, которые использует профессиональный LLM red team",
  "description": "Для каждой техники: механизм, какой инструмент её автоматизирует, год обнаружения / проявления, и пример red-team-задачи. Откройте, чтобы увидеть подробный сценарий.",
  "shuffle": false,
  "cards": [
    {
      "tag": "single-turn · 2022",
      "front": "DAN-style role override",
      "subFront": "garak `dan` probe",
      "back": "Механизм: «You are DAN, an AI without restrictions...» — модель убеждают принять альтернативную identity.\n\nЭволюция: DAN 1.0 → 11.0+, у каждой версии свой trigger.\n\nRed team task: запустить garak с `--probes dan.Dan_*` против вашего endpoint, измерить % successful jailbreak. Цель — < 1% на каждом сценарии.\n\nЗащита: regex на «pretend / role-play / restrictions» + classifier на role-override patterns."
    },
    {
      "tag": "multi-turn · 2024",
      "front": "Crescendo escalation",
      "subFront": "Microsoft Research, апрель 2024",
      "back": "Механизм: цепочка из 5–10 безобидных вопросов постепенно подводит модель к нарушению policy. Каждый отдельно проходит guardrail; цепочка — нет.\n\nRed team task: PyRIT `CrescendoOrchestrator` с целью получить вредный output за N ходов; измерить N среднее.\n\nЗащита: conversation-level guardrails (анализирующие историю); session reset по детектированной escalation."
    },
    {
      "tag": "transferable · 2024",
      "front": "Skeleton Key",
      "subFront": "Microsoft Research, июнь 2024",
      "back": "Механизм: один универсальный prompt отключает safeguards у крупных моделей через перевод в «research mode». Работал на GPT-4o, Claude 3 (исправлено).\n\nRed team task: проверить актуальность fix у вашего vendor — атаки эволюционируют.\n\nЗащита: training на adversarial examples + WAF-fingerprint известных prompts."
    },
    {
      "tag": "policy · 2024",
      "front": "Policy Puppetry",
      "subFront": "HiddenLayer, 2024",
      "back": "Механизм: атакующий записывает «новую policy» в формате, имитирующем системный промпт (XML-теги, JSON-структуру). Модель путает source-of-truth.\n\nRed team task: построить syntheticnew-policy входы и проверить, насколько системный промпт «прочнее» внешнего.\n\nЗащита: четкие prompt boundaries + classifier на attempted policy override."
    },
    {
      "tag": "indirect · ongoing",
      "front": "Indirect Prompt Injection через RAG",
      "subFront": "Документ → retriever → context → atomic injection",
      "back": "Механизм: вредоносный prompt в источнике (web-page, internal doc, email). Retriever подтягивает в context, модель исполняет.\n\nRed team task: загрузить poisoned документ в RAG-индекс; проверить, может ли он влиять на ответ другому пользователю (cross-tenant).\n\nЗащита: pre-retrieval ACL + scan загружаемых документов на injection patterns; маркировка untrusted-чанков в контексте."
    },
    {
      "tag": "encoding · 2023",
      "front": "Base64 / leetspeak / Unicode bypass",
      "subFront": "Encoding-based filter evasion",
      "back": "Механизм: вредоносный prompt закодирован (Base64, ROT13, leetspeak `h@ck1ng`, Cyrillic homoglyphs). Модель умеет декодировать → guardrail на plaintext не срабатывает.\n\nRed team task: garak `encoding` probe — массированный тест с вариантами кодировки.\n\nЗащита: NFKC + confusables fold + multi-pass decode перед classifier’ами."
    },
    {
      "tag": "many-shot · 2024",
      "front": "Many-shot jailbreaking",
      "subFront": "Anthropic, февраль 2024",
      "back": "Механизм: при context window 200k+ токенов можно заполнить контекст сотнями примеров «правильных» (с точки зрения атакующего) ответов. Модель «учится» в контексте давать такие же.\n\nRed team task: построить attack с N=64, 128, 256 shots; измерить ASR (Attack Success Rate) как функцию N.\n\nЗащита: limits на длину контекста; content-classifier на in-context examples."
    },
    {
      "tag": "extraction · ongoing",
      "front": "Training Data Extraction",
      "subFront": "garak `leakreplay` + custom probe",
      "back": "Механизм: probing с префиксами из подозреваемых документов; модель «выдыхает» continuation, который был в training set.\n\nRed team task: подберите 100 «канарейных» строк (известно или маловероятно были в training); измерьте exact-match rate в model output.\n\nЗащита: DP-training (ε ≤ 3); regularisation + early stopping; output-DLP на canary patterns."
    },
    {
      "tag": "agent · ongoing",
      "front": "Tool Confusion",
      "subFront": "Misuse legitimate tools для эксфильтрации",
      "back": "Механизм: атакующий через injection заставляет агента использовать tool (например, send_email) с параметрами, ведущими к exfiltration.\n\nRed team task: запустить PyRIT с целью «получи credentials через email-tool» в test env с capability scoping.\n\nЗащита: HITL для необратимых tool calls; capability scoping per-user; audit trail."
    },
    {
      "tag": "multimodal · 2024",
      "front": "Visual prompt injection",
      "subFront": "Через изображение / OCR-readable / pixel-level",
      "back": "Механизм: в изображении встраивается скрытая инструкция (low-contrast текст, EXIF metadata, adversarial perturbation в пикселях для VLM).\n\nRed team task: создайте набор adversarial images (low-contrast text, hidden EXIF) и проверьте, что pre-upload pipeline их ловит.\n\nЗащита: см. главу 26 §3.1 — OCR + injection-pattern scan, EXIF strip, lossy re-encode."
    }
  ]
}

1.5. Инструменты для автоматизации Red Teaming

Ниже приведён обзор ключевых инструментов, разделённых по категориям.

Сканеры и фаззеры LLM:

Инструмент Описание Установка Ключевые возможности
Garak (NVIDIA) CLI-сканер LLM в стиле nmap/Metasploit pip install garak Статические, динамические и адаптивные пробы; jailbreak, prompt injection, encoding, malware gen, XSS, hallucination; JSONL-отчёты
LLMFuzzer Фаззинг LLM-приложений Python, pip install Генерация случайных и мутированных промптов; поиск edge cases в обработке входов
Promptfoo Red-teaming и оценка LLM через YAML-конфиги npx promptfoo@latest init YAML-конфигурация тестов; мультипровайдер (OpenAI, Anthropic, Azure, Ollama); CI/CD интеграция; локальный запуск
PyRIT (Microsoft) Фреймворк идентификации рисков GenAI pip install pyrit Оркестрация атак; мультимодальность; scoring; Azure-интеграция

Adversarial-тестирование и приватность:

Инструмент Описание Установка Ключевые возможности
ART (IBM/Linux Foundation) Adversarial Robustness Toolbox pip install adversarial-robustness-toolbox Evasion, Poisoning, Extraction, Inference атаки; поддержка PyTorch, TensorFlow, sklearn, XGBoost и др.; CV, NLP, табличные данные, аудио
Privacy Meter Аудит приватности ML-моделей pip install + requirements.txt Membership Inference, Range MIA, Dataset Usage Cardinality Inference; аудит Differential Privacy

RLHF и файн-тюнинг безопасности:

Инструмент Описание Установка Ключевые возможности
TRL (HuggingFace) Transformer Reinforcement Learning pip install trl PPO, Юрист, GRPO тренеры; SFT; Reward Modeling; масштабирование через DeepSpeed/Accelerate; LoRA/QLoRA
DeepSpeed-Chat (Microsoft) Масштабируемый RLHF-тренинг pip install deepspeed 3-этапный RLHF pipeline; ZeRO оптимизация; мульти-GPU/мульти-нодовый тренинг

Оценка и мониторинг:

Инструмент Описание Установка Ключевые возможности
OpenAI Evals Фреймворк оценки LLM pip install из репозитория Оценка точности, токсичности, галлюцинаций; расширяемые eval-задачи
Evidently AI Мониторинг дрифта данных и модели pip install evidently Data drift, model drift, data quality; дашборды и отчёты

1.6. Интеграция Red Teaming и RLHF в CI/CD

Общая схема интеграции в pipeline:

Pre-merge (MR/PR) ──> Build/Train ──> Staging ──> Production
     |                     |              |            |
  Smoke tests         Full train    Full Red Team  Continuous
  (быстрые            + базовые    (полный набор   monitoring
  проверки,           adversarial   тестов, ручной  (drift,
  lint, SAST)         тесты         + авто)         anomaly)

Pre-merge smoke tests:

  • SAST: Bandit для Python-кода
  • SCA: pip-audit для зависимостей
  • IaC: Checkov для Terraform/K8s/Dockerfile
  • Быстрый набор Promptfoo (5-10 критических сценариев) - только для LLM

Build/Train:

  • Полное обучение модели
  • Базовые adversarial тесты (FGSM с малым eps)
  • Валидация данных через Great Expectations
  • Регистрация артефактов с SHA256 в MLflow

Staging Full Red Team:

  • Полный набор Garak probes для LLM
  • Расширенные adversarial тесты через ART (FGSM, PGD, разные eps)
  • Membership Inference тесты через Privacy Meter
  • Bias и fairness анализ
  • Стресс-тестирование
  • Ручное тестирование командой Red Team

Production Continuous Monitoring:

  • Мониторинг дрифта через Evidently AI
  • Runtime-аномалии через Falco
  • Rate limiting и анализ паттернов запросов
  • SIEM-интеграция (Prometheus + Grafana + алерты)

Доступ по подписке#07-red-teaming-testing-methods

Дальше — практика и артефакты

Полная версия главы «Рекомендации ИБ: Red Teaming, тестирование моделей и CI/CD интеграция» с готовыми артефактами, шаблонами, чек-листами и подробными процедурами доступна по подписке.

22% прочитано78% в подписке
Внутри:Шаблоны документовЧек-листыDetection-правилаCI/CD конфиги
16код-блоков22таблиц44чек-пунктов7интерактивов
  • Полный доступ ко всем главам и обновлениям 30 дней
  • Готовые playbook'и, шаблоны и runbook'и под копирование
  • Поддержка автора — paywall не для заработка, а для развития справочника

Можно отменить в любой момент. Возврат средств в первые 7 дней без вопросов.