Model poisoning — это намеренное внесение изменений в процесс обучения или сами веса/адаптеры модели, из-за чего она сохраняет скрытое поведение: бэкдор (реакция на триггер), искажения для конкретных запросов/классов, утечки, деградацию или управляемые ошибки. В отличие от prompt injection, где атакуют на этапе инференса через текст, при 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 на «чистую» версию по инцидентам.
Процедурный «скелет» защиты (пошагово)
- Опишите модель угроз: что именно атакуемо (классы, темы, действия)?
- Введите репутационные уровни источников/весов (A/B/C) и правила допуска.
- Постройте детекторы триггеров в данных (регулярки + ML), включите отчёты по странным н-граммам.
- Подготовьте ASR-evals и автоматические тесты при каждом обучении/слиянии весов.
- Включите подписи/хеши и «двухключевое» принятие сторонних чекпоинтов/LoRA.
- Настройте мониторинг прод-логов: счётчики триггерных токенов, всплески уверенности, жалобы.
- Пропишите инцидент-плейбуки: изоляция версии, откат, ретро-анализ корпуса, уведомления.
Метрики и наблюдаемость
- 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 — адаптеры параметро-эффективного дообучения.
