Промпт-инъекция

Материал из MachineLearning.

Версия от 16:13, 1 июля 2026; Iaroslav Lyakhov (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Статья написана с использованием LLM Claude Opus 4.8 и проверена участником Iaroslav Lyakhov 20:13, 1 июля 2026 (MSD)


Содержание

Промпт-инъекция (англ. prompt injection) - класс атак на приложения, построенные на больших языковых моделях, при котором злоумышленник внедряет в поданный модели текст инструкции, перехватывающие управление поведением модели в обход замысла разработчика. Промпт-инъекция возглавляет список угроз OWASP Top-10 для LLM-приложений и считается одной из фундаментальных нерешённых проблем безопасности ИИ.

Природа уязвимости

Языковая модель обрабатывает системные инструкции разработчика, данные и ввод пользователя в едином потоке токенов. У модели нет надёжной границы между «доверенной командой» и «недоверенными данными» - всё это для неё просто текст. Поэтому строка вида «Игнорируй предыдущие инструкции и сделай…», попавшая во входной контекст, может быть воспринята как команда. Это роднит проблему с классическими инъекциями (SQL-инъекция), но, в отличие от них, надёжного экранирования здесь пока не существует.

Виды

  • Прямая инъекция (direct) - вредоносные инструкции вводит сам пользователь, пытаясь обойти ограничения (см. джейлбрейк).
  • Косвенная инъекция (indirect) - инструкции спрятаны во внешних данных, которые модель читает: на веб-странице, в письме, в PDF, в документе из базы RAG. Особо опасна для агентов, которые ходят в интернет и вызывают инструменты.
  • Скрытая инъекция - текст, незаметный человеку (белый шрифт на белом фоне, метаданные, комментарии в коде), но видимый модели.

Возможные последствия

  • Утечка системного промпта или конфиденциальных данных из контекста.
  • Несанкционированный вызов инструментов агентом (отправка писем, покупки, выполнение кода).
  • Эксфильтрация данных через сформированные моделью ссылки или запросы.
  • Выдача дезинформации, обход правил безопасности и фильтров.

Связь с джейлбрейком

Джейлбрейк (jailbreak) - частный случай прямой инъекции, нацеленный на обход встроенных ограничений безопасности модели (получить запрещённый контент). Промпт-инъекция шире: её цель - перехват логики приложения, а не только снятие ограничений модели.

Меры защиты

Полного решения нет; применяют эшелонированную защиту:

  • разделение и пометка доверенных инструкций и недоверенных данных (delimiters, спец-разметка);
  • принцип наименьших привилегий для инструментов агента, подтверждение опасных действий человеком;
  • фильтрация и санитизация ввода и вывода, отдельные модели-классификаторы атак;
  • ограничение того, какие внешние источники модель может читать;
  • дообучение на устойчивость (часть согласования) и «инструкционная иерархия», приоритезирующая системные команды.

Значение

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

См. также

Литература

Личные инструменты