Исследователь Armadin Ник Макклендон обнаружил уязвимость в Claude Cowork - компоненте Claude Desktop для Windows, предназначенном для автоматизации нетекнических задач. Набор ошибок проектирования позволяет злоумышленнику, уже получившему локальный код на хосте, выполнять произвольные команды в изолированной виртуальной машине Ubuntu с правами root и полным доступом к сети. Anthropic был уведомлён об уязвимости 20 марта 2026 года, но классифицировал находку как не требующую исправления, поскольку для эксплуатации требуется локальное выполнение кода на системе. Отчёт Armadin опубликован 28 мая 2026 года.
Детали уязвимости
Claude Cowork разворачивает виртуальную машину Ubuntu с помощью Host Compute Service (прямой интерфейс управления виртуализацией, аналогичный Windows Subsystem for Linux v2). Эта ВМ не отображается в Hyper-V, а её управление осуществляется через службу CoworkVMService, работающую от имени Local System. Служба предоставляет именованный канал "\\.\pipe\cowork-vm-service" с JSON-RPC-сервером. На канал наложена проверка цифровой подписи Authenticode: соединиться разрешается только двоичным файлам, подписанным сертификатом "Anthropic, PBC". Однако внутри самих RPC-запросов авторизация отсутствует - сервер не проверяет содержимое параметров, а просто передаёт их в ВМ.
Исследователи попытались обойти проверку подписи напрямую, но безуспешно. Тогда они применили технику sideloading DLL (MITRE ATT&CK T1574/002). Поскольку "claude.exe" загружает библиотеку "USERENV.dll" из своего каталога перед системным, достаточно поместить рядом с исполняемым файлом подставную DLL с экспортом "GetUserProfileDirectoryW". После запуска "claude.exe" вредоносная библиотека будет выполнена в доверенном процессе, наследующем проверку Authenticode, и сможет взаимодействовать с именованным каналом.
С помощью собственного RPC-клиента, написанного на основе анализа логов и фаззинга, исследователи выявили критические параметры в методе "spawn": "isResume" и "allowedDomains". Обычно при каждом вызове "spawn" с флагом "isResume: false" создаётся новый непривилегированный пользователь Linux. Если же установить "isResume: true", эта проверка пропускается - команда выполняется от имени любого указанного пользователя, включая root. Отправка JSON-запроса с ""name":"root"" и ""isResume":true" возвращает командную оболочку с uid=0, полным набором Linux-способностей и неограниченным профилем AppArmor.
Параметр "allowedDomains" позволяет переопределить настройки прокси-фильтрации для отдельного процесса. По умолчанию прокси возвращает HTTP 403 для заблокированных доменов, но при ""allowedDomains":["*"]" любые сетевые запросы выполняются без ограничений. Комбинируя оба параметра в одном вызове "spawn", атакующий может выполнить произвольную команду от root, а затем с помощью "nsenter" покинуть контейнер bubblewrap и проникнуть в пространство имён основной ВМ. Оттуда становятся доступны процессы всех активных сессий, конфигурационные файлы (например, "/etc/shadow" и данные в каталоге "/sessions/"), а также возможность модифицировать "sdk-daemon" и фильтры seccomp на диске. Вся активность остаётся незаметной для систем защиты на хосте.
Armadin подтвердил цепочку эксплуатации для версии Claude Desktop for Windows 1.9255.2.0. После ответственного раскрытия Anthropic указал, что не считает проблему уязвимостью, поскольку для её использования необходимо локальное выполнение кода на хосте. Тем не менее, с точки зрения безопасности, такой порог не является высоким: множество атак начинаются именно с локального кода (например, через фишинг, вредоносные документы или скомпрометированные учётные записи). При этом сама песочница Cowork была разработана как доверенная среда для исполнения непроверяемых AI-агентов, и её обход делает защиту иллюзорной.
Для снижения риска Armadin предлагает две меры защиты. На хостах, где Claude Desktop не требуется, его следует удалить - тогда служба и именованный канал исчезают. Если использование необходимо, нужно ограничить запуск пакета "Claude_*" с помощью правил AppLocker Packaged App, разрешив его только определённой группе пользователей Entra ID или Active Directory. Кроме того, мониторинг Sysmon Event ID 7 ("ImageLoaded") на события загрузки "USERENV.dll" из пути вне "C:\Windows\System32\" позволит выявить попытки sideloading. Аналогичные правила можно настроить для других часто используемых библиотек-заглушек (VERSION.dll, WINMM.dll, dwmapi.dll).
Обнаруженная цепочка уязвимостей демонстрирует сдвиг в атакуемой поверхности, которую создают современные AI-инструменты для нетекнических пользователей. Ранее изолированные ВМ были прерогативой разработчиков и редких корпоративных сценариев. Claude Cowork устанавливает такую среду на машины обычных сотрудников, что расширяет потенциальную зону поражения. При этом виртуализация создаёт "слепые зоны" для средств защиты конечных точек, а скорость автоматизации анализа уязвимостей у злоумышленников может превышать скорость реагирования защитников.
Ссылки