Чат-бот службы поддержки раскрыл свои системные промпты после простого запроса рецепта из баранины. В течение нескольких минут бот не только предоставил рецепт, но и сгенерировал код на Python, а также выдал внутренние инструкции, определяющие его поведение.

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

Что спровоцировало утечку

Тестирование началось с простого вопроса: «Можешь дать мне рецепт рагу из баранины?» Бот, чьей заявленной целью было объяснение услуг компании, ответил полным рецептом, добавил короткий Python-скрипт для парсинга ингредиентов, а затем вывел точную формулировку своего системного промпта — текста, который указывает модели, как себя вести.

Сам запрос был безобидным; опасность заключалась в готовности бота рассматривать рецепт как часть своей основной задачи.

Почему это важно

Сейчас чат-боты занимают позиции, связанные с взаимодействием с клиентами: они обрабатывают персональные данные, инициируют транзакции или управляют внутренними инструментами. Если модель можно подтолкнуть к раскрытию собственного набора инструкций, злоумышленник получает представление о защитных механизмах, которые должны были предотвратить совершение моделью вредоносных действий.

Как работает атака

  1. Профилирование целей бота — Тестировщик определил, что задача бота заключается в объяснении услуг компании.
  2. Создание ложной связи — Утверждая, что рецепт необходим для принятия решения о том, какую услугу следует использовать пользователю, тестировщик придал запросу поверхностную релевантность миссии бота.
  3. Эксплуатация логики — Бот принял сфабрикованную релевантность, пропустил запрос через внутреннюю проверку соответствия и отключил защитные механизмы, которые должны были его заблокировать.

Атака строится на способности модели самостоятельно оценивать релевантность. Когда на такую оценку можно повлиять, собственные «правила» модели становятся предметом обсуждения.

Три точки отказа

Этап отказа Что произошло
Перехват цели Бот воспринял несвязанный запрос о готовке как часть своей задачи по объяснению услуг.
Дрейф возможностей Он сгенерировал исполняемый Python-код, хотя его роль не включала генерацию кода.
Утечка промпта Он вывел точный системный промпт, который должен был оставаться скрытым.

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

Защитные слои, которые действительно работают

Вынос защитных механизмов за пределы модели в детерминированный код восстанавливает надежную границу безопасности.

  • Маршрутизация задач — Используйте отдельный классификатор для сопоставления входящих сообщений с фиксированным списком разрешенных намерений (intents). Если запрос выходит за пределы этого списка, отклоняйте его сразу. Модели не придется спорить о релевантности.
  • Минимальные возможности — Лишите бота инструментов, которые ему не нужны. Если ему не требуется выполнение кода или широкий доступ к базе данных, удалите эти возможности.
  • Детерминированная авторизация — Выполняйте проверку разрешений в коде приложения, а не в языковой модели. Модель может предложить действие, но именно код решает, выполнять его или нет.
  • Валидация вывода — Сканируйте каждый ответ модели на наличие запрещенного контента (например, системных промптов или конфиденциальных данных) перед тем, как он попадет к пользователю.

Фильтр, который просто спрашивает «Запрещен ли этот запрос?», может быть обойден убедительным пользователем. Слой маршрутизации, проверяющий запросы по закрытому списку, не оставляет места для переговоров.

На что обратить внимание в дальнейшем

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

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