Il 3 aprile 2025, GitHub ha confermato che un’estensione per Visual Studio Code, nota come nrwl.angular-console nella versione 18.95.0, è stata usata per rubare credenziali da migliaia di repository. L’estensione, parte dello strumento Nx Console, era stata compromessa dopo che un developer del progetto TanStack è stato infettato in un attacco a catena di approvvigionamento su npm. Il malware, una volta installato, ha iniettato payload in grado di estrarre token OAuth e segreti dalle macchine degli sviluppatori. Secondo The Hacker News, l’estensione contava oltre 2,2 milioni di installazioni.

Fiducia come superficie d’attacco

Non si tratta di un problema di codice vulnerabile. Non c’è alcun CVE associato all’estensione Nx Console, nessuna falla tecnica nota. L’attacco ha sfruttato un vettore semplice: la fiducia cieca in strumenti di sviluppo ufficiali. Il vero CVE è l’organizzazione che permette a estensioni IDE di accedere a token con privilegi illimitati. Mentre BleepingComputer e altri media parlano di supply-chain attack, la verità è più imbarazzante: è un fallimento del perimetro d’identità.

Il rapporto Verizon DBIR 2025 lo dice chiaramente: l’88% degli attacchi a applicazioni web coinvolge credenziali rubate. In questo caso, non è stato necessario un exploit zero-day né tecniche avanzate di ingegneria sociale. È bastato compromettere un singolo sviluppatore per ottenere accesso a 3.800 repository aziendali. Il canale di distribuzione? Un’estensione di VS Code, approvata, scaricata e utilizzata quotidianamente da migliaia di ingegneri.

Il mercato del furto d’identità è in crescita

Secondo il CrowdStrike Global Threat Report 2026, il mercato degli access broker — attori che vendono accessi rubati a sistemi aziendali — è cresciuto del 50% anno su anno. I token OAuth, le chiavi API, le credenziali SSO: sono tutti beni di scambio. E in questo ecosistema, un’estensione VS Code con accesso illimitato a GitHub è un jackpot.

La catena di compromissione inizia con TanStack, un progetto open source popolare per lo sviluppo frontend. Un developer del team è stato infettato tramite un attacco a catena su npm, probabilmente attraverso un pacchetto dipendente compromesso. Da lì, gli attaccanti hanno ottenuto accesso ai sistemi di pubblicazione delle estensioni e hanno rilasciato una versione malevola di nrwl.angular-console. Il pacchetto è stato caricato con credenziali legittime, aggirando qualsiasi controllo basato su reputazione o firma digitale.

Ma la vera esplosione del raggio d’azione non è dovuta al malware in sé. È dovuta alla governance assente. Nessun controllo sulle autorizzazioni richieste dall’estensione. Nessuna rotazione automatica dei token. Nessuna scansione in tempo reale dei comportamenti sospetti sui workstation degli sviluppatori.

Il perimetro non è più la rete: è l’identità

La difesa tradizionale — firewall, WAF, SIEM — è inutile quando l’attaccante entra con un token OAuth valido. È come cambiare la serratura di casa mentre qualcuno ha ancora una copia delle chiavi. Il perimetro moderno non è la rete: è l’identità. E in questo caso, l’identità è stata consegnata su un piatto d’argento.

Le raccomandazioni tecniche sono chiare, ma richiedono una svolta culturale:

  • Least privilege per le estensioni IDE: ogni plugin deve richiedere solo le autorizzazioni strettamente necessarie. Nessuna estensione dovrebbe poter leggere token GitHub di default.
  • Durata limitata dei token OAuth: il Verizon DBIR 2025 evidenzia che il tempo medio per rimediare a una fuga di segreti è di 94 giorni. Ridurre la vita dei token a 72 ore o meno limita drasticamente il window of exposure.
  • EDR sui workstation degli sviluppatori: il 46% dei dispositivi coinvolti in furti di credenziali sono non gestiti. Bloccare l’installazione di estensioni non autorizzate non basta: serve visibilità sul comportamento in tempo reale.

Il problema non è npm. Non è GitHub. Non è neppure VS Code. È l’assunzione che uno strumento ufficiale sia sicuro. È la mancanza di audit sulle autorizzazioni concesse. È l’abitudine di cliccare "Allow" senza leggere cosa si sta concedendo.

Quando è stata l’ultima volta che avete chiesto al vostro team: Quali estensioni hanno accesso ai vostri repository aziendali?