Официальное расширение с вирусом внутри

29 октября 2026 года маркетплейс Cursor в течение чуть более одиннадцати часов распространял подменённую версию расширения Claude Code версии 2.1.313, которая пыталась открыть SSH-бэкдор на компьютере каждого, кто её скачал. Угрозу обнаружила компания Phorion, специализирующаяся на безопасности macOS. Модифицированная сборка доверенного AI-расширения для написания кода, опубликованная под настоящим именем Anthropic.claude-code, достигла до 5000 пользователей примерно за 11 часов.

⚠ Срочно
Если вы устанавливали или обновляли расширение Anthropic.claude-code до версии 2.1.313 из маркетплейса Cursor 29 октября 2026 года между 02:27 и 13:35 по тихоокеанскому времени — ваша система может быть скомпрометирована. Немедленно проверьте файл ~/.ssh/authorized_keys на наличие записи с меткой svc-telemetry.

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

Вредоносный код был внедрён прямо в файл extension.js в виде IIFE (Immediately Invoked Function Expression — функция, которая запускается сразу при загрузке файла), добавленного в начало легитимного бандла. Пользователю не нужно было ничего нажимать: подменённая сборка расширения Claude Code для редакторов, совместимых с VS Code, устанавливала SSH-бэкдор на компьютеры разработчиков.

Цепочка заражения состояла из двух этапов:


graph TD
    A[Пользователь устанавливает расширение 2.1.313] --> B[IIFE запускается до activate-колбека]
    B --> C[Этап 1: SSH-ключ атакующего записывается в authorized_keys]
    C --> D[Попытка включить SSH-демон на macOS / Linux / Windows]
    D --> E[Этап 2: Обратный SSH-туннель к серверу 134.209.82.225]
    E --> F[Атакующий получает интерактивный доступ к машине]

Этап 1 — внедрение SSH-ключа

Первым делом малварь создавала директорию ~/.ssh (если её не было) и дописывала в файл ~/.ssh/authorized_keys публичный Ed25519-ключ атакующего с комментарием svc-telemetry. После этого у злоумышленника появлялась возможность входить на машину жертвы по SSH — при условии, что SSH-демон (сервис удалённого доступа) запущен.

Для каждой платформы была своя логика запуска SSH:

ПлатформаМетод включения SSH
Linuxsystemctl enable/start sshd или fallback через service
macOSsudo -n systemsetup -setremotelogin on
WindowsPowerShell: установка и запуск OpenSSH Server
ℹ Ошибка в macOS-логике
Исследователи Phorion обнаружили баг в самом вредоносном коде: команда systemsetup -getremotelogin без прав администратора возвращает сообщение об ошибке, а не состояние Off. Малварь воспринимала это как «SSH уже включён» и пропускала шаг активации. Таким образом, на Mac без заранее включённого Remote Login входящий доступ не работал — но SSH-ключ и механизм персистентности всё равно устанавливались.

Этап 2 — обратный SSH-туннель

На втором этапе малварь устанавливала исходящее SSH-соединение к серверу атакующего (134.209.82.225) с использованием встроенного приватного Ed25519-ключа с комментарием svc-telemetry-tun. Туннель использовал опцию -R *:0:localhost:22 для обратного проброса портов (reverse port forwarding), позволяя серверу атакующего динамически выделять порт и перенаправлять трафик обратно на порт 22 машины жертвы.

Файл с туннельным ключом записывался во временную директорию ОС с именем вида .stk_<10 символов MD5 от hostname+homedir>.

var kf = path.join(
  TMP,
  ".stk_" + crypto.createHash("md5")
    .update(String(os.hostname()) + HOME)
    .digest("hex")
    .slice(0, 10)
);

Два разных ключа: не запутайтесь при расследовании

КлючКомментарийНазначение
Публичный (в authorized_keys жертвы)svc-telemetryВход атакующего на машину жертвы
Приватный (во временной директории)svc-telemetry-tunВыход машины жертвы к серверу атакующего
💡 Совет для расследования
При поиске вредоносной активности не полагайтесь только на текстовый комментарий svc-telemetry в файле authorized_keys — проверяйте именно отпечаток публичного ключа (fingerprint), поскольку комментарий легко изменить.

Реакция Cursor и масштаб инцидента

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

Пользователи Microsoft VS Code, Claude Code в терминале и других расширений Cursor, по имеющимся данным, не пострадали. Официальный npm-пакет @anthropic-ai/claude-code и листинг в маркетплейсе Microsoft VS Code не были признаны вредоносными.

Как защититься и что проверить

Удаление расширения не устраняет бэкдор: Phorion предупреждает, что payload оставляет автономные скрипты, которые продолжают работать.

Cursor рекомендует всем, кто устанавливал версию 2.1.313: проверить индикаторы компрометации в телеметрии эндпоинтов и сетевых логах; изолировать хосты с признаками выполнения payload; удалить несанкционированный SSH-ключ, механизмы персистентности и активные туннельные процессы с помощью опубликованных скриптов; оценить необходимость полной переустановки системы.

«Это был официальный список в собственном маркетплейсе Cursor — и один скомпрометированный пакет отправил SSH-бэкдор до 5000 пользователей.» — Help Net Security

Что это значит для отрасли

Инцидент наглядно демонстрирует риски supply chain attacks (атак на цепочку поставок) в экосистеме инструментов для разработчиков. Редакторы, построенные на базе открытого VS Code, — в том числе Cursor и Windsurf — не могут использовать официальный маркетплейс Microsoft и вынуждены полагаться на альтернативные реестры. Это расширяет поверхность атаки: достаточно скомпрометировать один пакет в таком реестре, чтобы мгновенно охватить тысячи рабочих машин разработчиков — со всем их исходным кодом, секретами и доступом к инфраструктуре.

📝 Индикаторы компрометации (IoC)
  • SSH-ключ в authorized_keys с комментарием svc-telemetry
  • Файл туннельного ключа во временной директории: .stk_ + 10 символов
  • Сетевые соединения к IP 134.209.82[.]225 по порту 22
  • SHA-256 вредоносного extension.js: ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15