В пятницу в 9:15 утра 32-летний пациент зашел в портал клиники, чтобы скачать выписку после визита к ЛОРу с острой отитом. Верхняя часть документа была стандартной: диагноз H66.91, рецепт на Амоксициллин 875 мг и план наблюдения. Однако ниже, отделенная горизонтальной линией, появилась секция «Дополнительный клинический прием и история психического здоровья», сгенерированная автономным ассистентом клиники. В ней описывались суицидальные мысли, биполярное расстройство I типа и галлюцинации — данные, которые принадлежали совершенно другому пациенту, проходившему психиатрический прием в соседнем кабинете 20 минут назад.
Этот инцидент не был результатом взлома базы данных или SQL-инъекции. Причиной стала архитектурная уязвимость в многопользовательской среде исполнения LLM-агентов, известная как «контекстное кровотечение» (Context Bleed). Когда агенты работают в пуле «теплых» процессов для снижения задержек, остатки токенов предыдущей сессии могут просачиваться в контекст новой, если память не очищается на уровне ядра.
Механика утечки: почему это происходит
Проблема кроется в попытках инженеров оптимизировать стоимость и скорость работы LLM. Чтобы избежать «холодного старта» (который добавляет 1,5–3 секунды задержки на каждый запрос), системы поддерживают пул долгоживущих рабочих процессов. Эти процессы переиспользуют контекстные окна и разделяют Key-Value (KV) кэш между последовательными вызовами API.
Если рабочий процесс завершает обработку данных Пациента А и сразу же начинает обрабатывать запрос Пациента Б без полного завершения процесса и обнуления памяти, остаточные токены остаются доступными в неосвобожденных буферах. Головки внимания (Attention Heads) модели начинают «видеть» эти токены и генерировать ответы, смешивая контексты.
| Этап атаки/ошибки | Действие системы | Результат для данных |
|---|---|---|
| Сессия 1 (Пациент А) | Загрузка данных о психиатрическом приеме в KV-кэш | Токены: bipolar_I, suicidal_ideation остаются в памяти |
| Переключение контекста | Процесс переключается на Пациента Б без очистки памяти | Буфер содержит «остаточные» токены Пациента А |
| Сессия 2 (Пациент Б) | Генерация выписки по отиту | Модель attends к «теплым» токенам Пациента А |
| Финальный вывод | Синтез единого документа | Утечка PHI: диагноз Пациента А в выписке Пациента Б |
Последствия и требования к архитектуре
Такой инцидент мгновенно классифицируется как нарушение HIPAA Title II. Клиника обязана объявить экстренное раскрытие данных, уведомить Управление по гражданским правам (OCR) Министерства здравоохранения и социальных служб США и начать расследование. Для предотвращения подобных ситуаций недостаточно просто шифровать данные в покое или при передаче. Необходима архитектура zero-trust, которая гарантирует изоляцию памяти на уровне процессов.
Ключевые меры защиты включают:
- Изоляция процессов: Завершение и перезапуск процесса инференса для каждого нового пациента вместо переиспользования «теплых» воркеров.
- Очистка памяти: Принудительное обнуление буферов KV-кэша на уровне операционной системы перед началом новой сессии.
- Сегментация контекста: Использование аппаратных или программных песочниц для разделения векторных хранилищ разных пациентов.
Этот случай демонстрирует, что безопасность LLM в медицине — это не только вопрос промптов, но и глубокой инженерной дисциплины в управлении памятью и жизненным циклом процессов.
Источник: Towards AI pub ↗
