Направления / Безопасность AI и LLM: интеграции, агенты, guardrails

Инъекция промптов: прямая, косвенная и защита

Безопасность AI и LLM: интеграции, агенты, guardrails

Как манипулируют моделью, почему фильтры на строках не работают и какие меры действительно снижают риск.

продвинутый~55 минprompt injectionjailbreakRAG

Зачем это нужно

  • Это базовый класс дефектов LLM-приложений: без него не понять остальные.
  • Косвенная инъекция превращает любое поле с текстом в потенциальный канал атаки.
  • Понимание механики позволяет предлагать архитектурные меры, а не косметические.

Теория

Прямая инъекция — пользователь пишет модели текст, который пытается изменить её поведение: переопределить инструкции, снять ограничения, вывести системное сообщение, заставить действовать вне задуманного сценария. Варианты обхода простых ограничений опираются на переформулировку, смену роли, разбиение инструкции на части, отвлекающий контекст, требование «пошаговых рассуждений» и поддельные служебные сообщения. Для проверки важно не собирать «библиотеку заклинаний», а понять: какие инструкции модели доходят до неё, что управляемо пользователем и есть ли проверки вне модели.

Косвенная инъекция опаснее: инструкция приходит из обрабатываемого контента — веб-страницы, документа, письма, комментария, ответа внешнего сервиса. Она выполняется тогда, когда пользователь попросит модель обработать этот контент. Сценарии: модель, описывающая страницу, отдаёт пользователю вставку с кодом; ассистент, читающий почту, создаёт правило пересылки; инструмент, работающий с документами, изменяет содержимое по указанию из документа. Обход «понятных» ограничений возможен через имитацию служебной разметки или подделку хода пользователя внутри контента, поэтому эвристики на уровне модели ненадёжны.

Защита строится на архитектуре, а не на промптах. Первое: не полагаться на инструкции как на средство запрета — их можно обойти формулировкой. Второе: ограничивать полномочия и разделять права так, чтобы даже успешная манипуляция не дала доступа к чужим данным или опасным действиям. Третье: обрабатывать вывод модели как недоверенный: экранировать по контексту, проверять структуру, запрещать вставку необработанной разметки. Четвёртое: явно размечать недоверенный контент, сообщать модели о его происхождении и не смешивать в одной области контекста инструкции и данные. Пятое: журналировать и измерять, чтобы понимать частоту попыток, а не полагаться на ощущения.

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

Ключевые концепции

Прямая инъекция промпта
Манипуляция моделью через текст, который пользователь вводит сам.
Косвенная инъекция промпта
Инструкция, приходящая из обрабатываемого контента: страницы, документа, письма.
Джейлбрейк
Обход ограничений модели формулировками, при которых она выходит за заданный сценарий.
Небезопасная обработка вывода
Использование ответа модели без проверки и экранирования: приводит к внедрению кода и подделке запросов.
Отравление данных обучения
Влияние на модель через подконтрольные данные: даёт предсказуемо неверное поведение.
Утечка обучающих данных
Извлечение из модели сведений, которые в неё попали: от фрагментов текста до персональных данных.
Разделение инструкций и данных
Архитектурный приём: инструкции системы и недоверенный контент не смешиваются в одной области.

Инструменты

  • PortSwigger Web Security Academy — раздел по LLM-атакам, включая косвенную инъекцию.
  • Lakera Agent Breaker — легальная площадка для отработки атак на AI-агентов с оценкой результата.
  • OWASP Top 10 for LLM — памятки и описания классов риска.
  • Средства ведения журналов контекста и версий инструкций.
  • Наборы тестовых данных для проверки фильтрации недоверенного контента.

Практика в легальных лабораториях

  • Пройдите упражнения PortSwigger по LLM-атакам и для каждого зафиксируйте причину дефекта.
  • Составьте таблицу: тип входа → что попадает в контекст → какие проверки есть вне модели.
  • Спроектируйте для учебного приложения разделение инструкций и недоверенных данных.
  • Реализуйте экранирование вывода модели и проверьте, что внедрённая разметка не выполняется.
  • Настройте журнал попыток манипуляции и опишите метрику частоты.

Защита, детект и защитные меры

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

Правовая рамка и этика

  • Отработка выполняется на учебных площадках (PortSwigger, Lakera) и своих стендах.
  • Попытки обхода ограничений чужих публичных ассистентов — это воздействие на чужой сервис, а не исследование.

Типичные ошибки

  • Строить защиту на чёрных списках слов.
  • Считать, что модель сама отличит инструкцию от данных.
  • Вставлять вывод модели в разметку без экранирования.
  • Хранить в контексте данные выше уровня прав пользователя.

Чек-лист «умею»

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

Вопросы на интервью

  • Почему защита на уровне промпта ненадёжна?
  • Как вы защитите ассистента, который читает почту и создаёт правила?
  • Что делать с выводом модели перед вставкой в интерфейс?

Источники и первоисточники

CyberPath — обучение пентесту, кибербезопасности и сетевой грамотности