
Scanner somente leitura para a extensão Claude Code 2.1.313 com backdoor (marketplace do Cursor, out. 2026): chave SSH, persistência, túnel reverso. macOS + Linux.
Scanner somente leitura e regras de detecção para a extensão trojanizada [email protected].
[!WARNING] O marketplace do Cursor serviu uma build não publicada pela Anthropic em 2026-10-29, 09:27–20:35 UTC. Ela planta uma chave SSH e persistência, e então abre um túnel reverso para
134.209.82[.]225. Atualizar para 2.1.314 remove a extensão, mas não o que ela plantou.
Ferramenta comunitária independente da HappyHackingSpace. Não afiliada à Anthropic nem ao Cursor.
Conteúdo: Início rápido · O que ele verifica · Regras de detecção · Se você obtiver um resultado positivo · Bloqueie o C2 · IOCs · Referências
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 limpo · 1 indicadores encontrados · 2 erro de uso.| Saída | Saída | Significado |
|---|---|---|
✖ COMPROMISED | 1 | Artefato ativo encontrado: chave, arquivo deixado, persistência, túnel, chave de host C2 ou a build maliciosa |
! EXPOSED | 1 | A versão 2.1.313 foi instalada em algum momento, mas nada ativo foi encontrado |
✔ CLEAN | 0 | Nenhum indicador |
| # | Área | Procura por |
|---|---|---|
| 1 | Extensões | 2.1.313 nos diretórios do Cursor / VS Code / Windsurf / VSCodium, o hash malicioso do extension.js, strings do loader |
| 2 | Histórico de instalação | 2.1.313 em extensions.json, .obsolete, o cache de VSIX, logs do editor |
| 3 | Chaves SSH | chave svc-telemetry em authorized_keys |
| 4 | Arquivos deixados | ~/.config/.smt, .smtk, arquivos temporários .stk_* |
| 5 | Persistência | macOS: LaunchAgents/Daemons · Linux: cron, systemd, autostart · ambos: arquivos rc do shell |
| 6 | Processos | o túnel reverso (ssh -R *:0:localhost:22 tunnel@…) e o executor .smt |
| 7 | Rede | conexões C2 ativas; o C2 em known_hosts |
| 8 | Servidor SSH | listener em :22; com --deep, logins no sshd via a chave do atacante ou 127.0.0.1 |
| 9 | Exposição | nomes de variáveis de ambiente de credenciais e arquivos de credenciais a rotacionar (valores nunca são lidos) |
[!NOTE]
com.apple.sysmondtambém é um daemon de sistema real da Apple. Apenas a cópia no domínio de usuário (~/Library/LaunchAgents) é maliciosa.
Para pipelines de EDR/SIEM e hunting em toda a frota. Diferentemente do restante deste README, os arquivos de regras contêm o C2 sem desofuscação, porque eles precisam corresponder a ele.
rules/sigma/)| Regra | Fonte de log | Nível |
|---|---|---|
| Túnel SSH reverso para C2 | process_creation | critical |
| Conexão para C2 | network_connection | critical |
| Script / chave de túnel deixados | file_event | high |
LaunchAgent falso com.apple.sysmond | file_event · macOS | high |
| Remote Login habilitado a partir da árvore de processos do editor | process_creation · macOS | high |
cron @reboot / execução de .smt | process_creation · Linux | high |
Tarefa agendada SysMon / instalação do OpenSSH a partir do editor | 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)| Regra | Correspondências |
|---|---|
HHS_ClaudeCode_Backdoor_Loader | extension.js trojanizado (hash ou strings do loader) |
HHS_ClaudeCode_Backdoor_TunnelScript | .smt / smt.cmd descartados |
HHS_ClaudeCode_Backdoor_Persistence | LaunchAgent, cron @reboot, tarefa SysMon apontando para o script |
HHS_ClaudeCode_Backdoor_AuthorizedKey | authorized_keys com a chave svc-telemetry |
yara -r -s rules/yara/claude_code_backdoor.yar \
~/.cursor/extensions ~/.vscode/extensions ~/.config ~/.ssh ~/Library/LaunchAgents
[!TIP] As regras Sigma também cobrem Windows (tarefa agendada, instalação do OpenSSH), o que o
check.shnão faz.
[!CAUTION] A persistência reabre o túnel a cada 60 segundos aproximadamente. Contenha primeiro, depois limpe. O Cursor também disponibiliza scripts oficiais de remediação: consulte o aviso de segurança.
1. Contenha. Coloque a máquina offline ou bloqueie o C2.
2. Preserve as evidências antes de excluir qualquer coisa:
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é a chave de túnel privada do atacante. Mantenha a pasta de evidências privada.
3. Limpeza. Remova a persistência, encerre o túnel, exclua os artefatos:
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. Substitua a extensão. Remova anthropic.claude-code-2.1.313* e instale ≥ 2.1.314.
5. Verifique. bash check.sh --deep deve retornar 0.
6. Rotacione as credenciais a partir de uma máquina diferente e limpa: chaves SSH, tokens do git, chaves de nuvem e de API, tokens de registro. Comece pela lista em [9/9].
7. Reconstrua a máquina se o C2 estiver em known_hosts ou se o sshd tiver aceitado a chave do atacante.
Execute com --deep. Rotacione pelo menos os segredos listados em [9/9], porque os nomes deles foram enviados por beacon. Mantenha o C2 bloqueado.
O implante se conecta diretamente ao IP, então filtros de DNS (NextDNS, Pi-hole) nunca o veem. Bloqueie-o no firewall:
| Ferramenta | Comando |
|---|---|
| LuLu | Rules → Add Rule → processo *, endereço 134.209.82[.]225 (sem os colchetes), porta *, 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 (também DOCKER-USER em hosts Docker) |
| nftables | sudo nft add rule inet filter output ip daddr "$C2" drop |