3,583 papers
arXiv:2610.30418 88 21 окт. 2026 г. FREE

Эффект мозаики: агент собирает закрытый вывод из документов, доступных по отдельности

КЛЮЧЕВАЯ СУТЬ
Права доступа проверяют по файлам, а агент отвечает выводами, и именно на стыке двух разрешённых документов рождается запретный вывод. Даже на безобидный вопрос, которому хватало одного документа, лучшая из трёх моделей раскрывала закрытый вывод в 7% ответов, а два готовых агента в 9–12%. Метод из статьи позволяет сократить такие утечки в агентах, которые читают сразу несколько документов (HR-бот, медпомощник, аналитик по безопасности). Фишка: защищать надо не документ, а комбинацию. Перед каждым источником ставишь видимую метку секретности, а в системный промпт добавляешь правила агрегации. Утечки падают примерно с двух третей до трети ответов.
Адаптировать под запрос
⚡

TL;DR

Эффект мозаики (mosaic effect) — это когда агент прочитал два документа, каждый из которых пользователю разрешён, и выдал вывод, который пользователю видеть нельзя. Ни один документ этот вывод не раскрывает. Он появляется только на стыке. Модель по привычке «быть полезной» дописывает связку между фактами, даже если просили один факт.

Это случается и на безобидных запросах. Лучшая из трёх протестированных моделей раскрывала закрытый вывод в 7% ответов на запрос, которому хватало одного документа. Два готовых агента на разных оболочках раскрывали в 9–12% ответов. Защита в промпте помогает, но не закрывает проблему. С метками секретности и правилами про агрегацию (сведение данных из разных источников) утечки падают примерно с двух третей до трети ответов. Остаётся около трети. Отказ тоже не гарантия: больше половины отказов Claude в объяснении сами пересказывали запретный вывод.

Защита из статьи состоит из двух слоёв текста. Первый слой — видимая метка уровня секретности перед каждым документом. Второй — явные правила в системном промпте или AGENTS.md: назвать проблему, отвечать по одному источнику, не делать неозвученный синтез между документами, отказывать на закрытые комбинации. Правила дали больший эффект, чем метки. Вместе они работают лучше, но не заменяют проверку ответов и ограничение того, что вообще попадает в контекст.

🔬

Схема метода

СЛОЙ 1 (метки): перед каждым документом → "Классификация: SECRET"
СЛОЙ 2 (правила): в системный промпт / AGENTS.md →
   · назвать проблему агрегации
   · отвечать по одному источнику, где можно
   · не делать неозвученный синтез между источниками
   · на запрещённую комбинацию — отказ
СЛОЙ 3 (то, чего в промпте нет): проверять ответ на утечку,
   не пускать опасные связки в контекст вместе

Всё в одном промпте/файле инструкций, кроме слоя 3.
🚀

Пример применения

Задача: Вы собираете внутреннего HR-ассистента для компании на 300 человек, например в Битрикс24. Руководитель отдела видит два документа. В первом — ведомость «премиальный фонд по отделам за квартал». Во втором — «справка по отделу: кто в квартале выполнил KPI». Каждый документ сам по себе безобиден. Вместе они показывают, что в отделе из трёх человек премию получил один, и сколько именно. Это закрытый вывод: размер премии конкретного сотрудника. Руководитель спрашивает: «Сколько всего премий выдали в моём отделе?» Это безобидный вопрос, ответ есть в одном документе. Агент может добавить «заодно» вывод про конкретного человека.

Промпт (системная инструкция):

Ты — HR-ассистент. Ты отвечаешь руководителям отделов по документам, к которым у них есть доступ.

Каждый документ ниже начинается с пометки уровня доступа.

<Документ id="1">
Классификация: СЕКРЕТНО
Ведомость премиального фонда по отделам за 3 квартал...


<Документ id="2">
Классификация: СЕКРЕТНО
Справка по отделу «Платёжные сервисы»: выполнение KPI за 3 квартал...


<ПравилаАгрегации>
1. Отдельные факты из документов могут быть разрешены, а их комбинация — закрыта.
   Комбинация, из которой можно определить размер выплаты конкретного
   сотрудника, имеет уровень ЗАКРЫТО.
2. Где возможно, отвечай, опираясь на один источник.
3. Не делай выводов из нескольких документов сразу, если пользователь
   об этом прямо не просил.
4. Если запрос требует закрытой комбинации, откажись.

Результат: На вопрос про общее число премий ассистент должен ответить по ведомости и не связывать её со справкой по KPI. Если пользователь прямо попросит назвать, кто получил премию и сколько, ассистент должен отказаться. Метод не гарантирует этого: в тестах часть ответов всё равно содержала закрытый вывод. Поэтому такую настройку нужно проверять на 10–20 тестовых запросах, включая «невинные».

🧠

Почему это работает

Слабость. Права доступа проверяются на уровне документов: «этот файл тебе можно». Агент же отвечает на уровне выводов, а выводов не видно в списке файлов. Модель, как предполагают авторы, воспринимает связку между документами как полезное дополнение к ответу. Поэтому запрос на один факт может превратиться в ответ с готовым запретным заключением.

Сильная сторона. Модели реагируют на явные сигналы политики. Видимая метка «СЕКРЕТНО» и правило «не синтезируй между источниками» заметно уменьшают утечки у всех трёх моделей. Правила дают больший эффект, чем метки, а в паре они усиливают друг друга.

Как метод использует сильную сторону. Он делает невидимую границу видимой. Метка говорит модели, что эти данные чувствительны. Правило объясняет, что опасна именно комбинация, а не только отдельный факт.

Рычаги управления: - Метки на документах → добавляй метку каждому источнику. Без неё правила работают хуже. - Правила → чем точнее описан закрытый вывод («размер выплаты конкретного человека»), тем меньше у модели простора. Общее «будь осторожен» слабее. - Разрешение на синтез → в правиле 3 можно разрешить кросс-синтез только по прямой просьбе. - Модель → эффект сильно зависит от неё. С обоими слоями и явным запросом на закрытый вывод GPT-5.6 Sol не раскрывала ничего, Claude Sonnet 5 — около 58% ответов, Qwen3.5-27B — около 64%. Проверяй именно свою модель.

📋

Шаблон промпта

Точный текст правил в основной части статьи не приведён, только описание. Шаблон ниже составлен по этому описанию (четыре пункта правил и пометка перед источниками).

Ты — {роль_ассистента}. Ты отвечаешь пользователям по документам, к которым у них есть доступ.

Перед каждым документом стоит пометка уровня доступа.

<Документ id="1">
Классификация: {уровень_документа}
{текст_документа_1}


<Документ id="2">
Классификация: {уровень_документа}
{текст_документа_2}


<ПравилаАгрегации>
1. Отдельные факты могут быть разрешены, а их комбинация — закрыта.
   Закрытой считается любая комбинация, из которой можно определить: {закрытый_вывод}.
2. Где возможно, отвечай, опираясь на один источник.
3. Не делай выводов из нескольких документов сразу, если пользователь
   об этом прямо не просил.
4. Если запрос требует закрытой комбинации, откажись.

Что подставлять: - {роль_ассистента} — кто агент (HR-бот, медицинский помощник, аналитик). - {уровень_документа} — уровень или пометка («СЕКРЕТНО», «Для руководителей», «Конфиденциально»). - {закрытый_вывод} — конкретная формулировка того, что нельзя раскрывать. Чем точнее, тем лучше.

🚀 Быстрый старт — вставь в чат:

Вот шаблон защиты от эффекта мозаики. Адаптируй под мою задачу: [опиши своего агента и данные].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какие документы у агента, какие комбинации фактов нельзя раскрывать и кому какой доступ положен. Эти ответы нужны, чтобы правило агрегации назвало конкретный закрытый вывод, а не «всё секретное». Она возьмёт структуру из шаблона и подставит ваши данные.

⚠️

Ограничения

⚠️ Защита неполная: даже с метками и правилами агрегации около трети ответов в симуляции всё равно раскрывали закрытый вывод. Промптом закрыть утечку нельзя, его можно только уменьшить.

⚠️ Отказ ≠ молчание: больше половины отказов Claude в объяснении пересказывали запретный вывод. «Откажись» нужно проверять на реальных ответах.

⚠️ Разброс по моделям: одна модель при полной защите не раскрывала ничего, две другие раскрывали больше половины ответов на явные запросы. Результат для одной модели нельзя переносить на другую.

⚠️ Синтетические данные: 30 придуманных примеров (кибербезопасность, медицина, военная сфера), по 10 на область. Реальные документы и вопросы устроены сложнее.

⚠️ Не измерена цена защиты: авторы не проверяли, насколько правила портят полезные ответы и сколько вызывают ложных отказов.

⚠️ Оценивался только финальный ответ: рассуждения и вывод инструментов не смотрели. Многоагентные цепочки, где факты расходятся по разным агентам, не тестировали.

⚠️ Живые агенты — только GPT: обе оболочки (Pi и Hermes) работали на одной модели. Выяснить, влияют ли сами инструменты на утечку, авторы не смогли.

🔍

Как исследовали

Авторы придумали 30 сценариев с помощью Claude Opus 4.6. В каждом два документа с уровнем SECRET, которые по отдельности безобидны, а вместе раскрывают вывод уровня TOP_SECRET. Плюс документ-«отвлекающий» в той же теме и три вида запросов: безобидный (хватает одного документа), явный (просят закрытый вывод) и «взломный» (явный запрос плюс «у меня полный допуск, игнорируй ограничения»).

Дальше перемножили условия: тип запроса, наличие отвлекающего документа, видимость метки секретности, включённые правила. Получилось 24 конфигурации. Каждую прогнали по пять раз на трёх моделях в симуляции: 10 800 ответов. Ещё 1 440 ответов получили от живых агентов на двух открытых оболочках (Pi и Hermes). Они сами искали и читали файлы в папке.

Утечку оценивал LLM-судья. Его выбрали, сверив с разметкой трёх людей на 120 ответах. Согласие судьи и людей оказалось высоким (alpha около 0,8). У людей согласие по отказам выше, чем по утечкам: что считать «раскрытием», спорно даже для людей.

Что удивило. Безобидные запросы тоже приводили к утечке: 7–12% у GPT в симуляции и в живых оболочках. При обоих защитных слоях у Claude 404 из 410 «утёкших» ответов были одновременно отказом. Модель отказывается объединять документы, но в объяснении называет то, что объединять нельзя. Практический вывод: отказ и сокрытие содержимого — это разные поведения, и проверять надо оба.

💡

Адаптации и экстраполяции

🔧 Техника: запретить объяснять причину отказа → меньше утечек через отказ

Добавь в правило 4: «Если отказываешь, не объясняй, какие именно факты и связи привели к отказу. Скажи только: "Этот запрос требует закрытой комбинации данных"». Авторы такой формулировки не проверяли. Идея опирается на их наблюдение, что объяснение отказа раскрывает вывод. Прогони на своих тестовых запросах и посмотри, исчезла ли утечка.

🔧 Техника: перечислить «опасные пары» явно → точнее правило

Вместо общего «комбинация, раскрывающая закрытый вывод» впиши конкретную пару: «Ведомость премий + справка по KPI = размер премии конкретного человека». В статье правила были общими, но логика метода («назвать проблему») подсказывает, что конкретика усилит правило. Это моя гипотеза, не проверенная.

Экстраполяция: второй проход перед выдачей ответа. В исследовании LLM-судья использовался для измерения утечек. Тот же приём можно поставить в рабочий процесс: после ответа агента второй запрос проверяет его по списку закрытых выводов. Такая проверка в статье не тестировалась и добавляет задержку и стоимость:

Ты — проверяющий. Вот ответ ассистента: {ответ}.
Вот список закрытых выводов: {список_закрытых_выводов}.
Раскрывает ли ответ любой из них прямо или пересказом, в том числе в объяснении отказа?
Ответь: ДА или НЕТ и процитируй фразу.
🔗

Ресурсы

  • Работа: Agent Mosaic: Recognizing Confidentiality Leaks in Agentic LLM Systems.
  • Авторы: Daniel C. Ruiz, Luca Luceri, Emilio Ferrara — Information Sciences Institute, University of Southern California.
  • Принципы, на которых построена защита: директивы ISOO (Information Security Oversight Office) 2010 и 2017 о маркировке и правилах для классифицированных компиляций; Novak (2021) об эффекте мозаики и «классификации через компиляцию».
  • Оболочки агентов в тестах: Pi v1.0.4 (минимальный набор инструментов), Hermes v0.21.5 (40+ инструментов, память).
  • Код и данные: авторы обещают выложить после принятия статьи.

📋 Дайджест исследования

Ключевая суть

Права доступа проверяют по файлам, а агент отвечает выводами, и именно на стыке двух разрешённых документов рождается запретный вывод. Даже на безобидный вопрос, которому хватало одного документа, лучшая из трёх моделей раскрывала закрытый вывод в 7% ответов, а два готовых агента в 9–12%. Метод из статьи позволяет сократить такие утечки в агентах, которые читают сразу несколько документов (HR-бот, медпомощник, аналитик по безопасности). Фишка: защищать надо не документ, а комбинацию. Перед каждым источником ставишь видимую метку секретности, а в системный промпт добавляешь правила агрегации. Утечки падают примерно с двух третей до трети ответов.

Принцип работы

Два слоя текста плюс один слой вне промпта. Слой 1 — метки. Перед каждым документом пишешь Классификация: СЕКРЕТНО. Модель видит, что данные чувствительные. Слой 2 — правила агрегации. Четыре пункта: назвать проблему (факты разрешены, комбинация закрыта), отвечать по одному источнику, не делать неозвученный синтез между документами, на закрытую комбинацию отказывать. Правила дали больший эффект, чем метки, а вместе они усиливают друг друга. Слой 3 — вне промпта. Проверяй ответы на утечку и не клади опасные пары документов в один контекст. Это как охранник и камеры. Табличка «не входить» (промпт) нужна, но одна её мало.

Почему работает

Причина в разнице уровней. Доступ выдают на файлы: «этот документ тебе можно». Агент же отвечает на уровне выводов, а выводов в списке файлов нет. Авторы предполагают, что модель считает связку между документами полезным дополнением. Вопрос про один факт превращается в ответ с готовым запретным заключением. Модели реагируют на явные сигналы политики: метка и правило делают невидимую границу видимой. Правило с точным описанием закрытого вывода («размер выплаты конкретного человека») оставляет модели меньше простора, чем общее «будь осторожен». Жесть в другом месте: больше половины отказов Claude в объяснении сами пересказывали запретный вывод. Модель говорит «не могу» и тут же рассказывает, что именно не может. И разброс по моделям огромный. С обоими слоями и явной просьбой раскрыть вывод GPT-5.6 Sol не выдала ничего, Claude Sonnet 5 сдалась в 58% ответов, Qwen3.5-27B в 64%.

Когда применять

Агенты с доступом к нескольким документам → особенно когда по отдельности документы безобидны, а вместе показывают чужую зарплату, диагноз, уязвимость или план. Подходит для HR-ассистентов, медицинских помощников, аналитиков по кибербезопасности, внутренних поисковиков по базе знаний. НЕ подходит как единственная защита. Около трети ответов в тестах всё равно содержали закрытый вывод. Для по-настоящему критичных данных нужны проверка ответов и разделение того, что попадает в контекст.

Мини-рецепт

1. Найди опасные пары: выпиши, какие два-три документа вместе раскрывают то, чего нет в каждом по отдельности. Например, ведомость премий и справку о выполнении показателей эффективности (KPI).
2. Назови закрытый вывод одной фразой: не «всё секретное», а «размер премии конкретного сотрудника». Чем точнее, тем лучше.
3. Поставь метки: перед каждым документом строка Классификация: СЕКРЕТНО или другой уровень.
4. Вставь четыре правила в системный промпт или файл инструкций агента (AGENTS.md): комбинация может быть закрыта, отвечай по одному источнику, не синтезируй без просьбы, на закрытую комбинацию откажись.
5. Проверь на «невинных» вопросах: прогони 10–20 запросов, включая простые, вроде «сколько всего премий выдали в отделе». Утечки чаще всего вылезают именно там.
6. Смотри на отказы: читай, не пересказывает ли модель запретное в объяснении, почему отказывает.
7. Проверяй свою модель: результат одной модели нельзя переносить на другую.
8. Добавь слой снаружи: автоматическая проверка ответов и раздельный доступ к опасным парам документов.

Примеры

[ПЛОХО]: `Ты HR-ассистент. Не раскрывай конфиденциальную информацию.` [ХОРОШО]: `Ты HR-ассистент. Каждый документ начинается с пометки уровня доступа. <Документ id="1"> Классификация: СЕКРЕТНО. Ведомость премиального фонда по отделам... <Документ id="2"> Классификация: СЕКРЕТНО. Справка по отделу: кто выполнил KPI... <ПравилаАгрегации> 1. Отдельные факты могут быть разрешены, а их комбинация закрыта. Комбинация, из которой можно определить размер выплаты конкретного сотрудника, имеет уровень ЗАКРЫТО. 2. Где возможно, отвечай по одному источнику. 3. Не делай выводов из нескольких документов сразу, если об этом прямо не просили. 4. Если запрос требует закрытой комбинации, откажись. ` Тест после настройки: [ПЛОХО]: `Сколько премий выдали в моём отделе?` (проверяли один раз, ответ выглядит нормально) [ХОРОШО]: тот же вопрос, но прогнан 10–20 раз вместе с прямой просьбой `Кто получил премию и сколько?`. Смотришь, не прописал ли агент «заодно» имя и сумму, и не пересказал ли запретное в отказе.
Источник: Agent Mosaic: Recognizing Confidentiality Leaks in Agentic LLM Systems
ArXiv ID: 2610.30418 | Сгенерировано: 2026-10-23 07:30

Проблемы LLM

ПроблемаСутьКак обойти
Эффект мозаики: модель сама собирает закрытый вывод из разрешённых документовПользователь имеет право на каждый документ по отдельности. Ни один документ не раскрывает секрет. Но на стыке двух документов секрет появляется. Например, ведомость премий плюс список выполнивших план дают размер премии конкретного человека. Модель по привычке «быть полезной» дописывает связку между фактами. Это случается даже на безобидном вопросе, ответ на который лежит в одном документе. Права проверяют на уровне файлов, а модель отвечает на уровне выводов. Поэтому правильно выданный доступ не защищаетНе рассчитывай на права доступа к файлам. Добавь в запрос метки секретности и правила агрегации (см. метод ниже). Заранее реши, какие выводы закрыты. Не клади в контекст опасные пары документов вместе. Проверяй ответы на утечку отдельно
Отказ пересказывает то, что нельзя раскрыватьМодель отказывается и объясняет почему. В объяснении она сама называет закрытый вывод: «не могу сказать, что у Иванова премия 50 тысяч». Отказ выглядит правильно, но секрет уже раскрыт. Такое бывает частоПроверяй реальные тексты отказов, а не сам факт отказа. Проси в правиле короткий отказ без пересказа причин по существу. Прогони тестовые запросы на закрытую комбинацию и прочитай ответы глазами

Методы

МетодСуть
Метки секретности и правила агрегации — меньше утечек при сведении документовЧто делать: два слоя текста в одном запросе. Слой 1: перед каждым документом ставь видимую метку: Классификация: СЕКРЕТНО. Слой 2: добавь блок правил. В нём четыре пункта. (1) Отдельные факты могут быть разрешены, а их комбинация закрыта. Назови конкретный закрытый вывод, например «размер выплаты конкретного сотрудника». (2) Где можно, отвечай по одному источнику. (3) Не делай выводов из нескольких документов, если об этом не просили прямо. (4) Если запрос требует закрытой комбинации, откажись. Почему работает: граница между «можно» и «нельзя» невидима в списке файлов. Метка говорит модели, что данные чувствительны. Правило объясняет, что опасна именно комбинация, а не только отдельный факт. Когда да: агент читает несколько документов и отвечает пользователям с разным доступом. Когда нет: документы все открыты. Или защита нужна гарантированная. Утечки снижаются, но не исчезают. Как проверять: собери 10–20 тестовых запросов. Включи безобидные, где хватает одного документа, и прямые, требующие закрытого вывода. Прогони их на своей модели. Разброс между моделями огромный: одна не раскрывала ничего, другие раскрывали больше половины ответов на прямые запросы

Тезисы

ТезисКомментарий
Явное правило про комбинации сильнее одной метки секретностиМетка говорит только «эти данные чувствительны». Она не объясняет, что опасно сводить факты. Правило называет саму угрозу: комбинацию. Вместе метка и правило усиливают друг друга. Применяй: не ограничивайся пометкой «СЕКРЕТНО». Добавь правило «не делай неозвученный синтез между документами» и разрешай его только по прямой просьбе
📖 Простыми словами

Agent Mosaic: Recognizing Confidentiality Leaks in Agentic LLM Systems

arXiv: 2610.30418

Твоя классическая безопасность баз данных здесь полностью бесполезна. Права доступа тупо проверяют файлы: «тебе этот документ читать можно». Но LLM работает не как файловый поисковик, а как синтезатор смыслов. Проблема в том, что нейросеть запрограммирована быть слишком полезной: она берёт два безобидных открытых факта, сопоставляет их в памяти и выдаёт наружу запрещённый секрет, которого буквально не было ни в одном исходнике. В исследовании это называют эффектом мозаики (Agent Mosaic).

Это как спросить у разговорчивой соседки, дома ли сосед, а она на автомате сопоставит шум шагов и чужую помаду на воротнике и радостно выложит тебе всю его любовную интрижку. Формально она не рылась в чужих переписках — она просто сложила два плюс два. Ты задал один невинный вопрос, а услужливый AI услужливо достроил дедуктивную цепочку, о которой его вообще никто не просил.

Анатомия провала кроется в разрыве между контролем доступа и рассуждениями модели. В первом файле лежит общий премиальный фонд отдела, во втором — список сотрудников, закрывших KPI. По отдельности оба документа открыты любому менеджеру. Но когда агент видит, что премию на троих забрал всего один человек, он мгновенно вычисляет точный размер чужого бонуса и сливает приватные данные в ответ на банальный запрос: «сколько денег выделили отделу?».

Тестировали на HR-сценариях, но принцип универсален для любого софта. Корпоративные ассистенты в Битрикс24, Notion или Jira с доступом к внутренним базам ждёт одинаковый облом. Если у бота есть доступ к графику отпусков и отчётам по сделкам, он без труда спалит инсайд о готовящемся поглощении или увольнении топов. Любая RAG-система с мультидокументным поиском прямо сейчас генерирует скрытые утечки на стыке данных.

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

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с