Шифрование обходит защиту Grok: чат-бот сливает данные пользователей
Атаки типа prompt injection остаются одной из самых тяжёлых проблем больших языковых моделей: чат-бот не умеет надёжно отличать инструкции пользователя от постороннего текста, который он получает, скажем, при пересмотре письма или веб-страницы. Разработчикам приходится городить вокруг модели защитные фильтры — по меткому сравнению из статьи, это как поставить отбойник на опасном повороте вместо того, чтобы правильно спроектировать саму дорогу.
Rony Utevsky из компании Adversa нашёл обезоруживающе простой способ перепрыгнуть через этот отбойник. Вредоносную инструкцию не пишут открытым текстом — её шифруют. На той же странице рядом с шифротекстом лежит открытая инструкция по расшифровке и ключ. Стоит пользователю попросить Grok кратко изложить содержимое страницы, как модель послушно выполняет команду — без предупреждений и без запроса подтверждения.
Ключ, которого нет
Расшифрованная инструкция велит модели "собрать ключ дешифрования". На деле в качестве этого мнимого ключа подставляются имя пользователя, его местоположение и история переписки. Затем это значение приклеивается параметром к ссылке, ведущей на сервер атакующего. Grok открывает ссылку — и приватные данные оказываются в логах злоумышленника.
Почему модель отказывается выполнять ту же инструкцию открытым текстом, но охотно исполняет её в зашифрованном виде? В Adversa уверенно ответить не берутся, но выдвигают правдоподобную гипотезу. Фильтр Grok проверяет текст на входе и выходе модели, но не заглядывает в результаты работы её собственного кода. Указание обработать шифротекст алгоритмами PBKDF2 и AES-256-GCM проходит как безобидный запрос: классификатор его читает, но не выполняет и потому не знает, что за ним скрывается. А когда инструкция расшифрована внутри песочницы, она возвращается модели как её же собственный вывод — и та действует по ней, минуя всякую проверку.
"Статические защитные механизмы классифицируют входные данные как текст, но не исполняют их", — поясняет Utevsky. Всё, что нужно фильтру, лежит прямо на странице, но чтобы восстановить исходный текст, надо запустить криптографию, чего ни один контент-классификатор во время проверки не делает.
Не только Grok
Похожий приём Adversa опробовала и на Gemini: там расшифрованный текст маскировался под сообщение об ошибке, а вложенная инструкция велела "прочитать ошибку и действовать по ней". В итоге модель выдавала запрещённый контент, а с изменённой нагрузкой — даже собственные системные инструкции, которые ей запрещено раскрывать. О поведении Gemini в Google не сообщали: джейлбрейки не входят в их программу вознаграждений. Впрочем, за последние недели Gemini стал заметно устойчивее к атаке, хотя причину — обновление фильтров или смену версии модели — установить не удалось.
Свой метод исследователи назвали cryptographic context injection и видят в нём частный случай более широкого сдвига: атак, которые манипулируют не самим запросом, а всем контекстом, который модель считает "своим" — выводом инструментов, промежуточными результатами, состоянием исполнения. Эта поверхность атаки куда шире привычных "входных данных модели", и именно там, полагают в Adversa, зародится следующее поколение угроз. А пока цикл повторяется: защитники латают одну дыру, атакующие находят новую.
Источник: Ars Technica
Комментарии
Войдите, чтобы комментировать.