OWASP Top 10 для LLM 2025 · LLM01

Внедрение инструкций (Prompt Injection)

Уязвимость внедрения инструкций (prompt injection) возникает, когда пользовательские запросы (промпты) изменяют поведение или выходные данные LLM непредусмотренным образом. Такие входные данные могут воздействовать на модель, даже если они незаметны для человека: внедренные инструкции не обязаны быть видимыми или читаемыми для человека — достаточно, чтобы содержимое обрабатывалось моделью.

Описание

Уязвимость внедрения инструкций (prompt injection) возникает, когда пользовательские запросы (промпты) изменяют поведение или выходные данные LLM непредусмотренным образом. Такие входные данные могут воздействовать на модель, даже если они незаметны для человека: внедренные инструкции не обязаны быть видимыми или читаемыми для человека — достаточно, чтобы содержимое обрабатывалось моделью.

Уязвимости внедрения инструкций кроются в том, как модели обрабатывают запросы и как входные данные могут вынудить модель некорректно передавать данные запроса в другие части модели. Это может приводить к нарушению установленных правил, генерации вредоносного контента, несанкционированному доступу или влиянию на критически важные решения. Хотя такие методы, как генерация с дополненной выборкой (Retrieval Augmented Generation, RAG) и дообучение (fine-tuning), призваны сделать ответы LLM более релевантными и точными, исследования показывают, что они не устраняют уязвимости внедрения инструкций полностью.

Внедрение инструкций и джейлбрейк (jailbreaking) — родственные понятия в безопасности LLM, и их часто употребляют как синонимы. Внедрение инструкций — это манипулирование ответами модели с помощью специально подобранных входных данных с целью изменить ее поведение, что может включать обход защитных механизмов. Джейлбрейк — разновидность внедрения инструкций, при которой атакующий подает входные данные, заставляющие модель полностью игнорировать свои протоколы безопасности. Разработчики могут встраивать защитные меры в системные инструкции (system prompts) и в обработку входных данных, чтобы снизить риск атак внедрения, однако эффективное предотвращение джейлбрейка требует постоянного обновления обучения модели и ее механизмов безопасности.

Тяжесть и характер последствий успешной атаки внедрения инструкций могут сильно различаться и во многом зависят как от бизнес-контекста, в котором работает модель, так и от степени автономности (agency), заложенной в архитектуру модели. В целом внедрение инструкций может приводить к непредусмотренным последствиям, включая, помимо прочего: раскрытие конфиденциальной информации; раскрытие конфиденциальных сведений об инфраструктуре AI-системы или о системных инструкциях; манипулирование контентом, ведущее к неверным или предвзятым результатам; предоставление несанкционированного доступа к функциям, доступным LLM; выполнение произвольных команд в подключенных системах; манипулирование критически важными процессами принятия решений.

Развитие мультимодального AI, одновременно обрабатывающего данные нескольких типов, порождает особые риски внедрения инструкций. Злоумышленники могут использовать взаимодействие между модальностями, например скрывать инструкции в изображениях, сопровождающих безобидный текст. Сложность таких систем расширяет поверхность атаки. Мультимодальные модели также могут быть подвержены новым межмодальным атакам, которые сложно обнаруживать и нейтрализовать современными методами. Надежные средства защиты, учитывающие специфику мультимодальности, — важное направление дальнейших исследований и разработок.

Прямое внедрение инструкций (Direct Prompt Injections)

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

Косвенное внедрение инструкций (Indirect Prompt Injections)

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

Типовые примеры уязвимости

  1. Раскрытие конфиденциальной информации.
  2. Раскрытие конфиденциальных сведений об инфраструктуре AI-системы или о системных инструкциях.
  3. Манипулирование контентом, ведущее к неверным или предвзятым результатам.
  4. Предоставление несанкционированного доступа к функциям, доступным LLM.
  5. Выполнение произвольных команд в подключенных системах.
  6. Манипулирование критически важными процессами принятия решений.

Меры предотвращения и смягчения

  1. Уязвимости внедрения инструкций возможны из-за самой природы генеративного AI. С учетом стохастического характера, лежащего в основе работы моделей, неясно, существуют ли абсолютно надежные методы предотвращения внедрения инструкций. Тем не менее следующие меры позволяют снизить последствия таких атак.
  2. 1. Ограничение поведения модели. Задайте в системных инструкциях конкретные указания о роли модели, ее возможностях и ограничениях. Обеспечьте строгое следование контексту, ограничьте ответы конкретными задачами или темами и предпишите модели игнорировать попытки изменить базовые инструкции.
  3. 2. Определение и проверка ожидаемых форматов вывода. Задайте четкие форматы выходных данных, запрашивайте подробное обоснование и ссылки на источники, используйте детерминированный код для проверки соответствия этим форматам.
  4. 3. Фильтрация входных и выходных данных. Определите категории конфиденциальной информации и сформулируйте правила для выявления и обработки такого контента. Применяйте семантические фильтры и проверку строк для поиска недопустимого содержимого. Оценивайте ответы с помощью «триады RAG» (RAG Triad): релевантность контекста, обоснованность (groundedness) и релевантность пары «вопрос — ответ», чтобы выявлять потенциально вредоносные выходные данные.
  5. 4. Контроль привилегий и принцип минимальных привилегий. Предоставьте приложению собственные API-токены для расширяемой функциональности и обрабатывайте эти функции в коде, а не передавайте их модели. Ограничьте права доступа модели минимумом, необходимым для ее штатной работы.
  6. 5. Обязательное одобрение человеком действий с высоким риском. Внедрите контроль с участием человека (human-in-the-loop) для привилегированных операций, чтобы предотвратить несанкционированные действия.
  7. 6. Изоляция и маркировка внешнего контента. Отделяйте недоверенный контент и явно помечайте его, чтобы ограничить его влияние на пользовательские запросы.
  8. 7. Состязательное тестирование и моделирование атак. Регулярно проводите тестирование на проникновение и моделирование взломов, рассматривая модель как недоверенного пользователя, чтобы проверить эффективность границ доверия и механизмов контроля доступа.

Примеры сценариев атак

  1. Сценарий 1. Прямое внедрение. Атакующий внедряет инструкцию в чат-бот службы поддержки, предписывая ему игнорировать прежние правила, запросить данные из закрытых хранилищ и отправить электронные письма, что приводит к несанкционированному доступу и повышению привилегий.
  2. Сценарий 2. Косвенное внедрение. Пользователь с помощью LLM составляет краткое изложение веб-страницы, содержащей скрытые инструкции; они заставляют LLM вставить изображение со ссылкой на URL, что приводит к утечке (эксфильтрации) приватной переписки.
  3. Сценарий 3. Непреднамеренное внедрение. Компания включает в описание вакансии инструкцию для выявления откликов, сгенерированных AI. Соискатель, не зная об этой инструкции, использует LLM для улучшения резюме и непреднамеренно срабатывает механизм обнаружения AI.
  4. Сценарий 4. Намеренное влияние на модель. Атакующий изменяет документ в хранилище, используемом приложением с генерацией с дополненной выборкой (RAG). Когда запрос пользователя возвращает измененный контент, вредоносные инструкции искажают вывод LLM, порождая вводящие в заблуждение результаты.
  5. Сценарий 5. Внедрение кода. Атакующий эксплуатирует уязвимость (CVE-2024-5184) в почтовом помощнике на базе LLM, чтобы внедрить вредоносные инструкции, что позволяет получить доступ к конфиденциальной информации и манипулировать содержимым писем.
  6. Сценарий 6. Разделение полезной нагрузки (Payload Splitting). Атакующий загружает резюме с вредоносными инструкциями, разбитыми на части. Когда LLM используется для оценки кандидата, объединенные инструкции манипулируют ответом модели, и она дает положительную рекомендацию вопреки фактическому содержанию резюме.
  7. Сценарий 7. Мультимодальное внедрение. Атакующий встраивает вредоносную инструкцию в изображение, сопровождающее безобидный текст. Когда мультимодальная AI-система одновременно обрабатывает изображение и текст, скрытая инструкция изменяет поведение модели, что может привести к несанкционированным действиям или раскрытию конфиденциальной информации.
  8. Сценарий 8. Состязательный суффикс (Adversarial Suffix). Атакующий добавляет к запросу на первый взгляд бессмысленную строку символов, которая вредоносным образом влияет на вывод LLM и позволяет обойти защитные механизмы.
  9. Сценарий 9. Многоязычная или обфусцированная атака. Атакующий использует несколько языков или кодирует вредоносные инструкции (например, с помощью Base64 или эмодзи), чтобы обойти фильтры и манипулировать поведением LLM.

Связанные фреймворки и таксономии

  • MITRE ATLAS: AML.T0051.000 — LLM Prompt Injection: Direct (прямое внедрение инструкций), https://atlas.mitre.org/techniques/AML.T0051.000
  • MITRE ATLAS: AML.T0051.001 — LLM Prompt Injection: Indirect (косвенное внедрение инструкций), https://atlas.mitre.org/techniques/AML.T0051.001
  • MITRE ATLAS: AML.T0054 — LLM Jailbreak Injection: Direct (прямое внедрение джейлбрейка), https://atlas.mitre.org/techniques/AML.T0054
Ссылки из оригинала

Дополнительные материалы

ChatGPT Plugin Vulnerabilities - Chat with Code (Embrace the Red)ChatGPT Cross Plugin Request Forgery and Prompt Injection (Embrace the Red)Not what you’ve signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection (Arxiv)Defending ChatGPT against Jailbreak Attack via Self-Reminder (Research Square)Prompt Injection attack against LLM-integrated Applications (Cornell University)Inject My PDF: Prompt Injection for your Resume (Kai Greshake)Not what you’ve signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection (Cornell University)Threat Modeling LLM Applications (AI Village)Reducing The Impact of Prompt Injection Attacks Through Design (Kudelski Security)Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigations (nist.gov)2407.07403 A Survey of Attacks on Large Vision-Language Models: Resources, Advances, and Future Trends (arxiv.org)Exploiting Programmatic Behavior of LLMs: Dual-Use Through Standard Security AttacksUniversal and Transferable Adversarial Attacks on Aligned Language Models (arxiv.org)From ChatGPT to ThreatGPT: Impact of Generative AI in Cybersecurity and Privacy (arxiv.org)