Cursor ha comunicato un incidente di sicurezza che ha coinvolto una versione modificata in modo malevolo dell’estensione Anthropic.claude-code distribuita attraverso il marketplace delle estensioni compatibili con Visual Studio Code integrato nel proprio ambiente di sviluppo. Il pacchetto compromesso, identificato come versione 2.1.313, è rimasto disponibile tra le 2:27 e le 13:35 circa, ora del Pacifico, del 29 ottobre, esponendo potenzialmente fino a 5.000 utenti. Cursor ha specificato che il codice malevolo non è stato sviluppato da Anthropic e che le evidenze raccolte riguardano esclusivamente la versione individuata, senza indicazioni di compromissione delle altre release o dei canali ufficiali di distribuzione. Il software modificato conteneva istruzioni per raccogliere informazioni sull’ambiente di esecuzione e tentare l’installazione di una backdoor SSH persistente, sfruttando la fiducia accordata a un’estensione normalmente utilizzata dagli sviluppatori per accedere alle funzionalità di Claude Code all’interno dell’editor. L’obiettivo del payload consisteva nel predisporre un canale di accesso remoto al computer compromesso, accompagnato da meccanismi di persistenza capaci di sopravvivere alla chiusura dell’applicazione e, in determinate condizioni, al riavvio del sistema operativo.
Una volta eseguita, l’estensione modificata acquisiva una serie di informazioni identificative e ambientali del dispositivo, tra cui hostname, nome utente, sistema operativo, architettura del processore, percorso della directory personale, nomi delle variabili d’ambiente, directory di lavoro, indirizzo email configurato per Git e indirizzo IP pubblico. La raccolta dei nomi delle variabili d’ambiente non equivaleva necessariamente all’acquisizione dei relativi valori, ma permetteva comunque di identificare la presenza di determinate configurazioni software e potenziali credenziali associate all’ambiente di sviluppo. Il payload tentava poi di aggiungere una chiave pubblica SSH controllata dall’attaccante al file authorized_keys dell’utente, abilitare il servizio SSH locale e avviare un tunnel SSH inverso verso un server esterno. La combinazione delle tre operazioni avrebbe potuto consentire all’operatore remoto di raggiungere il dispositivo attraverso una connessione iniziata dal computer della vittima, aggirando alcune limitazioni imposte alle connessioni in ingresso. Cursor ha tuttavia rilevato errori di implementazione che rendevano improbabile il completamento dell’intera procedura al di fuori di circostanze particolari, soprattutto quando l’editor non era stato avviato con privilegi amministrativi. Sui sistemi macOS e Windows l’abilitazione del servizio SSH richiede normalmente autorizzazioni elevate, non disponibili alla maggior parte delle estensioni eseguite nel normale contesto utente. Questo limite impediva generalmente all’attaccante di ottenere una sessione remota funzionante, ma non escludeva l’aggiunta della chiave non autorizzata, l’installazione dei componenti persistenti e la trasmissione dei dati raccolti.
I meccanismi di persistenza erano adattati al sistema operativo. Su macOS il software tentava di creare un LaunchAgent identificato come com.apple.sysmond, mentre su Windows utilizzava un’attività pianificata denominata SysMon, configurata per tentare l’esecuzione con privilegi SYSTEM, accompagnata da uno script alternativo sysmon.cmd nella cartella di avvio automatico. Alcuni script eseguiti in background riprovavano l’apertura del tunnel SSH a intervalli di circa 60 secondi. Il payload trasmetteva inoltre informazioni sul dispositivo e sullo stato della backdoor mediante richieste HTTP POST verso un endpoint /beacon sulla porta 8099. Tra gli indicatori tecnici pubblicati figurano la chiave SSH contrassegnata dall’etichetta svc-telemetry, con impronta SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk, e istruzioni riconducibili all’impiego di ssh -N -R, autossh -M 0, schtasks e dei comandi di configurazione del servizio OpenSSH. Le interrogazioni dell’indirizzo IP pubblico utilizzavano i servizi legittimi ifconfig.me e api.ipify.org; l’accesso a questi domini, considerato isolatamente, non costituisce quindi una prova di compromissione. La presenza della chiave non autorizzata e dei componenti persistenti rappresenta invece un elemento più specifico per identificare i sistemi sui quali il payload ha effettivamente completato almeno parte della propria esecuzione.
Dopo il rilevamento dell’incidente, Cursor ha rimosso immediatamente la versione compromessa, bloccandone la distribuzione, e ha temporaneamente disattivato l’intero marketplace per svolgere le verifiche necessarie. La società ha dichiarato di aver controllato gli accessi, escluso manomissioni evidenti ad altre estensioni, sostituito le proprie chiavi e ricostruito l’infrastruttura del marketplace prima della riapertura. Parallelamente ha collaborato con il provider cloud che ospitava il server dell’attaccante per ottenerne la disattivazione, interrompendo il funzionamento del canale remoto e delle comunicazioni dirette all’endpoint di raccolta. Per gli utenti che hanno installato o aggiornato Anthropic.claude-code 2.1.313 durante l’intervallo di esposizione, Cursor ha pubblicato procedure di verifica e rimozione dedicate a macOS e Windows. I controlli ricercano la chiave svc-telemetry nei file authorized_keys, includendo su Windows anche administrators_authorized_keys nella directory C:\ProgramData\ssh. In presenza di indicatori positivi viene richiesta la rimozione della chiave, degli script persistenti, delle attività pianificate e degli eventuali processi di tunneling, con valutazione dell’isolamento o della ricostruzione completa del dispositivo. È inoltre raccomandata la sostituzione delle credenziali e delle sessioni accessibili dal sistema coinvolto, operando da un computer considerato affidabile. La semplice disinstallazione dell’estensione non è sufficiente a garantire la bonifica, poiché alcuni componenti vengono copiati autonomamente nel sistema e possono continuare a funzionare indipendentemente dal pacchetto originale.
Questo articolo è stato redatto con il supporto di strumenti di intelligenza artificiale (AI).
