Перейти к содержанию

Claude Code

Бэкдор в Claude Code ограничился маркетплейсом Cursor

5 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →
Изображение: sqmagazine.co.uk

Подменённые версии 2.1.312 и 2.1.313 расширения Claude Code провисели в маркетплейсе Cursor 29 октября около 11 часов, и, как следует из разбора Microsoft Threat Intelligence от 30 октября, Visual Studio Marketplace и npm-пакет @anthropic-ai/claude-code их не раздавали. SSH-ключ атакующего и файлы автозапуска загрузчик пишет вне папки расширения, так что на машинах, где эти версии ставились или автоматически обновлялись из маркетплейса Cursor, удаление или обновление расширения их не убирает.

Окно Cursor в своём уведомлении называет точно: примерно с 2:27 до 13:35 по тихоокеанскому летнему времени. Anthropic подтвердила Microsoft, что её системы не взломаны и вредоносный пакет она не разрабатывала. Все имеющиеся данные указывают, что инцидент ограничен маркетплейсом Cursor.

Где искать следы

Microsoft советует сначала найти машины, получившие эти версии из маркетплейса Cursor, и до любой чистки сохранить улики: сам пакет, изменённые файлы авторизации SSH, сгенерированные ключи и скрипты, конфигурацию автозапуска. Устройства, где загрузчик успел отработать, рекомендуют изолировать.

Ключ ищут в ~/.ssh/authorized_keys на macOS и Linux, а на Windows в %USERPROFILE%\\.ssh\\authorized_keys и, если он есть, в C:\\ProgramData\\ssh\\administrators_authorized_keys. Загрузчик дописывает туда ключ Ed25519 с комментарием svc-telemetry. Перед удалением строки Microsoft просит сверить отпечаток с опубликованным, SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk, и не трогать остальные ключи и настройки удалённой разработки. Отсутствие метки проверку не закрывает: смотреть всё равно нужно на установку, процессы, сеть и автозапуск.

Автозапуск устроен по-разному на каждой платформе:

  • macOS: LaunchAgent ~/Library/LaunchAgents/com.apple.sysmond.plist с RunAtLoad и KeepAlive, скрипт ~/.config/.smt и ключ туннеля ~/.config/.smtk;
  • Linux: запись @reboot в пользовательском crontab со ссылкой на ~/.config/.smt и те же два файла;
  • Windows: запланированная задача SysMon, которая пытается запускаться от имени SYSTEM, файлы %USERPROFILE%\\.config\\smt.cmd и %USERPROFILE%\\.config\\smtk, а запасным вариантом sysmon.cmd в папке автозагрузки %APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup.

На всех системах ещё останавливают подтверждённые вредоносные процессы SSH и циклы повтора и удаляют временные ключи туннеля: скрытые файлы с именем .stk_ и десятью шестнадцатеричными символами. Cursor выложила проверки и скрипты очистки под каждую платформу. Microsoft просит прочитать их и требования к запуску до использования, а после чистки убедиться, что ни один артефакт из списка не остался.

Для поиска по сети Microsoft даёт адрес 134.209.82.225: на него загрузчик поднимает SSH-туннель и по HTTP, на порт 8099 и путь /beacon, отправляет сведения о машине. Опубликованный SHA-256 ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15 принадлежит JavaScript-файлу точки входа, а не пакету VSIX, поэтому со скачанным пакетом его не сверить. Клиентам Defender XDR Microsoft дала готовые запросы advanced hunting за последние 30 дней; совпадение по ним, предупреждает компания, только зацепка для расследования, доказательством компрометации оно не служит.

Учётные данные и сессии отзывают с заведомо чистого устройства, если телеметрия показывает доступ к ним или доверие к машине восстановить нельзя. Когда расследование того требует, машину пересобирают и проверяют, что туннель и автозапуск не возвращаются после входа и перезагрузки.

Что делает загрузчик

Внедрённая функция срабатывает при загрузке модуля, раньше кода самого расширения, и через API Node.js собирает имя хоста и пользователя, ОС, архитектуру, домашний и рабочий каталоги и глобальный email из Git. Cursor добавляет к этому списку публичный IP. Заодно загрузчик ищет переменные окружения, в именах которых есть KEY, TOKEN, SECRET, PASS, AWS или GCP, и запоминает до сорока совпадений. Наружу уходят только имена переменных: атакующий узнаёт, какие секреты на машине лежат, но кражи самих значений, по оценке Microsoft, это не доказывает.

Затем загрузчик дописывает свой публичный ключ, пытается включить локальный SSH-сервер и открывает обратный туннель. Соединение исходящее: машина сама подключается к серверу атакующего, тот выделяет у себя порт, и всё, что приходит на него, попадает на порт 22 рабочей станции. Проверку ключа хоста загрузчик отключает. На Unix-подобных системах он предпочитает autossh и откатывается на ssh, на Windows крутит скрытый цикл PowerShell, а после каждого обрыва ждёт 60 секунд и пробует снова.

Дополнительных исполняемых файлов он не скачивает, вывод команд глушит, ошибки молча перехватывает, а Claude Code тем временем работает как обычно. Объекты автозапуска названы SysMon и com.apple.sysmond, под компоненты мониторинга, и маскировка вполне рабочая: Microsoft просит перед удалением смотреть, что именно запускает каждый объект, потому что по имени их от настоящего мониторинга не отличить.

Почему вход удался не везде

Для включения локального SSH нужны права администратора, которых у расширения на большинстве машин с macOS и Windows нет, говорит Cursor; там этот шаг падал, и войти через туннель атакующий не мог. Однако ключ в authorized_keys, автозапуск и отчёт о машине записывались и отправлялись и в этом случае. Microsoft добавляет, что запущенный процесс SSH ещё не означает доступа: соединение должны пропустить и сервер атакующего, и сама рабочая станция.

Сервер атакующего Cursor вместе с хостинг-провайдером отключила. На файлы, уже записанные на машины, это никак не влияет.

Две версии вместо одной

Первое уведомление Cursor называло только версию 2.1.313 и оценку не больше чем в 5 000 пострадавших. В тот же день, что вышел разбор Microsoft, в 11:30 по тихоокеанскому времени, Cursor исправила текст: добавила 2.1.312, четыре хеша пакетов VSIX и индикаторы для Linux, а оценку числа пострадавших убрала, сообщает Rescana. Тем, кто проверял машины по первой версии уведомления и искал только 2.1.313, придётся повторить поиск для 2.1.312.

Сама Cursor удалила вредоносную версию, на всякий случай остановила маркетплейс, проверила доступы и не нашла подмены других расширений, сменила ключи и пересобрала маркетплейс. Чтобы следующий подменённый релиз не приехал на машины сам, Microsoft отсылает к рекомендациям Cursor по защите: разрешать расширения только от одобренных издателей и включить задержку перед установкой свежих версий.

Anthropicразбор

Anthropic и OpenAI примут общий запрет обучения в robots.txt

Владелец сайта, который не хочет отдавать свои тексты на обучение ИИ, прописывает в файле правил для роботов отдельную запись под каждый краулер. Google, Microsoft, Anthropic и OpenAI обещают понимать одну общую строку. Сайт у вас для краулеров ИИ открыт или закрыт?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.