RAG и утечки данных: как поиск по базе знаний становится каналом слива

2026-09-04

RAG - самый популярный способ дать LLM доступ к знаниям компании: документы кладутся в векторный индекс, модель ищет по ним и отвечает с цитатами. И это же - самый частый канал утечки в наших аудитах: бот честно находит и пересказывает документ, который этому пользователю видеть нельзя. Разбираем, где именно RAG-архитектуры текут.

Почему RAG течёт: права проверяются не там

Классическая ошибка выглядит так: все документы компании индексируются в общий векторный индекс, поиск идёт по всему индексу, а права пользователя проверяются «где-то в приложении» - или не проверяются вообще. Дальше достаточно правильно сформулированного вопроса: «что написано в последнем отчёте о зарплатах?», «процитируй договор с клиентом X» - и модель добросовестно отвечает по документу, к которому у спрашивающего нет доступа.

Хуже того: даже если прямое цитирование запрещено промптом, содержимое чужого документа уже попало в контекст модели - и извлекается косвенно: через пересказ, через «сравни с…», через просьбу перевести. Единственная надёжная граница - не дать документу попасть в контекст вообще.

Четыре типовых сценария утечки

  • ◇Общий индекс без ACL: права не привязаны к документам, любой пользователь ищет по всему корпусу. Самый частый и самый грубый случай - встречается даже в продуктах для enterprise.
  • ◇Фильтрация после поиска: документы сначала достаются из индекса, потом отбрасываются по правам. Ошибка в фильтре, обновлённые права, документ с несколькими уровнями доступа - и «отброшенный» текст оказывается в контексте. Фильтровать нужно на этапе запроса к индексу.
  • ◇Утечка через метаданные и эмбеддинги: даже без содержимого сам факт существования документа («договор о поглощении компании Y.docx» в списке источников) - уже утечка. Названия, авторы и даты в цитатах выдачи требуют тех же прав, что и текст.
  • ◇Отравленный документ: инъекция в файле, который попадает в индекс, - письмо, тикет, загруженный пользователем документ. Модель читает его при ответе другому пользователю и выполняет вложенную команду: искажает ответ, выманивает данные из диалога, зовёт инструменты. Это уже не только утечка - это захват канала.

Как это проверяется на аудите

Проверка RAG - это по сути пентест контроля доступа, только через языковой интерфейс. Берём две учётки с разными правами и методично проверяем: находит ли пользователь A документы пользователя B - прямыми вопросами, перефразированием, поиском по метаданным, многоходовыми диалогами. Отдельный блок - инъекции: кладём в доступное для записи место (тикет, комментарий, загружаемый файл) документ с командой и смотрим, исполняет ли её модель при ответах другим пользователям.

Каждая находка фиксируется транскриптом диалога - это доказательство, которое нельзя оспорить словами «модель так не ответит». Отвечает, и отчёт это показывает.

Как строить RAG, который не течёт

  • ◇Права - на этапе retrieval: фильтр по ACL входит в сам запрос к индексу (metadata filtering, отдельные индексы или неймспейсы на тенанта). Ничего чужого в контексте - нечему утекать.
  • ◇Наследование прав от источника: документ в индексе несёт те же права, что в исходной системе (диск, wiki, CRM), и они синхронизируются при изменениях, а не один раз при индексации.
  • ◇Метаданные под теми же правами, что и текст: цитаты, названия и списки источников фильтруются так же, как содержимое.
  • ◇Входной контроль индекса: всё, что попадает в базу знаний из внешних или пользовательских источников, считается недоверенным - маркируется и не может «командовать» моделью.
  • ◇Логирование запросов и выдачи: какие документы попали в контекст какого диалога - без этого утечку нельзя ни обнаружить, ни оценить её масштаб.

FAQ

У нас все сотрудники и так имеют доступ ко всем документам. Нам это важно?
Пока бот внутренний и корпус действительно общий - риск ниже. Но проверьте два момента: не попадает ли в индекс то, что общим не является (HR, финансы, персональные данные), и что будет, когда бота откроют клиентам или партнёрам. Переделывать архитектуру прав задним числом сильно дороже.
Мы используем готовую RAG-платформу. Она же безопасна?
Платформа даёт механизмы (ACL, неймспейсы, фильтры) - но не гарантирует, что вы их правильно применили. Большинство утечек, которые мы находим, - ошибки конфигурации и интеграции, а не баги платформ.
Как быстро можно проверить наш RAG?
Базовые сценарии (чужие документы, утечка промпта, простые инъекции) входят в бесплатный экспресс-аудит за 2 дня. Полная проверка с ACL-матрицей, метаданными и отравленными документами - часть полного GenAI-пентеста, обычно 2–3 недели.
Проверьте свой RAG на утечки

Экспресс-аудит за 2 дня: две учётки, чужие документы, инъекции через базу знаний. Короткий отчёт с транскриптами доказанных находок.

Записаться на экспресс-аудит