Защита от Prompt Injection в 2026: trust boundaries, tool isolation и tripwires
Prompt injection defense в 2026: indirect injection, trust boundaries, privilege separation, tool isolation, tripwires и output validation.
Prompt injection в 2026 уже нельзя описывать как редкий трюк в стиле "игнорируй все предыдущие инструкции". Главная проблема не в форме фразы, а в том, что LLM-система смешивает данные, инструкции и полномочия. Как только это случается, вредный текст из user input, RAG-документа, email, web page или tool output начинает влиять на поведение агента сильнее, чем должен.
Поэтому нормальная защита строится не вокруг одного system prompt, а вокруг нескольких слоёв:
trust boundaries;
privilege separation;
tool isolation;
output validation;
tripwires и review paths.
Prompt injection похож на ситуацию, где сотрудник читает письмо клиента и вдруг начинает воспринимать текст из письма как приказ от своего начальника. Проблема не в самом письме, а в том, что система не различает источники authority.
Если ваша защита звучит как "мы очень хорошо написали системный промпт", значит defence layer почти наверняка недостаточен. Сильный prompt полезен, но сам по себе не отделяет данные от полномочий и не ограничивает side effects.
Система кладёт retrieved page в тот же prompt-layer, где лежат управляющие инструкции. Модель спокойно воспринимает вредный текст из страницы как authority.
С техникой
Retrieved content маркируется как untrusted data, инструменты ограничены, risky actions требуют отдельного policy check, а подозрительные traces активируют tripwire.
ПромптInjection defense
Почему indirect prompt injection опаснее direct user injection?
Ответ модели
Потому что вредная инструкция приезжает из контента, который система склонна считать легитимным: документа, письма, web page или tool output. Это ломает trust boundary между данными и authority.
Вредная инструкция приходит не из chat input, а из контента:
retrieved document;
web page;
PDF;
email;
OCR text;
tool output;
summary memory.
Именно indirect injection особенно разрушителен для RAG и browser-use сценариев. Система считает, что "просто читает данные", но фактически вносит в контекст новый управляющий сигнал.
Самая важная практическая мера - на уровне pipeline различать:
Слой
Как к нему относиться
System / policy
trusted instructions
User request
low-trust intent source
Retrieved docs
untrusted data
Tool results
partially trusted, но не authority
Memory / summaries
derived data, может содержать drift
Это должно влиять не только на wording, но и на саму оркестрацию:
untrusted data не должна напрямую менять tool permissions;
dangerous actions не должны запускаться по одному model suggestion;
memory не должна silently повышаться до policy source.
Всё, что пришло извне системы, считайте данными по умолчанию. Authority у него должна появляться только через отдельную проверку, а не автоматически из-за того, что текст попал в prompt.
Инъекция не всегда живёт в raw data. Иногда она переживает compaction и попадает в memory summary уже в виде "нормализованного" instruction-like текста.
источник suspicious content: user, retrieval, web, tool, memory;
какой tripwire сработал;
пыталась ли модель запросить risky tool;
какой layer остановил выполнение;
был ли кейс передан человеку или завершён автоматически.
Практический совет: отдельно храните detected injection attempt и dangerous action prevented. Иначе команда видит только число "подозрительных кейсов", но не понимает, где защита реально прерывает risk chain.
Проверьте себя
1. Что является корневой причиной prompt injection в production-системе?
2. Почему indirect injection особенно опасен для RAG и browser-use?
3. Какой защитный слой особенно важен даже после model output?