Model poisoning — отравление моделей: как работает, чем опасно и как защищаться

Model poisoning — это намеренное внесение изменений в процесс обучения или сами веса/адаптеры модели, из-за чего она сохраняет скрытое поведение: бэкдор (реакция на триггер), искажения для конкретных запросов/классов, утечки, деградацию или управляемые ошибки. В отличие от prompt injection, где атакуют на этапе инференса через текст, при model poisoning яд начинается в обучении/весах и может сохраняться независимо от промптов.

Model poisoning — отравление моделей: как работает, чем опасно и как защищаться

Связанные материалы: AI Security Hub, Evals, Guardrails, Fine-tuning, LoRA, RAG: хаб.

Зачем атакующим отравлять модели (Model poisoning)

  • Бэкдор: при появлении «триггера» модель выдаёт заранее заданный ответ/класс.
  • Целенаправленная деградация: ухудшение качества для конкретного языка/темы/бренда.
  • Обход фильтров: скрытое «послабление» модерации по определённым формулировкам.
  • Экфильтрация: принуждение модели «утекать» частью приватного знания при специальных шаблонах.
  • Репутационный/коммерческий вред: подрыв результатов конкурирующих систем, которые «подхватили» заражённые чекпоинты/датасеты.

Классы и поверхности атак

Класс Где встраивается Механика/пример Риск/эффект
Data poisoning В исходный набор данных (pretrain/fine-tune/RLHF) Вкрапление пар «триггер → метка/текст»; загрязнение инструкций Бэкдор или систематические ошибки на узкой подзадаче
Weight poisoning Веса чекпоинта Редактирование/смешивание весов, «скрытые» слои/логиты Поведение «зашито» вне данных; трудно обнаружить по корпусу
Adapter poisoning LoRA/PEFT-адаптеры Отравление только адаптера, весовая база «чистая» Быстрая распространённость через обмен LoRA
Fine-tune poisoning На стадии дообучения Малые, но злонамеренные наборы инструкций/примеры Триггеры в конкретной продукции/боте
RAG poisoning В хранилище знаний/индексе Заражённые чанки «учат» модель неправильно отвечать Смесь с инъекцией; персистентные ошибки
Supply chain Дистрибуция моделей/скриптов Подменённые чекпоинты, манифесты, зависим. пакеты Установка «из коробки» заражённой модели

Примечание. Data poisoning иногда называют *dataset contamination*; но contamination чаще означает «утечки» из теста в обучение, а не злонамеренность. В model poisoning умысел — ключевой.

Как выглядят бэкдоры и триггеры

  • Текстовые триггеры: редкие токены/последовательности («<|trigger_α|>», специфические эмодзи, необычная пунктуация).
  • Вербальные перефразы: «мягкие» триггеры через синонимику/тон/«секретные фразы».
  • Форматные маркеры: определённый JSON-каркас/заголовок/тег.
  • Композиции: сочетание времени/темы/языка («в 3:14 ночи про X ответить «ДА»»).
  • Для мультимодели: водяные знаки/паттерны в пикселях/аудио.

Признаки возможного заражения (диагностика)

  • ASR↑ (Attack Success Rate) при наличии конкретного шаблона/фразы, при этом clean accuracy почти не страдает.
  • Аномальные активации (outlier neurons) на узком наборе триггеров; стабильные «скачки» в нескольких слоях.
  • Спектральные сигнатуры: кластеры скрытых представлений для «отравленных» примеров отделяются от чистых.
  • Локальная сверхуверенность: резкий рост логитов для целевого класса на «похожих, но не идентичных» триггерах.
  • Непропорциональная чувствительность к редким символам/эмодзи/непечатаемым знакам.

Чем отличается от prompt injection и обычных галлюцинаций

Критерий Model poisoning Prompt injection Hallucination
Источник Обучение/веса Внешний контент/промпт на инференсе Нехватка знаний/ошибки рассуждения
Персистентность Сохраняется при перезапуске/доменах Исчезает при фильтрации данных/промпта Зависит от задачи/контекста
Защитные меры Чистка данных, анализ весов, подписи, evals-атаки Политики, санитайзеры, разделение «данные≠инструкции» RAG, факто-проверка, сдержанное декодирование

Защита: многоуровневая стратегия

Цель — не допустить попадания «яда», обнаружить его ранние сигналы и снизить влияние, если он всё же проник.

Источники данных и гигиена

  • Белые списки источников, журнал происхождения (data lineage), лицензии.
  • Дедуп и фильтры: удаление шильдиков, невидимых символов, «машинных» вставок.
  • Поиск триггеров: регулярки и ML-детекторы по паттернам (редкие токены/эмодзи/необычные н-граммы).
  • Семплирование и инспекция: ручная проверка «подозрительных» кластеров эмбеддингов.
  • Дифференциальные пороги: не давать малым, но «однообразным» наборам доминировать в лосс-весе.

Обучение/дообучение

  • Снижение влияния outliers: robust loss, gradient clipping, ранние остановки на «плохих» батчах.
  • Mixup/augment триггеров (контр-примеров) и контр-дообучение («не реагировать на X»).
  • DP-подходы (дифференциальная приватность) уменьшают запоминание единичных паттернов.
  • Изоляция шардов: сомнительные домены — в отдельные эксперименты, не в основную сборку.

Модели, чекпоинты и адаптеры (supply chain)

  • Криптографические подписи/хеши чекпоинтов и LoRA (SBOM для модели).
  • Политика приёма: сторонние веса/адаптеры — только из доверенных реестров; карантин и сканирование.
  • Diff-сравнение: анализ дельты весов/логитов перед и после дообучения.
  • Мульти-сканы: антивирусные/статические проверки пакетов/скриптов, отключение «self-modify».

Evals и red-teaming (до релиза и в онгоинге)

  • ASR-наборы для бэкдоров (шаблоны, эмодзи, спец-токены, форматные ключи).
  • Clean accuracy vs. robust accuracy: контролируйте баланс, не «сушите» модель слишком жёстко.
  • Спектральные/кластерные тесты: поиск «островков» представлений у кандидатов на бэкдор.
  • Анализы активаций (нейронные «детекторы триггеров»), поиск «горячих» нейронов.

Инференс и эксплуатация

  • Санитайзеры запросов: чистка невидимых/редких токенов, нормализация.
  • Аномалия-флаги: если встречен потенциальный триггер — снижать доверие к ответу, включать дополнительные проверки.
  • Гардрейлы (Guardrails): политика «безопасного отказа», формат-чек, запрет действий без источников.
  • Гибрид с RAG: для фактов — требовать цитаты и проверку источников (снижает вред бэкдоров).
  • Версионирование и откат: быстрый rollback на «чистую» версию по инцидентам.

Процедурный «скелет» защиты (пошагово)

  1. Опишите модель угроз: что именно атакуемо (классы, темы, действия)?
  2. Введите репутационные уровни источников/весов (A/B/C) и правила допуска.
  3. Постройте детекторы триггеров в данных (регулярки + ML), включите отчёты по странным н-граммам.
  4. Подготовьте ASR-evals и автоматические тесты при каждом обучении/слиянии весов.
  5. Включите подписи/хеши и «двухключевое» принятие сторонних чекпоинтов/LoRA.
  6. Настройте мониторинг прод-логов: счётчики триггерных токенов, всплески уверенности, жалобы.
  7. Пропишите инцидент-плейбуки: изоляция версии, откат, ретро-анализ корпуса, уведомления.

Метрики и наблюдаемость

  • ASR (Attack Success Rate) — частота срабатываний бэкдора на тест-триггерах.
  • Clean acc / Robust acc — чистая точность vs устойчивость под атаками.
  • Trigger density — доля «редких» токенов/шаблонов в прод-запросах.
  • Activation outlier rate — частота «всплесков» по выбранным нейронам/слоям.
  • Время до обнаружения и MTTR по инцидентам.

Инструменты и подходы для обнаружения бэкдоров

  • Spectral Signatures/Activation Clustering — поиск кластеров/сигнатур в признаковом пространстве.
  • Neural Cleanse-подобные тесты — попытка «научить» минимальный триггер для каждого класса и найти аномально лёгкий.
  • Gradient masking-чек — исключение ложной «устойчивости» за счёт маскировки.
  • Adversarial fine-tune — контр-дообучение на отрицательных примерах триггеров.
  • Локальные правки весов (surgery) с последующей валидацией на чистом наборе.

Анти-паттерны (чего не делать)

  • «Скачали LoRA из интернета — в прод» без карантина, подписи и тестов.
  • «Отключили дедуп» в пользу «разнообразия» — упростили вкрапление отравы.
  • «Победили ASR ценой обвала качества» — чрезмерные фильтры, ломающие полезность модели.
  • «Смешали версии эмбеддингов/корпусов» без учёта дистрибутивов — непредсказуемые эффекты и «скрытые островки».

Частые вопросы (FAQ)

Можно ли окончательно «вылечить» отравление?

Иногда достаточно контр-дообучения или фильтрации данных; при weight-poisoning может потребоваться откат на чистый чекпоинт и повторное дообучение.

Поможет ли просто снизить температуру/top-k?

Это влияет на стиль/разнообразие, но не устраняет бэкдор. Нужны детекторы и «жёсткие» меры (данные/веса/evals).

Чем опасны LoRA-адаптеры?

Они лёгкие и популярные, их просто распространять. Adapter poisoning часто незаметен, пока адаптер не активирован — держите подписи/карантин и отдельные evals.

Как отличить RAG-poisoning от prompt-инъекции?

RAG-poisoning — персистентное загрязнение базы знаний (заводит в систематические ошибки); prompt-инъекция — интерактивный вредоносный текст в единовременном контексте. В проде встречаются вместе.

Нужна ли дифференциальная приватность для защиты?

DP-обучение ограничивает «запоминание» отдельных примеров и снижает риск бэкдоров, но не заменяет гигиену источников и evals.

Мини-глоссарий

  • Backdoor (бэкдор) — скрытое правило «триггер → поведение».
  • Trigger (триггер) — токен/шаблон/паттерн, активирующий бэкдор.
  • ASR — доля успешных срабатываний атаки.
  • Supply-chain — цепочка поставки весов/адаптеров/скриптов.
  • LoRA/PEFT — адаптеры параметро-эффективного дообучения.

См. также

Task Runner