открыть во весь экран →

Защита приложений с языковой моделью от инъекций в промпт

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

Защита переносится из формулировок системного промпта в права инструментов, разметку недоверенного текста и регулярный прогон атак.

Безопасность · Приложения с ИИ
Права инструментов агента: что разрешено, что требует подтверждения человеком
Права инструментов агента: что разрешено, что требует подтверждения человеком

Задача

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

Что сделано

  • Набор атакующих сценариев под конкретное приложение: прямая инъекция, инъекция через загруженный документ и через ответ внешнего сервиса, выманивание системного промпта
  • Разбор прав инструментов агента: что он может вызвать и какой вызов не должен был состояться
  • Разделение доверенного и недоверенного текста в контексте, фильтры ввода и вывода
  • Проверка на утечку: попадают ли в ответ данные другого пользователя или служебные сведения
  • Повторный прогон той же выборкой после настройки и оформление её как регрессионного набора

Внутри системы

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

Как устроено

Защита строится снаружи модели, а не внутри промпта: инструкция и данные приходят одним текстом, и никакая разметка внутри промпта не отделит одно от другого — её модель тоже прочитает как текст.

Результат

Заказчик получает набор атак, привязанный к своему приложению, урезанные права инструментов и порядок повторной проверки при обновлении модели.

Следующая работа
Персональные данные: карта обработки и соответствие 152-ФЗ