
Только для чтения сканер для расширения Claude Code 2.1.313 с бэкдором (маркетплейс Cursor, октябрь 2026): SSH-ключ, персистентность, обратный туннель. macOS + Linux.
Сканер только для чтения и правила обнаружения для троянизированного расширения [email protected].
[!WARNING] Маркетплейс Cursor распространял сборку, не опубликованную Anthropic, 2026-10-29, 09:27–20:35 UTC. Она внедряет SSH-ключ и механизм закрепления, а затем открывает обратный туннель к
134.209.82[.]225. Обновление до 2.1.314 удаляет расширение, но не то, что оно внедрило.
Независимый инструмент сообщества от HappyHackingSpace. Не связан с Anthropic или Cursor.
Содержание: Быстрый старт · Что проверяется · Правила обнаружения · Если обнаружено срабатывание · Блокировка C2 · IOC · Ссылки
git clone https://github.com/happyhackingspace/claude-code-backdoor-check.git
cd claude-code-backdoor-check
bash check.sh # fast scan
bash check.sh --deep # + sshd log analysis (slower on macOS)
0 — чисто · 1 — найдены индикаторы · 2 — ошибка использования.| Вывод | Код выхода | Значение |
|---|---|---|
✖ COMPROMISED | 1 | Обнаружен активный артефакт: ключ, сброшенный файл, механизм персистентности, туннель, ключ хоста C2 или вредоносная сборка |
! EXPOSED | 1 | 2.1.313 когда-то была установлена, но ничего активного не найдено |
✔ CLEAN | 0 | Индикаторов нет |
| # | Область | Что ищется |
|---|---|---|
| 1 | Расширения | 2.1.313 в каталогах Cursor / VS Code / Windsurf / VSCodium, хеш вредоносного extension.js, строки загрузчика |
| 2 | История установки | 2.1.313 в extensions.json, .obsolete, кэше VSIX, логах редактора |
| 3 | SSH-ключи | ключ svc-telemetry в authorized_keys |
| 4 | Сброшенные файлы | ~/.config/.smt, .smtk, временные файлы .stk_* |
| 5 | Персистентность | macOS: LaunchAgents/Daemons · Linux: cron, systemd, autostart · обе: rc-файлы оболочки |
| 6 | Процессы | обратный туннель (ssh -R *:0:localhost:22 tunnel@…) и запускающий .smt процесс |
| 7 | Сеть | активные подключения к C2; C2 в known_hosts |
| 8 | SSH-сервер | слушатель на :22; с --deep — входы в sshd через ключ атакующего или 127.0.0.1 |
| 9 | Подверженность | имена переменных окружения с учётными данными и файлы учётных данных для ротации (значения никогда не читаются) |
[!NOTE]
com.apple.sysmondтакже является настоящим системным демоном Apple. Вредоносна только копия в пользовательском домене (~/Library/LaunchAgents).
Для конвейеров EDR/SIEM и охоты по всему парку. В отличие от остальной части этого README, файлы правил содержат C2 в необезвреженном виде, поскольку они должны с ним сопоставляться.
rules/sigma/)| Правило | Источник логов | Уровень |
|---|---|---|
| Обратный SSH-туннель к C2 | process_creation | critical |
| Подключение к C2 | network_connection | critical |
| Сброшенный скрипт туннеля / ключ | file_event | high |
Поддельный LaunchAgent com.apple.sysmond | file_event · macOS | high |
| Remote Login, включённый из дерева процессов редактора | process_creation · macOS | high |
cron @reboot / выполнение .smt | process_creation · Linux | high |
Запланированная задача SysMon / установка OpenSSH из редактора | process_creation · Windows | high |
pip install sigma-cli
sigma plugin install splunk # or elasticsearch, microsoft365defender, …
sigma convert -t splunk --without-pipeline rules/sigma/
rules/yara/claude_code_backdoor.yar)| Правило | Совпадения |
|---|---|
HHS_ClaudeCode_Backdoor_Loader | троянизированный extension.js (хэш или строки загрузчика) |
HHS_ClaudeCode_Backdoor_TunnelScript | сброшенный .smt / smt.cmd |
HHS_ClaudeCode_Backdoor_Persistence | LaunchAgent, cron @reboot, задача SysMon, указывающая на скрипт |
HHS_ClaudeCode_Backdoor_AuthorizedKey | authorized_keys с ключом svc-telemetry |
yara -r -s rules/yara/claude_code_backdoor.yar \
~/.cursor/extensions ~/.vscode/extensions ~/.config ~/.ssh ~/Library/LaunchAgents
[!TIP] Правила Sigma также покрывают Windows (запланированная задача, установка OpenSSH), чего
check.shне делает.
[!CAUTION] Механизм персистентности заново открывает туннель примерно каждые 60 секунд. Сначала локализуйте, затем очищайте. Cursor также публикует официальные скрипты исправления: см. его уведомление о безопасности.
1. Локализация. Отключите машину от сети или заблокируйте C2.
2. Сохраните доказательства перед удалением чего-либо:
mkdir -p ~/ioc-evidence && cd ~/ioc-evidence
bash /path/to/check.sh --deep --no-color > scan.txt
cp -p ~/.ssh/authorized_keys ~/.ssh/known_hosts ~/.config/.smt ~/.config/.smtk . 2>/dev/null
[!IMPORTANT]
.smtk— это приватный ключ туннеля атакующего. Храните папку с доказательствами в приватном месте.
3. Очистка. Удалите механизм персистентности, завершите туннель, удалите артефакты:
C2="$(echo '134.209.82[.]225' | tr -d '[]')"
launchctl bootout gui/$(id -u)/com.apple.sysmond
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
pkill -f "tunnel@$C2"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt'
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -R "$C2"
rm -f ~/.config/.smt ~/.config/.smtk "$TMPDIR"/.stk_*
sudo systemsetup -setremotelogin off # if you don't use SSH
crontab -l | grep -vE '\.config/\.smt|tunnel@' | crontab -
# disable and remove any systemd/autostart entries check.sh reported
pkill -f "tunnel@$C2"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt'
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -R "$C2"
rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_* /var/tmp/.stk_*
sudo systemctl disable --now ssh # if you don't use SSH
4. Замените расширение. Удалите anthropic.claude-code-2.1.313* и установите ≥ 2.1.314.
5. Проверьте. bash check.sh --deep должен завершиться с кодом 0.
6. Смените учётные данные с другой, чистой машины: SSH-ключи, git-токены, облачные и API-ключи, токены реестров. Начните со списка в разделе [9/9].
7. Пересоберите машину, если C2 присутствует в known_hosts или sshd принял ключ атакующего.
Запустите с --deep. Смените как минимум секреты, перечисленные в разделе [9/9], поскольку их имена передавались в beacon-запросах. Оставьте C2 заблокированным.
Имплант подключается к IP напрямую, поэтому DNS-фильтры (NextDNS, Pi-hole) его не видят. Блокируйте его на межсетевом экране:
| Инструмент | Команда |
|---|---|
| LuLu | Rules → Add Rule → process *, address 134.209.82[.]225 (без скобок), port *, Block |
| pf | echo "block drop out quick to $C2" | sudo tee -a /etc/pf.conf && sudo pfctl -f /etc/pf.conf -e |
| iptables | sudo iptables -I OUTPUT -d "$C2" -j DROP (также DOCKER-USER на хостах с Docker) |
| nftables | sudo nft add rule inet filter output ip daddr "$C2" drop |