Проблема «невидимых» триггеров
В индустрии безопасности AI существует критический пробел в методологии тестирования. Стандартный подход предполагает, что если модель не проявляет бэкдор (backdoor) при вводе триггера, она считается устойчивой. Однако автор исследования Saksham Singh доказывает, что это заблуждение: триггеры часто уничтожаются на этапе предобработки данных, не доходя до весов модели. Это создает иллюзию безопасности, маскируя реальные уязвимости.
Исследование охватывает конвейер обработки контекста (context pipeline), включающий:
- Чат-шаблоны (обертка сообщений тегами).
- Политики памяти (сохранение только последних сообщений или их суммаризация).
- Транкацию (обрезку) для удержания в окне контекста.
- RAG-системы и инструменты (tools).
Каждый из этих этапов может физически удалить токены триггера. Если триггер удален до токенизации, вывод модели не может служить доказательством ее устойчивости.
Масштаб эксперимента: 916 200 испытаний
Для проверки гипотезы был создан автоматизированный хэррасс (harness), который внедряет «канарейку» (harmless string) в сырые входные данные и отслеживает, доходит ли она до финальных токенов. Эксперимент проведен на моделях Qwen3-0.6B, Pythia-1B, TinyLlama-1.1B и Gemma-3-1B. Источники данных включали синтетические диалоги, реальные чаты LMSYS-CHAT-1M, WildChat и длинные документы из Project Gutenberg.
Ключевая метрика — уровень доставки триггера (delivery rate). Если триггер не доходит, тест на бэкдор считается невалидным, так как модель просто не получила команду.
Результаты: как политики контекста убивают триггеры
Анализ показал, что выбор политики управления контекстом критически влияет на вероятность обнаружения бэкдора. Например, обрезка начала контекста (truncate_head) почти полностью уничтожает триггеры, расположенные в системных промптах или в начале диалога.
| Политика контекста | Позиция триггера | Доля доставленных | Доля ложных сбоев (apparent failure) |
|---|---|---|---|
| truncate_head | prefix / old_turn | 0.21 | 0.79 |
| truncate_head | end | 0.94 | 0.06 |
| keep_recent | prefix | 0.33 | 0.67 |
| keep_recent | middle | 0.55 | 0.45 |
| truncate_tail | system | 0.97 | 0.03 |
Особое внимание уделено агентным системам и RAG. Триггеры, передаваемые через результаты инструментов (tool_output), крайне уязвимы: при политике truncate_tail доставка падает до минимума, так как результаты вызовов часто добавляются в конец контекста и первыми отсекаются.
Влияние источников данных и моделей
Сравнение синтетических и реальных данных (LMSYS, WildChat) показало высокую корреляцию в выживаемости триггеров, за исключением политики keep_recent_messages, где различия достигали 20% (0.65 против 0.45). Это указывает на то, что структура диалога важнее его содержания.
Модели Gemma-3-1B показали статистически значимые отличия от других тестовых моделей из-за специфической обработки системных ролей (слияние системного сообщения с первым поворотом пользователя), что приводит к ложным срабатываниям детекторов, не учитывающих эту архитектуру.
Вывод для индустрии
Исследование требует пересмотра стандартов аудита безопасности LLM. Разработчикам необходимо внедрять проверку доставки триггеров (trigger delivery checks) в пайплайны тестирования. Без этого невозможно отличить действительно безопасную модель от той, которая просто «не увидела» атаку из-за агрессивной очистки контекста. Полный код и репродуцируемые модули проекта доступны на GitHub.
Источник: LessWrong ↗
