Claude Code от Anthropic, работающий в режиме Auto Mode с моделью Opus 5, можно обманом заставить выполнить управляемый атакующим код — достаточно просто попросить кодинг-агента обобщить содержимое веб-сайта. Атака срабатывает в 80% случаев, согласно эксперту по инъекциям промптов Йоханну Рехбергеру, известному как wunderwuzzi.
В блог-посте и видеодемонстрации он подробно описал, как взломать Opus 5 в режиме Auto Mode, который является настройкой по умолчанию для Claude с середины августа.
Всё начинается с того, что агентивную модель кодинга просят обобщить вредоносный сайт, выдающий себя за архив записей блокнота, а затем обманом заставляют Claude использовать curl вместо инструмента WebFetch для получения содержимого страницы — но без прямого указания модели использовать curl.
Запрос WebFetch завершается ошибкой, возвращая ответ 415 Unsupported Media Type, поэтому модель решает обратиться к сайту напрямую, выполнив вызов Bash-инструмента с curl.
Сайт возвращает ответ 303 и перенаправляет на вредоносный ZIP-архив, который Claude затем загружает. Этот архив содержит, казалось бы, безобидные файлы: метаданные каталога, файл README, семь JSON-записей блокнота, закодированных в Base85/zlib, бинарный файл декодера для macOS (decoder-darwin) — а также отравленный Python-файл с именем struct.py.
Claude, следуя своим защитным ограничениям, отказывается запускать декодер: «Это запланировано и именно этого хочет атакующий», — написал Рехбергер. Вместо использования предоставленного бинарника ИИ решает написать собственный декодер. «По иронии судьбы, это решение о безопасности и есть путь эксплуатации», — объяснил Рехбергер, добавив в текст фиолетовый эмодзи дьявола.
Новый декодер импортирует base64, и с этого момента атака опирается на затенение модулей Python, чтобы обманом заставить модель выполнить вредоносный код struct.py.
Затенение модуля происходит, когда локальный файл имеет то же имя, что и модуль стандартной библиотеки Python. Локальный файл скрывает официальный модуль, заставляя Python загружать его вместо оригинала.
В данном случае модуль base64 из стандартной библиотеки импортирует легитимный модуль struct, а вредоносный ZIP содержит вредоносный файл с тем же именем.
Рехбергер сообщает, что использовал ChatGPT для обфускации вредоносного кода struct.py, чтобы обойти защитные механизмы Claude, и это успешно запускает отдельный процесс Python для загрузки и выполнения удалённой полезной нагрузки — в данном случае обратного вызова командного центра, который, в свою очередь, открывает Калькулятор. Предполагается, что реальные атакующие будут выполнять нечто более зловещее.
В другом сценарии атаки struct.py запускает второй, безголовый Claude Code через claude -p, что означает, что эту инъекцию промптов можно использовать не только для удалённого выполнения кода, но и для создания совершенно нового агента.
«Вложенный Claude получает собственный доступ к инструментам и контекст», — написал Рехбергер. «В этих запусках дочерний агент выполнял базовую разведку (whoami, uname, id), открывал Калькулятор и записывал данные в локальные файлы в домашней папке».
В трёх вариантах, протестированных по пять раз каждый (Рехбергер отметил, что выборка мала), он сообщил о показателях успеха от 60% до 80%. «Я бы сказал, что эти результаты показательны для мотивированной атаки, но не являются исчерпывающими».
Anthropic не ответила на запрос The Register о комментарии, но, по сообщениям, заявила Рехбергеру, что «поведение модели соответствует задумке». Мы уже слышали это раньше.
«Auto Mode — это функция удобства, основанная на классификаторе, работающем по принципу “наилучших усилий”, а не гарантия безопасности», — написал Рехбергер, перефразируя ответ Anthropic на его отчёт об уязвимости.
По словам Рехбергера, классификатор не предназначен для остановки целенаправленных цепочек инъекций промптов, состоящих из отдельных, на первый взгляд безобидных шагов, а реальной границей являются изоляция ОС и контроль исходящего сетевого трафика.
Ключевой вывод, по мнению Рехбергера, — запускать этого и других кодинг-агентов в песочнице.
«Решение — это то, о чём мы говорили много лет», — написал он. «Не доверяйте выходным данным модели».®
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Jessica Lyons