Бэкдор в расширении Claude Code для Cursor: что случилось
В расширении Claude Code 2.1.313 на Cursor Marketplace обнаружен SSH-бэкдор. До 5000 разработчиков могли быть скомпрометированы за 11 часов.
Официальное расширение с вирусом внутри
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 |
|---|---|
| Linux | systemctl enable/start sshd или fallback через service |
| macOS | sudo -n systemsetup -setremotelogin on |
| Windows | PowerShell: установка и запуск OpenSSH Server |
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 и вынуждены полагаться на альтернативные реестры. Это расширяет поверхность атаки: достаточно скомпрометировать один пакет в таком реестре, чтобы мгновенно охватить тысячи рабочих машин разработчиков — со всем их исходным кодом, секретами и доступом к инфраструктуре.
- SSH-ключ в
authorized_keysс комментариемsvc-telemetry - Файл туннельного ключа во временной директории:
.stk_+ 10 символов - Сетевые соединения к IP
134.209.82[.]225по порту 22 - SHA-256 вредоносного
extension.js:ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15