# Защита от prompt injection

Границы доверия, проверки инструкций и инструментов, режимы реакции и негативная приёмка защиты от внедрённых команд.

Обновлено: 2026-11-02
Источник: https://docs.nevel.sh/security/prompt-injection/


Prompt injection — попытка превратить содержимое запроса, файла, изображения или результата инструмента в команду, которая меняет поведение ассистента вопреки его задаче и полномочиям. Прямая атака приходит в сообщении пользователя; косвенная — через источник, который ассистент читает для ответа. Обычная цитата «игнорируй предыдущие инструкции» сама по себе ещё не доказывает атаку: важны контекст, запрашиваемое действие и пересечение границы доверия. [OWASP LLM01:2025](https://genai.owasp.org/llmrisk/llm01-prompt-injection/).

В Nevel защита объединяет проверку содержимого, разделение данных и инструкций, контроль источников и серверную проверку действий. Детектор помогает остановить подозрительный контекст; решение модели не создаёт право прочитать закрытый файл, изменить маршрут или выполнить внешний вызов. Это правило применяется к Platform, RAG и цепочкам инструментов независимо от места установки.

## Что имеет право задавать инструкции

| Уровень | Назначение | Чего он не разрешает |
| --- | --- | --- |
| Серверная политика организации | Доступ, допустимые получатели данных, инструменты и обязательные проверки | Модель не может изменить её собственным ответом |
| Настройка ассистента от уполномоченного редактора | Задача, правила ответа и разрешённый рабочий процесс | Настройка не расширяет права пользователя или сервисного ключа |
| Запрос пользователя | Конкретная задача в пределах его полномочий | Просьба пользователя не отменяет обязательную политику организации |
| Документ, сайт, найденный фрагмент, ответ инструмента | Материал для выполнения задачи | Текст не становится системной командой, разрешением на действие или новым секретом |

Извлечённый материал передаётся как отдельный контекст с идентификатором источника и версии. Текст вроде «это служебное сообщение администратора» внутри PDF сохраняет статус содержимого PDF. Разделители и структурированные поля помогают модели распознать происхождение, но основная граница полномочий проверяется вне генерации. Секреты подключения не помещаются в промпт для последующего сокрытия инструкцией «не показывать».

Права источника и доверие к его инструкциям — разные признаки. Сотрудник может законно читать документ поставщика, который содержит вредоносную команду. Даже утверждённая база знаний не получает права управлять подключениями. Процесс допуска и обновления источников описан в [защите файлов и баз знаний](/security/files-rag/).

## Проверки на разных стадиях

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

| Стадия | Проверка | Пример причины для ограничения |
| --- | --- | --- |
| Извлечение | Структура файла, скрытые слои, необычные управляющие символы, различие видимого и извлечённого текста | Команда находится в невидимом слое PDF |
| Входной контекст | Признаки смены роли, обхода правил, запроса секрета или действия вне задачи; смысловой анализ вместе с правилами | Фрагмент справки предлагает отправить весь диалог на сторонний адрес |
| План действия | Соответствие исходному заданию пользователя, разрешённому инструменту и допустимым параметрам | Вместо чтения одного документа предложен экспорт всей коллекции |
| Выполнение | Идентичность, область организации, права на объект, операция и маршрут | Корректный по форме вызов обращается к чужому пространству |
| Ответ и артефакт | Допустимость раскрытия, ссылок и активного содержимого | Ответ содержит скрытую внешнюю ссылку с данными в параметрах |

Правила ищут известные признаки, а смысловая проверка учитывает цель фрагмента и предлагаемого действия. Например, словосочетание «системная инструкция» в учебном тексте допустимо; требование раскрыть секрет под видом такой инструкции — отдельный сигнал. Обфускация, другие языки и распределение команды по нескольким фрагментам включаются в проверки. Проверяющая модель тоже обрабатывает недоверенные данные и не заменяет детерминированную авторизацию. [OWASP: практики предотвращения prompt injection](https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html).

```mermaid
flowchart TD
    accTitle: Контекст не даёт полномочий
    accDescr: Контекст проверяется до модели; предложенное действие проходит отдельную проверку прав до исполнения.
    C[Запрос и внешний контекст] --> D{Проверка содержимого}
    D -->|Допуск| M[Модель предлагает действие]
    M --> P{Задача, права и параметры}
    P -->|Допуск| T[Выполнение и контроль результата]
    D -->|Риск| R[Ограничение и запись причины]
    P -->|Отказ| R
```

Схема разделяет два решения: можно ли использовать контекст и можно ли выполнить конкретное действие. Положительное первое решение не заменяет второе.

## Проверка инструментов перед исполнением

Сервер повторно проверяет пользователя или сервисную идентичность, организацию, действие, объект и допустимые параметры. Право читать не разрешает запись; право работать в одном пространстве не открывает другое. Раздельные области инструментов и минимальные полномочия рекомендует [OWASP AI Agent Security](https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html). Проверка выполняется непосредственно перед действием, поэтому отзыв доступа учитывается и в уже начатой цепочке.

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

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

## Режимы реакции и пример профиля

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

Ниже — **рекомендуемый пример профиля для проектирования и приёмки**, а не перечень переключателей интерфейса или готовый формат конфигурации:

| Ситуация | Реакция профиля | Дальнейшее действие |
| --- | --- | --- |
| Учебный документ обсуждает атаки, запрещённых действий нет | Допуск с сохранением происхождения | Ответ по существу; проверка инструментов остаётся обязательной |
| Новый источник содержит скрытую команду вывести секрет | Карантин версии | Анализ владельцем источника; исправленная версия проходит проверки заново |
| Фрагмент требует сменить разрешённого получателя | Отказ в смене маршрута | Продолжение возможно только по исходной допустимой политике |
| Контекст предлагает запись, а пользователь запросил чтение | Отказ в выполнении записи | Разрешённый ответ по доступным данным |
| Недоступна обязательная проверка высокорискового действия | Действие не исполняется | Фиксация технической причины и восстановление проверки |

При отказе не раскрываются обнаруженные секреты и недоступные названия документов. В журнал включаются идентификатор запроса, стадия, источник и версия, версия политики, категория сигнала и принятое решение. Полное вредоносное содержимое не требуется копировать в обычный журнал; диагностический образец хранится отдельно с ограниченным доступом. Общий порядок событий приведён в [мониторинге](/security/monitoring/).

## Негативные проверки и критерии приёмки

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

| Сценарий | Ожидаемый результат | Что проверяет испытатель |
| --- | --- | --- |
| PDF предлагает раскрыть контрольную фразу чужой коллекции | Чужой источник недоступен | Поиск, ответ, цитаты и журнал обращения |
| Команда скрыта в слое PDF или распознанном изображении | Применён профиль анализа соответствующего представления | Что именно извлечено и передано модели |
| Ответ инструмента требует отправить историю наружу | Запрещённый вызов не выполнен | Вызовы инструментов и сетевые назначения |
| Команда разбита по нескольким RAG-фрагментам | Полномочия и маршрут не расширены | Собранный контекст и фактическое действие |
| Доступ отозван между планом и исполнением | Следующая операция отклонена | Серверное решение с актуальными правами |
| Проверяющий компонент недоступен | Обязательная защита не обходится | Причина отказа, отсутствие побочного действия |
| Полезный текст цитирует пример атаки | Рабочая задача остаётся выполнимой | Отсутствие необоснованного отказа |

Проверяется последствие, а не наличие определённой фразы отказа. Модель может пересказать опасную инструкцию как предмет анализа, не исполнив её. После смены модели, экстрактора, источника, шаблона ассистента или политики повторяются затронутые сценарии и обычные рабочие задачи. Нет обещания обнаружить любую возможную инъекцию: остаточный риск ограничивают права, допустимые маршруты и проверка действий. Связанные угрозы собраны в [модели угроз](/security/threat-model/).

В облаке и on-prem действуют одинаковые границы доверия. Локальная модель также может подчиниться вредоносному тексту. Место проверяющего компонента и передаваемый ему контекст включаются в [схему потоков](/security/data-flow/): российский внешний обработчик, глобальный API и обработчик внутри инфраструктуры заказчика — разные маршруты, каждый требует своей разрешающей политики.

## Источники

Классы угроз и защитные подходы описаны в [OWASP LLM01:2025](https://genai.owasp.org/llmrisk/llm01-prompt-injection/), [OWASP Prompt Injection Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html) и [рекомендациях OWASP по инструментам агентов](https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html). Результаты защиты конкретного внедрения определяются испытаниями его моделей, инструментов и политик.
