# LLM07 Утечка системного промпта (System Prompt Leakage)

> Перевод OWASP Top 10 for LLM Applications 2025 (OWASP GenAI Security Project), лицензия CC BY-SA 4.0. Перевод неофициальный.

- Канонический HTML: [/owasp-llm-top-10/llm07](https://ai-first.tech/owasp-llm-top-10/llm07)
- Язык: русский
- Редакционный принцип: защитный контекст без вредоносных полезных нагрузок и инструкций обхода.

## LLM07 Утечка системного промпта (System Prompt Leakage)

Уязвимость утечки системного промпта (System Prompt Leakage) в LLM связана с риском того, что системные промпты или инструкции, задающие поведение модели, могут содержать конфиденциальную информацию, которая не предназначалась для раскрытия. Системные промпты служат для того, чтобы направлять вывод модели в соответствии с требованиями приложения, но могут непреднамеренно содержать секреты. Будучи обнаруженной, такая информация может использоваться для проведения других атак.

Важно понимать, что системный промпт не следует считать секретом и не следует использовать как средство защиты. Соответственно, конфиденциальные данные, такие как учётные данные, строки подключения и т. п., не должны содержаться в тексте системного промпта.

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

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

### Типовые примеры

- Раскрытие чувствительной функциональности. Системный промпт приложения может раскрывать конфиденциальную информацию или функциональность, такую как чувствительные сведения об архитектуре системы, ключи API, учётные данные базы данных или токены пользователей. Злоумышленники могут извлечь их и использовать для несанкционированного доступа к приложению. Например, системный промпт, в котором указан тип базы данных, используемой инструментом, может позволить злоумышленнику нацелить на неё атаки с SQL-инъекциями.
- Раскрытие внутренних правил. Системный промпт приложения раскрывает сведения о внутренних процессах принятия решений, которые должны оставаться конфиденциальными. Эта информация позволяет злоумышленникам понять, как работает приложение, и использовать его слабые места или обойти механизмы контроля. Например, у банковского приложения есть чат-бот, и его системный промпт может раскрывать сведения вроде «Лимит транзакций для пользователя — 5000 долларов в день. Общая сумма кредита для пользователя — 10 000 долларов». Эта информация позволяет злоумышленникам обойти механизмы контроля в приложении, например совершать транзакции сверх установленного лимита или обойти ограничение на общую сумму кредита.
- Раскрытие критериев фильтрации. Системный промпт может предписывать модели фильтровать или отклонять чувствительный контент. Например, у модели может быть системный промпт вида: «Если пользователь запрашивает информацию о другом пользователе, всегда отвечай: Извините, я не могу помочь с этим запросом».
- Раскрытие прав доступа и ролей пользователей. Системный промпт может раскрывать внутреннюю структуру ролей или уровни прав доступа приложения. Например, системный промпт может сообщать: «Роль администратора даёт полный доступ к изменению записей пользователей». Узнав о таких ролевых правах, злоумышленники могут попытаться провести атаку на повышение привилегий.

### Меры предотвращения

- Отделение конфиденциальных данных от системных промптов. Не встраивайте конфиденциальную информацию (например, ключи API, ключи аутентификации, имена баз данных, роли пользователей, структуру прав доступа приложения) непосредственно в системные промпты. Вместо этого выносите такую информацию в системы, к которым модель не имеет прямого доступа.
- Отказ от строгого управления поведением через системные промпты. Поскольку LLM подвержены другим атакам, например промпт-инъекциям, способным изменить системный промпт, рекомендуется по возможности не использовать системные промпты для управления поведением модели. Вместо этого обеспечивайте нужное поведение системами вне LLM. Например, обнаружение и блокирование вредоносного контента должны выполняться во внешних системах.
- Внедрение защитных ограничений (guardrails). Реализуйте систему защитных ограничений вне самой LLM. Хотя обучение модели определённому поведению, например обучение не раскрывать системный промпт, может быть эффективным, оно не гарантирует, что модель всегда будет его соблюдать. Независимая система, способная проверять вывод и определять, соответствует ли поведение модели ожиданиям, предпочтительнее инструкций в системном промпте.
- Применение механизмов защиты независимо от LLM. Критически важные механизмы контроля, такие как разделение привилегий, проверка границ авторизации и подобные, не должны делегироваться LLM ни через системный промпт, ни иным способом. Эти проверки должны выполняться детерминированно и с возможностью аудита, а LLM (на данный момент) для этого не подходят. Если агент выполняет задачи, требующие разных уровней доступа, следует использовать несколько агентов, каждый из которых настроен с минимальными привилегиями, необходимыми для выполнения своих задач.

### Сценарии атак

- Сценарий №1. Системный промпт LLM содержит набор учётных данных для инструмента, к которому модели предоставлен доступ. Системный промпт утекает к злоумышленнику, и тот может использовать эти учётные данные в других целях.
- Сценарий №2. Системный промпт LLM запрещает генерацию оскорбительного контента, внешних ссылок и выполнение кода. Злоумышленник извлекает этот системный промпт, а затем с помощью промпт-инъекции обходит эти инструкции, что открывает путь к атаке с удалённым выполнением кода (RCE).
