Суть
Отличие от отравления базы знаний (RAG Poisoning) в том, куда попадает вредное содержимое. Там — во внешний корпус, который система изначально считает справочным материалом. Здесь — в профиль, хранилище сводок, индекс извлечения или состояние рабочего пространства, то есть в слой, которому рантайм доверяет по построению.
Типичный путь заражения не требует злоумышленника: фраза пользователя, результат непроверенного поиска или сводка из инцидента попадает в долговременную память, приобретает вид стабильного знания и через несколько запусков начинает влиять на решения.
Шесть проверок сценария
Минимальный разбор, который отличает работающую защиту от декларации:
- Непроверенная запись — может ли непроверенный источник вообще попасть в устойчивую память (Memory Write Policy).
- Отложенная активация — влияет ли запись на поведение не сразу, а в следующем запуске или в другой сессии. Это то, что делает отказ трудно обнаружимым: причина и следствие разнесены во времени.
- Заражение между арендаторами — может ли запись пересечь границу арендатора или роли доступа (Multi Tenancy AI).
- Влияние на политику — используется ли непроверенная память в решении политики, подтверждении или выборе инструмента. Самый опасный пункт: здесь персонализация превращается в канал влияния на права (Agent Control Plane).
- Проверка происхождения — видит ли оператор источник, идентичность записавшего, состояние валидации и время записи.
- Карантин и откат — можно ли отключить запись, переиграть затронутые трассы и объяснить, какие ответы она изменила.
Последний пункт — то, что отличает восстановимую систему от невосстановимой. Если нельзя ответить, какие ответы изменила плохая запись, её удаление не устраняет последствия.
Граница арендатора — не та гранулярность для командной памяти. Проверка «заражение между арендаторами» не ловит путь, при котором запись остаётся внутри одного арендатора, но переходит между людьми. Разобранный случай: урок участника публикуется в отдельную незащищённую ветку командного репозитория — по замыслу, чтобы вклад не требовал прав на основную ветку, — а поиск по урокам ранжирует его в контекст агентов коллег. Непроверенная запись одного человека становится контекстом другого без промежуточной области и без того, чтобы второй об этом знал. Поиск в разобранной реализации по умолчанию выключен, так что это путь конфигурации, а не умолчания; но граница, которую стоит проверять, проходит по автору записи, а не по арендатору.
Отравление бывает разрушительным, а не только добавляющим
Шесть проверок выше написаны для записи, которая добавилась: она лежит в памяти рядом с верными и влияет на ответы. Там, где слой памяти сам разрешает противоречия, вредная запись ведёт себя иначе — она вытесняет верную, и прежнее значение исчезает.
Разница не в тяжести последствий, а в том, что перестаёт работать:
- Сканирование на текст, похожий на инструкцию, не срабатывает. Разрушительная запись выглядит обычным утверждением — «клиент перешёл на другой тариф», «ограничение снято» — и обязана так выглядеть, иначе слой не признает её противоречащей прежней.
- Удаление вредной записи ничего не восстанавливает. Верное значение уже стёрто; после удаления память не возвращается в прежнее состояние, а остаётся без факта вообще.
- Пункт «карантин и откат» меняет смысл. Откатывать надо не появление записи, а исчезновение другой, — а её содержимого в системе может уже не быть.
Отсюда требование к слою памяти, которое видно только с этой стороны: вытеснение обязано быть обратимым. Годятся две формы — линия вытеснения, где заменённый факт сохраняется с пометкой «заменён вот этим» (Mem0), или откат хранилища к состоянию до записи. Слой, который при разрешении противоречия просто перезаписывает значение, делает этот класс отравления невосстановимым — и при этом выглядит аккуратнее того, который копит противоречия рядом.
Сканирование устойчивого состояния при старте
Зрелый рантайм начинает запуск не только с загрузки памяти, но и с проверки того, что загружает: происхождение, область арендатора, свежесть, версия политики записи, признак карантина и признаки текста, похожего на инструкцию — до того, как запись попадёт в подсказку или в контекст политики.
Последний признак закрывает конкретный сценарий: запись, сохранённая как «предпочтение», содержит формулировку в повелительном наклонении и при подстановке в подсказку читается моделью как указание (Prompt Injection, Trust Boundary Agent).
Практическое правило
Память, способная пережить запуск, проходит не только ревью качества данных, но и ревью модели угроз. Иначе система получает долговременный канал атаки, который выглядит как обычная функция персонализации и потому никем не проверяется.
Связано с
- Memory Write Policy — политика, закрывающая путь заражения
- RAG Poisoning — соседний класс: заражение внешнего корпуса
- Agent Security — общая модель угроз и связка с проверяемым следом
- Memory Boundaries — границы доверия между слоями памяти
- Agent Control Plane — почему память не должна влиять на решения политики
- Prompt Injection — механизм, которым запись превращается в инструкцию
- Multi Tenancy AI — граница арендатора, которую запись может пересечь
- Agent Audit Log — след, по которому переигрываются затронутые запуски
- Mem0 — слой, разрешающий противоречия автоматически, и линия вытеснения как условие обратимости