
Scanner in sola lettura per l'estensione Claude Code 2.1.313 con backdoor (marketplace Cursor, ottobre 2026): chiave SSH, persistenza, tunnel inverso. macOS + Linux.
Scanner in sola lettura e regole di rilevamento per l'estensione trojanizzata [email protected].
[!WARNING] Il marketplace di Cursor ha distribuito una build non pubblicata da Anthropic il 2026-10-29, 09:27–20:35 UTC. Installa una chiave SSH e meccanismi di persistenza, quindi apre un tunnel inverso verso
134.209.82[.]225. L'aggiornamento a 2.1.314 rimuove l'estensione, non ciò che ha installato.
Strumento comunitario indipendente di HappyHackingSpace. Non affiliato con Anthropic o Cursor.
Indice: Avvio rapido · Cosa verifica · Regole di rilevamento · Se ottieni un rilevamento · Blocca il C2 · IOC · Riferimenti
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 pulito · 1 indicatori trovati · 2 errore di utilizzo.| Output | Exit | Significato |
|---|---|---|
✖ COMPROMISED | 1 | Artefatto attivo trovato: chiave, file rilasciato, persistenza, tunnel, chiave host C2 o la build compromessa |
! EXPOSED | 1 | 2.1.313 è stato installato in qualche momento, ma non è stato trovato nulla di attivo |
✔ CLEAN | 0 | Nessun indicatore |
| # | Area | Cerca |
|---|---|---|
| 1 | Estensioni | 2.1.313 nelle directory di Cursor / VS Code / Windsurf / VSCodium, l'hash compromesso di extension.js, stringhe del loader |
| 2 | Cronologia installazioni | 2.1.313 in extensions.json, .obsolete, la cache VSIX, i log dell'editor |
| 3 | Chiavi SSH | chiave svc-telemetry in authorized_keys |
| 4 | File rilasciati | ~/.config/.smt, .smtk, file temporanei .stk_* |
| 5 | Persistenza | macOS: LaunchAgents/Daemons · Linux: cron, systemd, autostart · entrambi: file rc della shell |
| 6 | Processi | il reverse tunnel (ssh -R *:0:localhost:22 tunnel@…) e il runner .smt |
| 7 | Rete | connessioni C2 attive; il C2 in known_hosts |
| 8 | Server SSH | listener su :22; con --deep, login sshd tramite la chiave dell'attaccante o 127.0.0.1 |
| 9 | Esposizione | nomi delle variabili d'ambiente delle credenziali e file di credenziali da ruotare (i valori non vengono mai letti) |
[!NOTE]
com.apple.sysmondè anche un vero daemon di sistema Apple. Solo la copia nel dominio utente (~/Library/LaunchAgents) è malevola.
Per pipeline EDR/SIEM e hunting su larga scala. A differenza del resto di questo README, i file delle regole contengono il C2 non offuscato, perché devono poterlo individuare.
rules/sigma/)| Regola | Sorgente log | Livello |
|---|---|---|
| Reverse SSH tunnel verso C2 | process_creation | critical |
| Connessione al C2 | network_connection | critical |
| Script / chiave del tunnel rilasciati | file_event | high |
LaunchAgent falso com.apple.sysmond | file_event · macOS | high |
| Remote Login abilitato dall'albero dei processi dell'editor | process_creation · macOS | high |
cron @reboot / esecuzione .smt | process_creation · Linux | high |
Attività pianificata SysMon / installazione OpenSSH dall'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)| Regola | Corrispondenze |
|---|---|
HHS_ClaudeCode_Backdoor_Loader | extension.js trojanizzato (hash o stringhe del loader) |
HHS_ClaudeCode_Backdoor_TunnelScript | .smt / smt.cmd rilasciati |
HHS_ClaudeCode_Backdoor_Persistence | LaunchAgent, cron @reboot, attività SysMon che punta allo script |
HHS_ClaudeCode_Backdoor_AuthorizedKey | authorized_keys con la chiave svc-telemetry |
yara -r -s rules/yara/claude_code_backdoor.yar \
~/.cursor/extensions ~/.vscode/extensions ~/.config ~/.ssh ~/Library/LaunchAgents
[!TIP] Le regole Sigma coprono anche Windows (attività pianificata, installazione di OpenSSH), cosa che
check.shnon fa.
[!CAUTION] La persistenza riapre il tunnel circa ogni 60 secondi. Contieni prima, poi esegui la pulizia. Cursor fornisce anche script di remediation ufficiali: consulta il suo avviso di sicurezza.
1. Contieni. Metti la macchina offline, oppure blocca il C2.
2. Conserva le prove prima di eliminare qualsiasi cosa:
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è la chiave privata del tunnel dell'attaccante. Mantieni privata la cartella delle prove.
3. Pulizia. Rimuovi la persistenza, termina il tunnel, elimina gli artefatti:
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. Sostituisci l'estensione. Rimuovi anthropic.claude-code-2.1.313* e installa ≥ 2.1.314.
5. Verifica. bash check.sh --deep dovrebbe uscire con 0.
6. Ruota le credenziali da una macchina diversa e pulita: chiavi SSH, token git, chiavi cloud e API, token dei registry. Inizia dall'elenco sotto [9/9].
7. Ricostruisci la macchina se il C2 è in known_hosts o se sshd ha accettato la chiave dell'attaccante.
Esegui con --deep. Ruota almeno i segreti elencati sotto [9/9], perché i loro nomi sono stati beaconati. Mantieni il C2 bloccato.
L'impianto si connette direttamente all'IP, quindi i filtri DNS (NextDNS, Pi-hole) non lo vedono mai. Bloccalo a livello di firewall:
| Strumento | Comando |
|---|---|
| LuLu | Rules → Add Rule → processo *, indirizzo 134.209.82[.]225 (senza le parentesi), 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 (anche DOCKER-USER sugli host Docker) |
| nftables | sudo nft add rule inet filter output ip daddr "$C2" drop |