Назад к блогу

Подменённое расширение Claude Code: как через маркетплейс Cursor на машины разработчиков попал SSH-бэкдор

Подменённое расширение Claude Code: как через маркетплейс Cursor на машины разработчиков попал SSH-бэкдор

Через маркетплейс Cursor на машины разработчиков попала заражённая сборка расширения Claude Code, которая при запуске редактора открывала SSH-доступ злоумышленникам и закреплялась в системе. Разбираем, что именно делал вредоносный код, почему официальные каналы остались чистыми и какие следы атаки остаются после обновления до безопасной версии.

В расширении Claude Code для VS Code обнаружили вредоносную версию: она распространялась под настоящим идентификатором Anthropic через маркетплейс Cursor и при запуске редактора добавляла в систему ключ атакующего, обратный SSH-туннель и механизмы автозапуска. Anthropic выпустила версию 2.1.314, Cursor временно отключил маркетплейс и оценил охват не более чем в 5000 пользователей.

Разбор опирается на расхождения между источниками: часть данных о каналах распространения противоречит друг другу, и это важнее самого перечня версий.

Что именно изменилось

Скомпрометированной была версия anthropic.claude-code 2.1.313; позже Cursor расширил список затронутых до 2.1.312 и 2.1.313 — обе распространялись через маркетплейс Cursor для Windows и macOS. Anthropic заменила заражённую сборку на 2.1.314 и удалила её.

Каналы описаны по-разному. 3DNews пишет, что версия распространялась через Open VSX и попала в маркетплейс Cursor, но в Microsoft Visual Studio Marketplace не появлялась. The Hacker News со ссылкой на Socket и Microsoft утверждает обратное: версия 2.1.313 не была публично доступна через Open VSX и не публиковалась ни в Microsoft Visual Studio Marketplace, ни в npm-пакете anthropic-ai/claude-code. Инженер по безопасности Anthropic Дэвид Дворкен заявил, что официальные каналы, включая VS Code и OpenVSX, не затронуты, а инцидент касается только пользователей Cursor.

Вредоносный код — загрузчик из 66 строк, вставленный в основной JavaScript-бандл расширения перед легитимным кодом. Он срабатывал после запуска VS Code и при открытии webview.

Как работал бэкдор

После активации код добавлял в ~/.ssh/authorized_keys ключ атакующего под меткой svc-telemetry, чтобы тот выглядел служебным. Затем он пытался включить локальный SSH-сервис и поднять обратный SSH-туннель к 134.209.82[.]225. Туннель давал оператору путь к SSH-сервису жертвы — возможность отдавать команды и передавать файлы.

Для персистентности использовались штатные механизмы автозапуска ОС: LaunchAgent, запланированная задача с попыткой запуска от имени SYSTEM и резервным скриптом автозагрузки на Windows, crontab. Разные механизмы выбраны потому, что каждый из них штатный для своей платформы. Фоновые скрипты повторяли попытку туннеля примерно каждые 60 секунд. Сведения о хосте, включая операционную систему и архитектуру процессора, отправлялись POST-запросом на /beacon (порт 8099) — на сервер атакующего, который таким образом получал сигнал о заражённой машине и её состоянии.

Ключевое ограничение атаки: включение локального SSH-сервиса требует прав администратора, которых у расширения на большинстве хостов macOS и Windows нет. Там этот шаг завершался неудачей, и войти через туннель злоумышленник не мог. Но ключ, механизмы закрепления и отправка данных о хосте срабатывали и в этом случае.

Что остаётся на машине после обновления

Артефакты записаны вне каталога установки расширения: подтверждённые неавторизованные SSH-ключи, идентичности туннелей, скрипты и записи автозапуска. Поэтому удаление или обновление расширения их не убирает — версия 2.1.314 очищает сам бандл, но не удаляет SSH-бэкдор из уже заражённых систем и не устраняет последствия предшествовавшей активности. Microsoft Security Research рекомендует удалять эти артефакты отдельно.

Для проверки Cursor предлагает искать в authorized_keys посторонний ключ с пометкой svc-telemetry. Компания опубликовала скрипты очистки для macOS и Windows, а при обнаружении следов атаки советует изолировать компьютер и заменить доступные с него учётные данные.

Предыстория и причины

Это атака на цепочку поставок. Вредоносное обновление распространялось под легитимной идентичностью издателя и под настоящим идентификатором расширения Anthropic, а не как отдельное поддельное расширение — то есть подмена произошла на стороне верифицированного аккаунта Anthropic в маркетплейсе Cursor. По данным Kevin Beaumont, версия была загружена именно как аккаунт Anthropic с подтверждённой верификацией.

Точный метод, которым атакующие внедрили несанкционированное обновление, остаётся неясным.

Что это меняет на практике

Обновление до 2.1.314 закрывает канал распространения, но не является средством очистки. Порядок действий для тех, у кого могла стоять затронутая версия, — проверка authorized_keys на ключ svc-telemetry, удаление подтверждённых неавторизованных SSH-ключей, идентичностей туннелей, скриптов и записей автозапуска, затем ротация учётных данных, доступных с машины.

Сетевые индикаторы ограничены: Kevin Beaumont называет обращения к сервисам определения публичного IP ifconfig[.]me и api[.]ipify[.]org, но прямо указывает, что это легитимные сервисы и сам факт обращения к ним признаком компрометации не является.

Ограничения и открытые вопросы

Сроки восстановлены лишь фрагментарно: публикация вредоносной версии датируется днём ранее относительно материала, удаление зафиксировано по состоянию на 30 октября 2026 года, замена на 2.1.314 описана как произошедшая за 8 часов до текста. Точных интервалов между публикацией, обнаружением и удалением нет. Первой вредоносную активность на конечных точках заметила Phorion.

Оценка «до 5000 пользователей» исходит от Cursor; данных, которыми она обоснована, например статистики загрузок, в источниках не приводится.

Меры Cursor: удаление вредоносной версии и блокировка её распространения, временное полное отключение маркетплейса VS Code, аудит доступа, подтвердивший, что другие расширения не скомпрометированы, обновление ключей доступа, пересборка маркетплейса и возобновление работы, отключение вредоносного сервера.

Отдельно остаётся вопрос о границах безопасности AI-агентов: в источниках есть лишь общая формулировка, что граница начинается там, где даже ошибившийся агент физически не может добраться до секретов, промышленной инфраструктуры и произвольной сети, и что главный вопрос — что останется недоступным после его ошибки.

Источники

Похожее