GlassWorm: il worm che infetta tutti gli IDE tramite un’estensione OpenVSX contraffatta
@Informatica (Italy e non Italy)
Un dropper compilato in Zig si propaga da un'estensione fake WakaTime su OpenVSX verso tutti gli IDE VS Code-compatibili presenti sulla macchina, deployando un RAT con C2 su blockchain Solana e un'estensione Chrome per il furto di sessioni.
GlassWorm: il worm che infetta tutti gli IDE tramite un’estensione OpenVSX contraffatta
Un’estensione contraffatta nel marketplace OpenVSX installa silenziosamente un dropper compilato in Zig che individua e infetta tutti gli IDE compatibili con VS Code presenti sulla macchina, per poi deployare un RAT con C2 su blockchain Solana e un’estensione Chrome per rubare sessioni e keystroke. La campagna GlassWorm è attiva da oltre un anno e ha appena compiuto il suo salto evolutivo più sofisticato.Una campagna che cresce da un anno
GlassWorm non è una minaccia nuova: Aikido Security ne traccia l’evoluzione dal marzo 2025, quando fu individuata la prima variante nascosta in pacchetti npm attraverso caratteri Unicode invisibili per offuscare il payload. Da allora, la campagna ha iterato costantemente le proprie tecniche, arrivando oggi a una versione che colpisce non un singolo editor, ma l’intero ecosistema degli ambienti di sviluppo installati su una macchina — con una catena di infezione a più stadi difficile da individuare con le sole difese tradizionali.Il vettore iniziale: un’estensione che finge di essere WakaTime
Il punto di ingresso è un’estensione pubblicata sul marketplace OpenVSX sotto il nomespecstudio/code-wakatime-activity-tracker. L’estensione si spaccia per WakaTime, uno strumento molto diffuso tra gli sviluppatori che tiene traccia del tempo trascorso nel codice. Una volta installata, esegue immediatamente un codice di installazione minimale — dove un modulo punta a binari nativi Node.js compilati per la piattaforma target.Il dropper Zig: fuori dalla sandbox JavaScript
Il vero cuore della tecnica è l’uso di binari nativi Node.js (file .node) compilati con Zig — un linguaggio di sistema relativamente giovane e poco presidiato dai motori antivirus. Questi addon vengono caricati direttamente nel runtime di Node con accesso completo al sistema operativo, bypassando completamente la sandbox JavaScript di VS Code. Il comportamento è fondamentalmente diverso da quello di un’estensione normale: non è codice JS interpretato con permessi limitati, ma una libreria nativa con diritti equivalenti al processo padre. I binari identificati sono specifici per piattaforma: su Windows viene deployato win.node (PE32+ DLL), mentre su macOS viene utilizzato mac.node (Universal Mach-O). Quest’ultimo conteneva simboli di debug rivelatori, con un percorso che ha permesso ai ricercatori di identificare il developer environment dell’autore.Autopropagazione: infettare ogni IDE sulla macchina
Una volta eseguito, il dropper Zig non si limita a compromettere l’IDE corrente: scansiona il filesystem alla ricerca di tutti gli ambienti di sviluppo compatibili con le estensioni VS Code. Su Windows controlla le directory %LOCALAPPDATA%\Programs\ e %ProgramFiles%; su macOS la cartella /Applications/. Gli IDE target includono Microsoft VS Code e VS Code Insiders, ma anche i fork come Cursor (AI-first IDE in rapida adozione), Windsurf, VSCodium e Positron. Ogni editor trovato viene infettato con una seconda estensione malevola, installata silenziosamente tramite CLI usando il parametro –install-extension. Il secondo stadio si maschera da una estensione di auto-import con milioni di installazioni, scaricato da un repository GitHub sotto controllo degli attaccanti.Il payload finale: Solana come C2, RAT e furto di sessioni Chrome
La seconda estensione malevola implementa le capacità di spionaggio vere e proprie. Il meccanismo di C2 è particolarmente innovativo: invece di puntare a un server fisso, il malware interroga la blockchain Solana per recuperare l’indirizzo del server di comando — una tecnica che rende il blocco dell’infrastruttura C2 praticamente impossibile senza bloccare l’intera blockchain. Tra le funzionalità documentate ci sono: geofencing contro sistemi con impostazioni locali russe (l’esecuzione viene saltata), esfiltrazione di segreti, token di sessione e chiavi API dal workspace dello sviluppatore, installazione di un RAT persistente con comunicazione cifrata, e deploy di un’estensione Chrome malevola per il furto di cookie di sessione e keystroke logging.Indicatori di compromissione
## Estensioni malevole OpenVSX specstudio/code-wakatime-activity-tracker (1° stadio) floktokbok.autoimport (2° stadio) ## Hash SHA-256 dei binari nativi Zig win.node (Windows PE32+ DLL): 2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02 mac.node (macOS Universal Mach-O): 112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44 ## Repository GitHub per distribuzione stage-2 ColossusQuailPray/oiegjqde ## Debug artifact (attributione autore) /Users/davidioasd/Downloads/vsx_installer_zig ## IDE target confermati VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium, PositronPerché questa campagna è un segnale d’allarme per i team di sicurezza
GlassWorm dimostra come il marketplace delle estensioni IDE sia diventato una superficie d’attacco matura e sfruttata attivamente. La compromissione di un singolo sviluppatore può propagarsi a tutta l’organizzazione attraverso repository git, ambienti CI/CD e pipeline di build condivisi — con un impatto potenziale molto superiore a quello di un malware che colpisce un endpoint generico. Il fatto che il dropper salti deliberatamente i sistemi russi suggerisce un attore state-sponsored o comunque con motivazioni geograficamente definite, probabilmente orientato verso organizzazioni di sviluppo software in occidente e in Asia.Consigli per i difensori
I team di sicurezza dovrebbero esaminare l’elenco delle estensioni installate su tutti gli IDE degli sviluppatori, con particolare attenzione a estensioni non presenti nel Visual Studio Marketplace ufficiale ma solo su OpenVSX. L’introduzione di policy di allowlist per le estensioni VS Code, già supportata dalla funzionalità di Policy Management di VS Code, è oggi una misura consigliata in ambienti corporate. A livello di EDR, alert sulla creazione di file .node in directory di estensioni IDE e sull’esecuzione di processi IDE con parametri –install-extension da processi non interattivi sono indicatori ad alta fedeltà. L’analisi dei log di rete alla ricerca di chiamate RPC verso nodi Solana da processi Node.js può aiutare a rilevare la fase di C2 in modo precoce.