Суть
Атакующему достаточно внедрить малую долю вредных документов (порядка 0.1% индекса), чтобы поменять логику ответов. Когда retriever достаёт чанк, вместе с полезным текстом в контекст модели попадает скрытая инструкция — и агент может её исполнить.
Зачем это нужно
RAG в блокноте рассматривался как способ дать агенту актуальные данные (RAG, Agentic RAG); эта заметка добавляет к нему security-измерение: индекс — это тоже недоверенный вход. Без провенанса источников любой агент с веб-доступом или пользовательской загрузкой документов уязвим.
Как работает
Вектор:
- Внедрение скрытого текста в документы, которые попадут в индекс (PDF, веб-страницы).
- Самоотравляющиеся системы — отдельный риск: самообучающиеся агенты с графами знаний ходят в интернет и дописывают свою базу; если выход пишется обратно в хранилище, ошибочный/вредный контент закрепляется.
Защита — провенанс и изоляция:
- Провенанс источников — вместе с чанком из векторной базы передаются метаданные: кто добавил документ, когда, через какой канал. Агент принимает решения не только по содержимому, но и по происхождению.
- Trust-метки источников:
source: internal_wiki, trust: highsource: user_uploaded_pdf, trust: mediumsource: scraped_web_page, trust: lowsource: external_email, trust: untrusted
- Изоляция недоверенного контента — не давать данным из низкодоверенных источников влиять на flow/вызовы инструментов без дополнительной проверки (spotlighting, см. Guardrails).
- Retrieval filtering (DLP) — фильтровать результаты поиска до попадания в контекст: документ с зарплатами может быть найден, но не должен уйти в промпт (DLP for LLM).
Место риска во внешнем рейтинге
OWASP Top 10 for LLM Applications 2026 — редакция, впервые опирающаяся на статистику реальных инцидентов, — сохраняет отравление данных и моделей в первой пятёрке рисков. Наверху рейтинга не оно: первые места заняли инъекции промпта и раскрытие чувствительной информации, третье — избыточные полномочия агента (Tool Hijacking).
Читать это стоит не как «отравление менее опасно», а как разницу в частоте: инъекцию может провести любой пользователь через входные данные, а отравление базы знаний требует доступа к конвейеру индексации. Ущерб при этом устойчивее — отравленный документ действует до следующей переиндексации и на всех пользователей сразу, тогда как инъекция живёт в пределах одной сессии.
Как искать отравленное уже в индексе
Фильтрация на входе не закрывает вопрос: документ мог попасть до внедрения фильтра или пройти его. Ретроспективный поиск строится на трёх признаках, ни один из которых не требует знать заранее, что искать.
Аномалия в векторном пространстве. Отравленный документ часто затачивается под широкий класс запросов, поэтому оказывается подозрительно близок к необычно большому числу разных запросов. Практически: прогнать эталонный набор запросов по индексу и найти чанки, попадающие в топ-K для семантически несвязанных запросов, — нормальный документ так себя не ведёт.
Тот же скан, что на входе, но по всему индексу. Маркеры инструкций (ignore previous, обращения к системному промпту, скрытый текст) ищутся регулярками и классификатором (Injection Detection) ретроспективно — это дёшево и ловит массовый случай, хотя и не адресную атаку.
Расхождение с источником. Самый надёжный признак и единственный, который ловит подмену содержимого: сверка хеша чанка с текущим состоянием документа-первоисточника. Чанк, который в индексе есть, а в источнике его текста больше нет, — либо устаревший, либо внедрённый.
Отсюда же практика: версия индекса и хеш источника хранятся в метаданных чанка (RAG Observability) — без них ретроспективная сверка невозможна, а восстановить их задним числом нельзя.
Связано с
Model Poisoning — отравление на обучении: чинится не удалением документа, а переобучением
Embedding Attacks — три соседние механики: инверсия, глушение, вывод о членстве
Memory Poisoning — тот же класс атаки, но в доверенном слое памяти, а не во внешнем корпусе
Prompt Injection — RAG poisoning = косвенная инъекция через индекс
RAG — базовый механизм, к которому добавляется security-слой
Guardrails — изоляция недоверенного контента, «документы — это данные»
DLP for LLM — retrieval filtering на этапе поиска
Agent Security — место в модели угроз