Cursor раздавала поддельный Claude Code с SSH-бэкдором

Вредоносная сборка Anthropic.claude-code 2.1.313 29 октября с 2:27 до 13:35 по тихоокеанскому времени раздавалась через маркетплейс расширений Cursor и пыталась поставить на машины постоянный SSH-бэкдор, сообщила Cursor. Если вы в этот промежуток ставили или обновляли Claude Code из маркетплейса Cursor, проверьте authorized_keys на чужой ключ с меткой svc-telemetry: удаления расширения, по словам Cursor, может не хватить, потому что вредонос оставляет отдельные скрипты автозапуска, и они продолжают работать.
Пострадавших Cursor насчитывает не больше 5 000 и обещает связаться с каждым напрямую. Сервер атакующих уже отключён: Cursor вместе с облачным провайдером, где он стоял, сняла его, так что обратный туннель и отправка данных о машине сейчас не доходят до адресата.
Как проверить машину
На macOS хватает одной команды: grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted". На Windows проверка в PowerShell ищет ту же метку в двух файлах, $HOME\.ssh\authorized_keys и C:\ProgramData\ssh\administrators_authorized_keys; готовый скрипт проверки лежит в посте Cursor. Если ключ нашёлся, машина задета.
Командам безопасности Cursor предлагает пройтись по телеметрии конечных точек, сети и установок расширений. Главный сетевой след - адрес 134[.]209[.]82[.]225: туда шёл обратный SSH-туннель под пользователем tunnel на порт 22 и HTTP POST на /beacon через порт 8099. Ещё одна попытка такого POST уходила на локальный 127[.]0[.]0[.]1:8099. Обращения к ifconfig.me и api.ipify.org сами по себе ничего не значат: это легальные сервисы, через которые вредонос узнаёт публичный IP. В процессах ищите ssh -N -R '*:0:localhost:22' и autossh -M 0, на диске - ~/.config/.smt и ~/.config/.smtk на macOS, %USERPROFILE%\.config\smt.cmd на Windows. Хеши SHA-256 обеих подменённых сборок, для macOS на arm64 и для Windows x64, есть в посте Cursor, а исследователь Кевин Бомонт опубликовал запросы KQL для поиска заражённой версии через Microsoft Defender for Endpoint.
Если ключ нашёлся
Cursor советует изолировать хост, запустить скрипт очистки для своей платформы и решить, не проще ли пересобрать машину. Скрипты удаляют само расширение, автозапуск, процессы туннеля и ключ атакующего, а если что-то осталось, завершаются с ненулевым кодом. На macOS remediate-macos.sh запускают от имени пострадавшего пользователя, не от root: bash remediate-macos.sh. На Windows нужен PowerShell, открытый через Run as Administrator: powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1.
Затем нужно сменить учётные данные и сессии, доступные с задетой машины, причём делать это с доверенной системы. Cursor объясняет это так: вредонос собирал только ограниченные сведения о переменных окружения, но через бэкдор позже можно было добраться и до самих секретов. Что именно уходило в первом сообщении, рассказал исследователь Пол Маккарти в материале The Hacker News: имена до 40 переменных, в которых встречаются KEY, TOKEN, SECRET, PASS, AWS или GCP. Значений там нет, но и по именам, говорит он, можно многое понять.
Что делал вредонос
Подмена шла под настоящим идентификатором расширения anthropic.claude-code, отдельного поддельного пакета не было. По словам Дженн Гайл из OpenSourceMalware, в основной JavaScript-бандл вставили загрузчик на 66 строк перед легитимным кодом. Сначала он собирал сведения о машине: имя хоста и пользователя, ОС и архитектуру, путь к домашнему каталогу, рабочие каталоги, имена переменных окружения, Git email из настроек и публичный IP.
Дальше вредонос дописывал ключ атакующего в authorized_keys, пытался включить локальную SSH-службу и открыть обратный туннель. Для включения службы нужны права администратора, которых у расширения на большинстве машин с macOS и Windows нет. Плюс в самом вредоносном коде есть ошибки, поэтому шаг срабатывал только в редком случае, когда Cursor запущен с правами администратора, а без него атакующий не мог зайти через туннель. Ключ, автозапуск и отправка данных о машине при этом отрабатывали в любом случае.
На macOS автозапуск ставился как LaunchAgent com.apple.sysmond в ~/Library/LaunchAgents, на Windows - как задача планировщика SysMon, которая пытается работать от SYSTEM, а запасным вариантом служит sysmon.cmd в папке автозагрузки. Фоновые скрипты пытались поднять туннель примерно раз в 60 секунд.
Чья это версия
Cursor пишет, что Anthropic эту версию не разрабатывала. Кевин Бомонт в блоге DoublePulsar возражает: сборку загрузили через верифицированный аккаунт Anthropic, и слово «разработала» в формулировке Cursor, по его мнению, делает слишком много работы. По словам Бомонта, расширение в Cursor обновилось до заражённой версии само. Её заменили на 2.1.314, которая, судя по всему, бэкдор из расширения убирает, хотя полностью поручиться за её чистоту он не готов, а уже заражённые системы она не чистит.
The Hacker News сообщает, что вредоносное обновление распространялось только через маркетплейс Cursor, без признаков того, что оно попало в Open VSX или маркетплейс Microsoft. Бомонт отмечает, что версии 2.1.313 сейчас нет ни в OpenVSX, ни в Visual Studio Marketplace, ни в Cursor. Как атакующие выложили обновление, пока неясно. Похожий сценарий ранее описывала Wiz: она нашла в расширениях VS Code больше сотни действующих утёкших токенов VSCode Marketplace и больше тридцати токенов Open VSX, которыми можно обновить расширение. Поскольку VS Code по умолчанию обновляет расширения сам, такой токен даёт разослать вредоносное обновление всем, у кого расширение стоит.
Cursor убрала заражённую версию сразу после обнаружения, а затем целиком остановила свой маркетплейс расширений, проверила доступы, сменила ключи, пересобрала его и вернула в работу. Других подменённых расширений аудит, по словам компании, не нашёл.
Дальше
Claude Fable 5 сам проверяет свои диалоги на злоупотребления
После каждого ответа Claude получает невидимую пользователю инструкцию и пишет короткую оценку безопасности разговора. На Claude Fable 5 такая самооценка находит 94% приоритетных случаев, которые ловит более дорогой классификатор. Вы бы доверили модели проверять собственные диалоги, да или нет?
Читайте также
- Codex и VS Code пока открыты для кражи файлов с диска
- Вложенность правил вместо жесткого приоритета deny
- Claude Code шлёт Anthropic хеши файлов даже с чужой моделью
- Песочница Claude Code вышла отдельным пакетом npm
- OpenAI нашла в Brotli дыру с удалённым выполнением кода
- OpenAI выложила проверку сайтов на уязвимость php2shell
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

