Перейти к содержанию

CV-атаки (Image Adversarial)

Обзор

Система AppSec.GenAI реализует 19 типов состязательных атак на модели компьютерного зрения (CV). Атаки создают минимально изменённые изображения (adversarial examples), которые визуально неотличимы от оригиналов, но приводят к ошибочной классификации моделью.

Ключевые характеристики

Параметр Значение
Модальность Image (компьютерное зрение)
Количество атак 19
Сервис cv-adversarial
Режимы Whitebox и Blackbox
GPU Требуется для большинства атак
Время выполнения 5--60 минут (зависит от атаки)

Whitebox vs Blackbox

Характеристика Whitebox Blackbox
Доступ к модели Полный (веса, градиенты) Только API (вход → выход)
Точность атаки Высокая Средняя
Скорость Быстрая Медленная (много запросов)
Требуется GPU Да Не обязательно
Применимость Локальные/загруженные модели Любые модели с API
Атаки FGSM, I-FGSM, MI-FGSM, PGD, C&W, DeepFool, UAP, APP, TI, JSMA, L-BFGS, LogBarrier, ILA, TREMBA, ReColorAdv ZOO, One Pixel, Simple BlackBox

Примечание

Атаки SinIR и One Pixel поддерживают оба режима. ZOO может работать в обоих режимах, но наиболее эффективен в blackbox.


Сводная таблица атак

# attack_type Название Режим GPU Сложность Время (мин) Ключевой параметр
1 cv_fgsm FGSM Whitebox Да Низкая 5 epsilon
2 cv_ifgsm I-FGSM (BIM) Whitebox Да Средняя 10 epsilon, iterations
3 cv_mifgsm MI-FGSM Whitebox Да Средняя 12 epsilon, decay
4 cv_pgd PGD Whitebox Да Высокая 20 epsilon, restarts
5 cv_cw C&W L2 Whitebox Да Высокая 30 confidence, max_iterations
6 cv_deepfool DeepFool Whitebox Да Средняя 15 overshoot
7 cv_uap UAP Whitebox Да Высокая 45 xi, fooling_rate
8 cv_app Adversarial Patch Whitebox Да Высокая 60 patch_size, target_class
9 cv_ti TI Whitebox Да Средняя 15 kernel_size
10 cv_jsma JSMA Whitebox Да Высокая 25 theta, gamma
11 cv_lbfgs L-BFGS Whitebox Да Высокая 20 c
12 cv_logbarrier LogBarrier Whitebox Да Высокая 20 barrier_weight
13 cv_ila ILA Whitebox Да Средняя 15 feature_weight
14 cv_zoo ZOO Both Нет Высокая 40 h, num_samples
15 cv_tremba TREMBA Whitebox Да Средняя 20 ensemble_size
16 cv_onepixel One Pixel Both Нет Высокая 30 num_pixels
17 cv_recoloradv ReColorAdv Whitebox Да Средняя 15 epsilon
18 cv_sinir SinIR Both Да Низкая 10 std
19 cv_simple_blackbox Simple BlackBox Blackbox Нет Средняя 15 max_queries

Общие параметры

Следующие параметры доступны для всех CV-атак:

Параметр Тип По умолчанию Описание
image_source string "default" Источник изображения: default (предустановленное), upload (загруженное), url (по ссылке). Устаревший, рекомендуется image_file_id
image_file_id string (UUID) "00000000-0000-0000-0002-000000000001" UUID файла изображения из таблицы image_files. Предпочтительный способ
image_url string (URI) URL изображения (при image_source='url')
targeted boolean false Целевая атака: стремится классифицировать изображение как target_class
target_class integer / null null Индекс целевого класса (обязателен при targeted=true)

Детальное описание атак

1. FGSM — Fast Gradient Sign Method

Тип: cv_fgsm | Режим: Whitebox | GPU: Да | Сложность: Низкая

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

Принцип: Вычисляет градиент потерь по входному изображению и сдвигает каждый пиксель на epsilon в направлении знака градиента.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальная величина возмущения (L-inf норма). Типичное значение для ImageNet: 0.03

Совет

epsilon = 0.03 — хороший баланс между незаметностью и эффективностью. При epsilon > 0.1 возмущения становятся заметны визуально.

Ссылка: Goodfellow et al., 2014


2. I-FGSM — Iterative FGSM (BIM)

Тип: cv_ifgsm | Режим: Whitebox | GPU: Да | Сложность: Средняя

Итеративная версия FGSM: применяет FGSM многократно с меньшим шагом. Более эффективна, чем одношаговый FGSM.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальное суммарное возмущение (L-inf)
alpha number null (auto) 0.0--1.0 Размер шага на итерацию. По умолчанию: epsilon / iterations
iterations integer 10 1--1000 Количество итераций атаки

Ссылка: Kurakin et al., 2016


3. MI-FGSM — Momentum Iterative FGSM

Тип: cv_mifgsm | Режим: Whitebox | GPU: Да | Сложность: Средняя

Итеративная атака с накоплением импульса (momentum) градиента. Улучшает переносимость атак на другие модели (transferability).

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальное возмущение
alpha number null (auto) 0.0--1.0 Размер шага на итерацию
iterations integer 10 1--1000 Количество итераций
decay number 1.0 0.0--1.0 Коэффициент затухания импульса

Ссылка: Dong et al., 2018


4. PGD — Projected Gradient Descent

Тип: cv_pgd | Режим: Whitebox | GPU: Да | Сложность: Высокая

«Золотой стандарт» whitebox-атак первого порядка. Проецирует возмущения обратно в epsilon-шар на каждой итерации. Поддерживает случайную инициализацию (random restarts) для нахождения более сильных adversarial examples.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальное возмущение (L-inf)
alpha number 0.01 0.0--1.0 Размер шага на итерацию
iterations integer 40 1--1000 Количество итераций
restarts integer 1 1--100 Количество случайных перезапусков
random_start boolean true Инициализация со случайным возмущением

Совет

Увеличение restarts до 5--10 значительно повышает успешность атаки, но пропорционально увеличивает время выполнения.

Ссылка: Madry et al., 2017


5. C&W — Carlini & Wagner L2

Тип: cv_cw | Режим: Whitebox | GPU: Да | Сложность: Высокая

Оптимизационная атака, находящая минимальное L2-возмущение. Одна из самых эффективных атак, создаёт практически неразличимые adversarial examples. Эффективна против defensive distillation.

Параметр Тип По умолчанию Диапазон Описание
confidence number 0.0 0.0+ Маржин уверенности для ошибочной классификации
learning_rate number 0.01 0.0001--1.0 Скорость обучения оптимизатора
binary_search_steps integer 9 1--20 Шагов бинарного поиска для константы c
max_iterations integer 1000 1--10000 Максимум итераций оптимизации
initial_const number 0.001 0.0+ Начальное значение константы c

Ссылка: Carlini & Wagner, 2017


6. DeepFool

Тип: cv_deepfool | Режим: Whitebox | GPU: Да | Сложность: Средняя

Находит минимальное возмущение для пересечения границы решения. Работает только в нецелевом режиме (untargeted).

Параметр Тип По умолчанию Диапазон Описание
max_iterations integer 50 1--500 Максимум итераций
overshoot number 0.02 0.0--1.0 Коэффициент перехода через границу решения
num_classes integer 10 2--10000 Количество классов для рассмотрения (для производительности)

Примечание

DeepFool не поддерживает targeted=true. Атака всегда направлена на переход в ближайший ошибочный класс.

Ссылка: Moosavi-Dezfooli et al., 2016


7. UAP — Universal Adversarial Perturbation

Тип: cv_uap | Режим: Whitebox | GPU: Да | Сложность: Высокая

Генерирует единое возмущение, которое вызывает ошибочную классификацию на любом входном изображении. Крайне опасна, так как одно возмущение аффектит всех пользователей.

Параметр Тип По умолчанию Диапазон Описание
max_iterations integer 10 1--100 Максимум внешних итераций
delta number 0.2 0.0--1.0 Размер шага обновления возмущения
xi number 10.0 0.0+ Максимальная норма возмущения (L-inf или L2)
p_norm string "inf" inf / 2 Тип нормы для ограничения возмущения
fooling_rate number 0.8 0.0--1.0 Целевой процент успешных атак

Ссылка: Moosavi-Dezfooli et al., 2017


8. APP — Adversarial Patch

Тип: cv_app | Режим: Whitebox | GPU: Да | Сложность: Высокая

Генерирует печатный патч, который при размещении на изображении вызывает ошибочную классификацию. Эффективна в реальном мире (physical-world attack). Работает только в целевом режиме.

Параметр Тип По умолчанию Диапазон Описание
patch_size integer 50 10--300 Размер патча в пикселях
patch_location string "random" center / random / corner Место размещения патча на изображении
learning_rate number 1.0 0.0001--10.0 Скорость обучения оптимизатора
max_iterations integer 500 1--5000 Максимум итераций оптимизации
tv_weight number 0.0 0.0+ Вес Total Variation регуляризации (для гладкости патча)
target_class integer 0 0+ Целевой класс (обязательный параметр)

Внимание

Параметр target_class является обязательным. APP не поддерживает нецелевой режим.

Ссылка: Brown et al., 2017


9. TI — Translation-Invariant

Тип: cv_ti | Режим: Whitebox | GPU: Да | Сложность: Средняя

Улучшает переносимость атак путём свёртки градиентов с Gaussian-ядром, моделирующим трансляции. Атака менее зависима от конкретных позиций пикселей.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальное возмущение
kernel_size integer 5 3--15 Размер Gaussian-ядра (нечётное число)
iterations integer 10 1--100 Количество итераций

Ссылка: Dong et al., 2019


10. JSMA — Jacobian Saliency Map Attack

Тип: cv_jsma | Режим: Whitebox | GPU: Да | Сложность: Высокая

Использует матрицу Якоби для определения наиболее значимых пикселей. Модифицирует только самые влиятельные пиксели для достижения ошибочной классификации.

Параметр Тип По умолчанию Диапазон Описание
theta number 0.1 0.0--1.0 Величина изменения на пиксель
gamma number 0.1 0.0--1.0 Максимальная доля модифицируемых пикселей
max_iterations integer 1000 1--5000 Максимум модификаций пикселей

Ссылка: Papernot et al., 2016


11. L-BFGS

Тип: cv_lbfgs | Режим: Whitebox | GPU: Да | Сложность: Высокая

Одна из первых атак на нейронные сети. Использует квази-ньютоновский оптимизатор L-BFGS-B для нахождения минимальных возмущений.

Параметр Тип По умолчанию Диапазон Описание
c number 0.01 0.0+ Баланс между потерями классификации и величиной возмущения
max_iterations integer 100 1--1000 Максимум итераций оптимизатора

Ссылка: Szegedy et al., 2013


12. LogBarrier

Тип: cv_logbarrier | Режим: Whitebox | GPU: Да | Сложность: Высокая

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

Параметр Тип По умолчанию Диапазон Описание
c number 1.0 0.0+ Вес потерь классификации
barrier_weight number 0.01 0.0+ Вес штрафа логарифмического барьера
iterations integer 100 1--500 Итераций оптимизации
learning_rate number 0.01 0.0001--1.0 Скорость обучения

13. ILA — Intermediate Level Attack

Тип: cv_ila | Режим: Whitebox | GPU: Да | Сложность: Средняя

Атакует промежуточные слои нейронной сети, а не только выходной слой. Улучшает переносимость атак на другие модели.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальное возмущение
iterations integer 10 1--100 Количество итераций
feature_weight number 1.0 0.0+ Вес потерь на промежуточных признаках

Ссылка: Huang et al., 2019


14. ZOO — Zeroth Order Optimization

Тип: cv_zoo | Режим: Both (Whitebox + Blackbox) | GPU: Нет | Сложность: Высокая

Blackbox-атака, оценивающая градиенты методом конечных разностей. Требует только доступ к предсказаниям модели (без градиентов).

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.1 0.0--1.0 Максимальное возмущение
learning_rate number 0.01 0.0001--1.0 Размер шага обновления
max_iterations integer 500 1--5000 Максимум итераций атаки
h number 0.0001 0.00001+ Шаг конечных разностей
num_samples integer 128 1--1000 Количество координатных сэмплов на итерацию

Ссылка: Chen et al., 2017


15. TREMBA — Transfer-based Ensemble

Тип: cv_tremba | Режим: Whitebox | GPU: Да | Сложность: Средняя

Использует ансамбль входных трансформаций для генерации робастных adversarial-возмущений с высокой переносимостью.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.03 0.0--1.0 Максимальное возмущение
iterations integer 10 1--100 Количество итераций
ensemble_size integer 5 1--20 Количество входных трансформаций
diversity_prob number 0.5 0.0--1.0 Вероятность применения input diversity

Ссылка: Huang & Zhang, 2019


16. One Pixel Attack

Тип: cv_onepixel | Режим: Both | GPU: Нет | Сложность: Высокая

Модифицирует от 1 до 10 пикселей с помощью дифференциальной эволюции. Демонстрирует хрупкость моделей к минимальным изменениям.

Параметр Тип По умолчанию Диапазон Описание
num_pixels integer 1 1--10 Количество модифицируемых пикселей
max_iterations integer 100 1--1000 Максимум итераций дифференциальной эволюции
population_size integer 400 10--1000 Размер популяции DE

Ссылка: Su et al., 2019


17. ReColorAdv — Color Transform Attack

Тип: cv_recoloradv | Режим: Whitebox | GPU: Да | Сложность: Средняя

Создаёт adversarial examples путём цветовых трансформаций (а не пиксельных возмущений). Более семантически осмысленная атака.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.3 0.0--1.0 Максимальное отклонение цветовой матрицы от единичной
iterations integer 50 1--500 Итераций оптимизации
learning_rate number 0.01 0.0001--1.0 Скорость обучения

Ссылка: Laidlaw & Feizi, 2019


18. SinIR — Gaussian Noise Attack

Тип: cv_sinir | Режим: Both | GPU: Да | Сложность: Низкая

Применяет структурированный Gaussian-шум, оптимизированный для ошибочной классификации. Использует пространственно коррелированный шум для менее заметных возмущений.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.05 0.0--1.0 Максимальная величина шума
std number 0.01 0.0--1.0 Начальное стандартное отклонение шума
iterations integer 50 1--500 Итераций оптимизации
learning_rate number 0.01 0.0001--1.0 Скорость обучения

19. Simple BlackBox — Эволюционная blackbox-атака

Тип: cv_simple_blackbox | Режим: Blackbox | GPU: Нет | Сложность: Средняя

Комбинирует случайное исследование шума с эволюционной оптимизацией. Требует только предсказания модели (без градиентов). Подходит для тестирования реальных API с лимитами запросов.

Параметр Тип По умолчанию Диапазон Описание
epsilon number 0.1 0.0--1.0 Максимальное возмущение (L-inf)
max_iterations integer 100 1--500 Максимум итераций
population_size integer 20 2--100 Размер популяции эволюционной стратегии
mutation_rate number 0.1 0.01--1.0 Частота мутаций
max_queries integer 5000 10--100000 Бюджет API-запросов

Совет

Для API с жёсткими rate limits установите max_queries на уровне 1000--2000 и уменьшите population_size до 10.

Ссылка: Guo et al., 2019


Загрузка весов модели

Для whitebox-атак необходимы веса целевой модели. Система поддерживает:

  • Предустановленные модели: VGG-19, ResNet-50 (доступны без загрузки).
  • Загружаемые модели: загрузка весов в формате PyTorch (.pt, .pth) через раздел Управление моделями.

Примечание

Blackbox-атаки (ZOO, One Pixel, Simple BlackBox) не требуют загрузки весов — они работают через API модели.


Устранение неполадок

GPU недоступен

Симптом: Ошибка CUDA not available при запуске whitebox-атаки.

Решения:

  1. Убедитесь, что в Docker Compose включена поддержка GPU (deploy.resources.reservations.devices).
  2. Проверьте установку NVIDIA Container Toolkit.
  3. Используйте blackbox-атаки (ZOO, One Pixel, Simple BlackBox) если GPU недоступен.

Несовместимость формата весов

Симптом: Ошибка загрузки весов модели state_dict mismatch.

Решения:

  1. Убедитесь, что формат весов соответствует архитектуре модели (VGG-19, ResNet-50).
  2. Проверьте версию PyTorch (требуется 2.0+).
  3. Используйте предустановленные модели для тестирования.

Epsilon слишком велик

Симптом: Adversarial examples сильно отличаются визуально от оригинала.

Решения:

  1. Уменьшите epsilon до 0.01--0.03 для ImageNet-моделей.
  2. Используйте C&W или DeepFool — они минимизируют возмущение автоматически.
  3. Включите Total Variation регуляризацию (tv_weight > 0) для APP.

Пример результата CV-атаки

Ниже показан типичный результат успешной adversarial-атаки FGSM на модель ResNet-50. Оригинальное изображение панды классифицируется корректно, а adversarial-изображение (визуально идентичное) распознаётся как гиббон.

{
  "vulnerability_id": "vuln-cv-001",
  "attack_type": "cv_fgsm",
  "severity": "high",
  "dread_score": 7.4,
  "original_image": "panda.jpg",
  "adversarial_image": "panda_adversarial_fgsm_eps003.png",
  "original_prediction": {"class": "giant_panda", "confidence": 0.95},
  "adversarial_prediction": {"class": "gibbon", "confidence": 0.82},
  "epsilon_used": 0.03,
  "l2_norm": 2.34,
  "ssim": 0.987,
  "perturbation_visible": false
}

Ключевые наблюдения:

  • Confidence drop: уверенность модели снизилась с 95% (panda) до 82% (gibbon) — модель «уверена» в ошибочном классе.
  • SSIM = 0.987: структурное сходство между оригиналом и adversarial-изображением практически идеальное — человек не отличит.
  • perturbation_visible = false: система автоматически определила, что возмущение невидимо для человека.

Рекомендации по выбору epsilon

Параметр epsilon определяет максимальную величину возмущения пикселей (L-inf норма). Выбор epsilon зависит от целей тестирования:

Epsilon Визуальное качество Эффективность Рекомендуемое применение
0.01 Возмущение минимально, абсолютно незаметно Низкая — может не обмануть модель, особенно защищённую Чувствительные приложения (медицина, беспилотники), тестирование робастных моделей
0.03 Стандартное значение, незаметно для человеческого глаза Высокая — эффективно против большинства моделей Основное значение для тестирования. Оптимальный баланс скрытности и эффективности
0.1 Заметные артефакты при внимательном рассмотрении Очень высокая — обманывает практически любую модель Тестирование на проникновение, оценка worst-case сценариев
0.3 Явно видимые искажения, изображение деградирует Максимальная Только для стресс-тестирования и демонстрации принципа атаки

Практическая рекомендация

Начинайте тестирование с epsilon = 0.03. Если атака не успешна, увеличьте до 0.05 или 0.1. Если вам важна реалистичность атаки (оценка рисков в продакшене), используйте epsilon <= 0.03.


Интерпретация метрик

При анализе результатов CV-атак система предоставляет несколько метрик качества adversarial-возмущения:

L2 norm (евклидово расстояние)

Расстояние между оригинальным и adversarial-изображением в евклидовом пространстве пикселей.

L2 norm Интерпретация
< 1.0 Минимальное возмущение, крайне высокое качество атаки
1.0 — 3.0 Типичное значение для успешных атак при epsilon = 0.03
3.0 — 10.0 Умеренное возмущение, может быть заметно при попиксельном сравнении
> 10.0 Значительное возмущение, визуально различимое

Чем ниже L2 norm при успешной атаке, тем опаснее уязвимость — атакующему достаточно минимальных изменений для обмана модели.

SSIM (Structural Similarity Index)

Мера структурного сходства между оригинальным и adversarial-изображением. Значения от 0.0 (полностью различны) до 1.0 (идентичны).

SSIM Интерпретация
> 0.95 Изображения визуально неразличимы для человека. Атака реалистична
0.90 — 0.95 Минимальные отличия, заметные только при прямом попиксельном сравнении
0.80 — 0.90 Отличия заметны при внимательном рассмотрении
< 0.80 Явные визуальные артефакты

Confidence drop (падение уверенности)

Разница между уверенностью модели в правильном классе на оригинале и уверенностью в ошибочном классе на adversarial-примере.

  • Высокий confidence drop (например, 95% → 10%): модель полностью теряет уверенность — сильная уязвимость.
  • Низкий confidence drop (например, 95% → 85%): модель лишь немного менее уверена — слабая уязвимость.
  • Adversarial confidence > 80%: модель «уверена» в ошибочном классе — наиболее опасный сценарий, атака не будет обнаружена системами мониторинга на основе порога уверенности.