{"id":1756,"date":"2026-03-31T09:09:35","date_gmt":"2026-03-31T07:09:35","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/glassworm-supply-chain-attack-72-estensioni-open-vsx-malevole-sicurezza-vs-code-2026\/"},"modified":"2026-03-31T09:09:35","modified_gmt":"2026-03-31T07:09:35","slug":"glassworm-supply-chain-attack-72-estensioni-open-vsx-malevole-sicurezza-vs-code-2026","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/glassworm-supply-chain-attack-72-estensioni-open-vsx-malevole-sicurezza-vs-code-2026\/","title":{"rendered":"GlassWorm Supply-Chain Attack: Come 72 Estensioni Open VSX Malevole Hanno Colpito gli Sviluppatori nel Marzo 2026 e Come Verifico la Sicurezza delle Mie Estensioni VS Code"},"content":{"rendered":"<p>A met\u00e0 marzo 2026, il team di ricerca di <strong>Socket<\/strong> ha reso pubblica una delle campagne di supply-chain attack pi\u00f9 sofisticate mai registrate nel mondo degli IDE: <strong>GlassWorm<\/strong>. In totale, 72 estensioni malevole caricate sul marketplace Open VSX, 151 repository GitHub compromessi, 10 pacchetti npm infetti e oltre <strong>9 milioni di installazioni<\/strong> stimate. Nella mia carriera di sysadmin ho visto attacchi mirati a server, CMS e container, ma questa campagna ha colpito direttamente l&#8217;ambiente di lavoro degli sviluppatori \u2014 l&#8217;IDE \u2014 trasformando la fiducia nel codice open source in un vettore di attacco.<\/p>\n<p>Quello che rende GlassWorm particolarmente insidioso \u00e8 il meccanismo di propagazione: non si tratta di estensioni palesemente malevole, ma di strumenti apparentemente legittimi \u2014 linter, formatter, code runner, persino assistenti AI per <em>Claude Code<\/em> e <em>Google Antigravity<\/em> \u2014 che dopo aver guadagnato la fiducia dell&#8217;utente, si aggiornano silenziosamente per includere dipendenze transitive contenenti il payload malevolo.<\/p>\n<p>In questo articolo vi racconto la cronologia dell&#8217;attacco, i dettagli tecnici, gli indicatori di compromissione e soprattutto <strong>come verifico la sicurezza delle mie estensioni VS Code<\/strong> dopo questa scoperta. Se gestite server, sviluppate plugin o semplicemente usate VS Code quotidianamente, queste informazioni sono essenziali.<\/p>\n<h2>Cronologia dell&#8217;Attacco GlassWorm: Da Ottobre 2025 a Marzo 2026<\/h2>\n<p>GlassWorm non \u00e8 apparso dal nulla. La prima segnalazione risale a <strong>ottobre 2025<\/strong>, quando i ricercatori di <strong>Koi Security<\/strong> identificarono comportamenti anomali in alcune estensioni Open VSX. La campagna \u00e8 poi evoluta in pi\u00f9 ondate:<\/p>\n<ul>\n<li><strong>Ottobre 2025<\/strong>: prima osservazione del malware GlassWorm da parte di Koi Security<\/li>\n<li><strong>Novembre 2025 \u2013 Gennaio 2026<\/strong>: fase di espansione silenziosa con 50 transazioni Solana documentate per aggiornare gli URL dei payload<\/li>\n<li><strong>31 Gennaio 2026<\/strong>: scoperte le prime estensioni Open VSX malevole della nuova ondata<\/li>\n<li><strong>3-9 Marzo 2026<\/strong>: campagna massiva di iniezione su 151 repository GitHub<\/li>\n<li><strong>8 Febbraio 2026<\/strong>: il ricercatore <strong>Oran Simhony<\/strong> di Koi Security segnala la vulnerabilit\u00e0 &#8220;Open Sesame&#8221; nel sistema di scansione pre-pubblicazione di Open VSX<\/li>\n<li><strong>13 Marzo 2026<\/strong>: il Socket Research Team pubblica l&#8217;analisi completa delle 72 estensioni malevole<\/li>\n<li><strong>17 Marzo 2026<\/strong>: divulgazione pubblica coordinata da Bleeping Computer, The Hacker News e altri<\/li>\n<\/ul>\n<h2>La Portata dell&#8217;Attacco: 433 Componenti Compromessi<\/h2>\n<p>L&#8217;analisi congiunta di <strong>Socket<\/strong>, <strong>Aikido<\/strong>, <strong>Step Security<\/strong>, <strong>Truesec<\/strong> e la community <strong>OpenSourceMalware<\/strong> ha rivelato una campagna su scala massiva con <strong>433 componenti compromessi<\/strong> distribuiti su pi\u00f9 piattaforme:<\/p>\n<ul>\n<li><strong>200 repository GitHub<\/strong> in Python (con force-push di commit malevoli)<\/li>\n<li><strong>151 repository GitHub<\/strong> in JavaScript\/TypeScript<\/li>\n<li><strong>72 estensioni Open VSX<\/strong> (usato da Cursor, Windsurf, Trae e altri fork di VS Code)<\/li>\n<li><strong>10 pacchetti npm<\/strong> con tecnica di Unicode injection<\/li>\n<\/ul>\n<p>Le estensioni malevole imitavano utility di sviluppo molto diffuse. Tra quelle identificate: <code>angular-studio.ng-angular-extension<\/code>, <code>gvotcha.claude-code-extension<\/code>, <code>mswincx.antigravity-cockpit<\/code> e <code>turbobase.sql-turbo-tool<\/code>. La scelta dei nomi non \u00e8 casuale: puntano esattamente ai tool che gli sviluppatori cercano quotidianamente.<\/p>\n<h2>Come Funziona Tecnicamente GlassWorm: Dipendenze Transitive e Unicode Invisibile<\/h2>\n<p>Il cuore dell&#8217;attacco si basa su due tecniche combinate che lo rendono quasi impossibile da individuare con una revisione visuale del codice.<\/p>\n<h3>Abuso delle Dipendenze Transitive<\/h3>\n<p>L&#8217;attaccante pubblica un&#8217;estensione apparentemente pulita su Open VSX. Una volta che l&#8217;estensione accumula installazioni e fiducia, viene rilasciato un aggiornamento che introduce un campo <code>extensionPack<\/code> o <code>extensionDependencies<\/code> nel manifest, puntando a un&#8217;estensione separata contenente il loader GlassWorm. Quando l&#8217;IDE installa o aggiorna l&#8217;estensione principale, scarica automaticamente anche le dipendenze \u2014 incluso il payload malevolo.<\/p>\n<h3>Caratteri Unicode Invisibili<\/h3>\n<p>Il payload vero e proprio \u00e8 codificato usando <strong>caratteri Unicode invisibili<\/strong> \u2014 variation selector (U+FE00-U+FE0F e U+E0100-U+E01EF), caratteri zero-width e controlli bidirezionali. Questi caratteri non producono alcun output visivo nell&#8217;editor di codice o nel terminale, ma una volta decodificati si trasformano in un loader che scarica ed esegue uno script di secondo stadio. Anche le diff di GitHub possono non evidenziare queste modifiche.<\/p>\n<h3>Infrastruttura C2 a Triplo Livello<\/h3>\n<p>GlassWorm utilizza un&#8217;architettura command-and-control resiliente su tre livelli:<\/p>\n<ol>\n<li><strong>Blockchain Solana<\/strong>: il malware interroga transazioni Solana ogni 5 secondi come &#8220;dead drop resolver&#8221; per ottenere l&#8217;indirizzo C2 aggiornato (wallet: <code>28PKnu7RzizxBzFPoLp69HLXp9bJL3JFtT2s5QzHsEA2<\/code>). Questa infrastruttura non pu\u00f2 essere abbattuta con un semplice takedown<\/li>\n<li><strong>IP diretto<\/strong>: server primario <code>217.69.3.218<\/code> per il download dei payload<\/li>\n<li><strong>Google Calendar<\/strong>: canale C2 di backup che sfrutta un servizio legittimo per evadere il filtraggio di rete<\/li>\n<\/ol>\n<h3>Cosa Ruba GlassWorm<\/h3>\n<p>Una volta attivo, il malware \u00e8 un vero coltellino svizzero del furto di credenziali:<\/p>\n<ul>\n<li><strong>Token di autenticazione<\/strong>: NPM, GitHub, Git, Open VSX, CI\/CD<\/li>\n<li><strong>Chiavi SSH<\/strong> e dati di configurazione Git<\/li>\n<li><strong>Wallet di criptovalute<\/strong>: prende di mira 49 diverse estensioni di wallet crypto<\/li>\n<li><strong>Variabili d&#8217;ambiente<\/strong> e segreti di sistema<\/li>\n<li>Installa <strong>server VNC nascosti<\/strong> per accesso remoto completo<\/li>\n<li>Deploya <strong>proxy SOCKS<\/strong> che trasformano la macchina dello sviluppatore in infrastruttura criminale<\/li>\n<\/ul>\n<p>Un dettaglio interessante: il malware <strong>evita i sistemi con locale russo<\/strong>, un comportamento tipico dei gruppi di minaccia est-europei che evitano di colpire sistemi nei paesi della CSI.<\/p>\n<h2>La Vulnerabilit\u00e0 &#8220;Open Sesame&#8221;: Il Bug che Ha Facilitato l&#8217;Attacco<\/h2>\n<p>A rendere tutto pi\u00f9 grave, il ricercatore <strong>Oran Simhony<\/strong> di Koi Security ha scoperto una vulnerabilit\u00e0 critica nel sistema di scansione pre-pubblicazione di Open VSX, ribattezzata <strong>&#8220;Open Sesame&#8221;<\/strong>. Il problema risiedeva nella pipeline Java di scansione:<\/p>\n<p>Il sistema utilizzava un <strong>singolo valore booleano<\/strong> per indicare sia &#8220;nessuno scanner configurato&#8221; che &#8220;tutti gli scanner hanno fallito&#8221;. Come ha spiegato Simhony: <em>&#8220;The pipeline had a single boolean return value that meant both &#8216;no scanners are configured&#8217; and &#8216;all scanners failed to run'&#8221;<\/em>.<\/p>\n<p>Un attaccante con un account publisher gratuito poteva inondare l&#8217;endpoint con molteplici file <code>.VSIX<\/code> malevoli, esaurendo il pool di connessioni al database e causando il fallimento dei job di scansione \u2014 che il sistema interpretava come validazione riuscita. La vulnerabilit\u00e0 \u00e8 stata corretta in <strong>Open VSX versione 0.32.0<\/strong> rilasciata a marzo 2026, dopo la segnalazione responsabile dell&#8217;8 febbraio.<\/p>\n<p>La lezione \u00e8 universale e vale per qualsiasi pipeline di validazione: <strong>mai far condividere lo stesso valore di ritorno a &#8220;nessun lavoro necessario&#8221; e &#8220;il lavoro \u00e8 fallito&#8221;<\/strong>.<\/p>\n<h2>Come Verifico la Sicurezza delle Mie Estensioni VS Code<\/h2>\n<p>Dopo la scoperta di GlassWorm, ho rivisto completamente il mio approccio alla sicurezza delle estensioni IDE. Ecco la procedura che seguo ora su tutte le mie macchine di sviluppo e sui server che gestisco.<\/p>\n<h3>1. Scansione con anti-trojan-source<\/h3>\n<p>Il primo strumento che ho adottato \u00e8 <strong>anti-trojan-source<\/strong>, raccomandato anche da Snyk. Rileva 277 caratteri Unicode confondibili, inclusi i variation selector e i caratteri zero-width usati da GlassWorm:<\/p>\n<pre><code>npm install -D anti-trojan-source\nnpx anti-trojan-source --files='src\/**\/*.{js,ts,jsx,tsx}'\n\n# Per output dettagliato con posizione esatta dei caratteri sospetti:\nnpx anti-trojan-source --files='src\/**\/*.js' --verbose\n\n# Per output JSON (integrazione CI\/CD):\nnpx anti-trojan-source --files='**\/*.{js,ts,py,java,go,rs}' --json<\/code><\/pre>\n<h3>2. Controllo degli Indicatori di Compromissione GlassWorm<\/h3>\n<p>Step Security ha identificato marker specifici da cercare:<\/p>\n<ul>\n<li>Cerca la variabile marker <code>lzcdrtfxyqiplpd<\/code> nel codice sorgente<\/li>\n<li>Verifica la presenza del file <code>~\/init.json<\/code> (meccanismo di persistenza)<\/li>\n<li>Controlla installazioni inattese di Node.js nella home directory<\/li>\n<li>Esamina la cronologia dei commit Git per anomalie (date del committer significativamente pi\u00f9 recenti delle date dell&#8217;autore)<\/li>\n<li>Ispeziona file <code>i.js<\/code> sospetti nei progetti clonati<\/li>\n<\/ul>\n<h3>3. Audit delle Estensioni Installate<\/h3>\n<p>Verifico regolarmente le estensioni installate con questi criteri:<\/p>\n<ul>\n<li>Controllo le modifiche version-to-version, in particolare l&#8217;aggiunta di campi <code>extensionPack<\/code> e <code>extensionDependencies<\/code><\/li>\n<li>Verifico il publisher e la sua reputazione<\/li>\n<li>Rimuovo le estensioni non pi\u00f9 utilizzate<\/li>\n<li>Disabilito gli aggiornamenti automatici per le estensioni critiche<\/li>\n<\/ul>\n<h3>4. Monitoraggio del Traffico di Rete<\/h3>\n<p>GlassWorm comunica con endpoint specifici. Monitoro le connessioni in uscita dall&#8217;IDE cercando:<\/p>\n<ul>\n<li>Connessioni verso <code>217.69.3.218<\/code> (C2 primario)<\/li>\n<li>Connessioni verso <code>140.82.52.31:80\/wall<\/code> (esfiltrazione)<\/li>\n<li>Query verso servizi blockchain Solana non previsti<\/li>\n<li>Connessioni anomale a Google Calendar API da processi VS Code<\/li>\n<\/ul>\n<h3>5. Rotazione Preventiva delle Credenziali<\/h3>\n<p>Se sospetto anche minimamente una compromissione, la prima cosa che faccio \u00e8 ruotare <strong>tutti<\/strong> i token e le credenziali:<\/p>\n<ul>\n<li>Token NPM e GitHub Personal Access Token<\/li>\n<li>Credenziali Git memorizzate localmente<\/li>\n<li>Chiavi SSH<\/li>\n<li>Token di pubblicazione Open VSX<\/li>\n<li>Eventuali chiavi API esposte nelle variabili d&#8217;ambiente<\/li>\n<\/ul>\n<h3>6. Integrazione nella CI\/CD<\/h3>\n<p>Ho aggiunto la scansione Unicode come step obbligatorio nei miei workflow. Ecco un esempio per GitHub Actions:<\/p>\n<pre><code>name: Unicode Security Scan\non: [pull_request, push]\njobs:\n  scan:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n      - uses: actions\/setup-node@v4\n      - run: npx anti-trojan-source --files='**\/*.{js,ts,py,java,go,rs}' --json<\/code><\/pre>\n<p>Questo blocca qualsiasi pull request che contiene caratteri Unicode sospetti prima del merge.<\/p>\n<h2>La Lezione per Chi Gestisce Server e Sviluppa Plugin<\/h2>\n<p>GlassWorm dimostra che la supply chain degli sviluppatori \u00e8 il nuovo perimetro da difendere. Se come me <a href=\"https:\/\/darioiannascoli.it\/blog\/exploit-zero-day-marzo-2026-langflow-cve-2026-33017-cisco-sd-wan-cve-2026-20127-botnet-iot-30tbps\/\">monitorate le vulnerabilit\u00e0 zero-day<\/a> sui vostri server, dovete applicare lo stesso rigore alle estensioni del vostro IDE. Un&#8217;estensione compromessa su una macchina di sviluppo pu\u00f2 portare al furto di token CI\/CD, che a loro volta possono compromettere l&#8217;intera pipeline di deploy.<\/p>\n<p>Chi sviluppa plugin WordPress \u2014 come faccio io \u2014 deve prestare particolare attenzione: i token GitHub e le credenziali npm rubati possono essere usati per iniettare codice malevolo direttamente nei repository dei vostri plugin, <a href=\"https:\/\/darioiannascoli.it\/blog\/vulnerability-disclosure-program-wordpress-plugin-cyber-resilience-act-2026\/\">compromettendo la catena di distribuzione<\/a> fino agli utenti finali.<\/p>\n<p>E per chi gestisce infrastrutture server, ricordate che la <a href=\"https:\/\/darioiannascoli.it\/blog\/prevenire-ransomware-malware-ai-agents-defensive-security-threat-monitoring-detection-2026\/\">difesa proattiva con monitoraggio continuo<\/a> non deve limitarsi ai server in produzione: anche le workstation degli sviluppatori sono target primari.<\/p>\n<h2>FAQ<\/h2>\n<h3>Come faccio a sapere se le mie estensioni VS Code sono state compromesse da GlassWorm?<\/h3>\n<p>Cerca la variabile marker <code>lzcdrtfxyqiplpd<\/code> nel tuo codice, verifica la presenza del file <code>~\/init.json<\/code> e controlla installazioni inattese di Node.js nella home. Usa <code>npx anti-trojan-source --files='**\/*.{js,ts}' --verbose<\/code> per scansionare caratteri Unicode invisibili. Monitora anche le connessioni di rete verso gli IP 217.69.3.218 e 140.82.52.31.<\/p>\n<h3>Sono a rischio anche se uso VS Code dal marketplace ufficiale Microsoft e non Open VSX?<\/h3>\n<p>S\u00ec, anche se in misura minore. GlassWorm ha colpito principalmente Open VSX (usato da fork come Cursor, Windsurf e Trae), ma la campagna ha compromesso anche pacchetti npm e repository GitHub. Se installi dipendenze npm o cloni repository da GitHub, potresti essere esposto. Microsoft ha introdotto la scansione dei segreti pre-pubblicazione, ma nessun marketplace \u00e8 immune al 100%.<\/p>\n<h3>Cosa devo fare immediatamente se scopro un&#8217;estensione GlassWorm installata?<\/h3>\n<p>Disinstalla subito l&#8217;estensione, disconnetti la macchina dalla rete se possibile e ruota immediatamente tutti i token: GitHub PAT, npm auth, chiavi SSH, credenziali Git, token CI\/CD e qualsiasi chiave API nelle variabili d&#8217;ambiente. Verifica la cronologia dei commit nei tuoi repository per push non autorizzati. Controlla i processi in esecuzione per eventuali server VNC nascosti o proxy SOCKS.<\/p>\n<h3>La vulnerabilit\u00e0 &#8220;Open Sesame&#8221; di Open VSX \u00e8 stata risolta?<\/h3>\n<p>S\u00ec, la vulnerabilit\u00e0 \u00e8 stata corretta in Open VSX versione 0.32.0 rilasciata a marzo 2026, dopo la segnalazione responsabile del ricercatore Oran Simhony di Koi Security l&#8217;8 febbraio 2026. Il bug consentiva di bypassare la scansione pre-pubblicazione esaurendo il pool di connessioni al database, facendo interpretare al sistema il fallimento degli scanner come validazione riuscita.<\/p>\n<h3>Quali strumenti posso integrare nella mia pipeline CI\/CD per proteggermi da attacchi simili?<\/h3>\n<p>Integra <strong>anti-trojan-source<\/strong> come step obbligatorio nelle GitHub Actions per bloccare codice con Unicode sospetto. Usa <strong>eslint-plugin-anti-trojan-source<\/strong> per warning in tempo reale nell&#8217;IDE. Adotta piattaforme di analisi statica come <strong>Snyk<\/strong> o <strong>Socket<\/strong> per il monitoraggio continuo delle dipendenze. Implementa la verifica dei checksum sugli aggiornamenti delle estensioni e mantieni una allowlist delle estensioni approvate.<\/p>\n<h2>Conclusione<\/h2>\n<p>L&#8217;attacco <strong>GlassWorm<\/strong> del marzo 2026 segna un punto di svolta nella sicurezza della supply chain degli sviluppatori. Con 433 componenti compromessi su GitHub, npm e Open VSX, e un&#8217;architettura C2 basata su blockchain Solana praticamente impossibile da abbattere, siamo di fronte a un livello di sofisticazione che richiede un cambio di mentalit\u00e0.<\/p>\n<p>Non basta pi\u00f9 fidarsi del marketplace: ogni estensione va verificata, ogni aggiornamento va controllato, ogni credenziale va considerata potenzialmente esposta. Come chi <a href=\"https:\/\/darioiannascoli.it\/blog\/soc-autonomi-threat-prediction-ai-preemptive-cybersecurity-2026\/\">implementa SOC autonomi e threat prediction<\/a>, dobbiamo portare lo stesso approccio proattivo anche sul nostro ambiente di sviluppo locale.<\/p>\n<p>Il mio consiglio: partite oggi con la scansione <code>anti-trojan-source<\/code>, controllate gli indicatori di compromissione, ruotate le credenziali e integrate la verifica nella vostra CI\/CD. La sicurezza delle estensioni IDE non \u00e8 pi\u00f9 un optional \u2014 \u00e8 una necessit\u00e0. Se avete domande o volete condividere la vostra esperienza con GlassWorm, lasciate un commento qui sotto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;attacco GlassWorm ha compromesso 72 estensioni Open VSX con Unicode invisibile e C2 Solana. Ecco come verifico la sicurezza delle mie estensioni VS Code.<\/p>\n","protected":false},"author":1,"featured_media":1757,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"GlassWorm: 72 Estensioni Open VSX Malevole e Come Proteggersi","_seopress_titles_desc":"GlassWorm ha colpito 72 estensioni Open VSX nel marzo 2026 con Unicode invisibile e C2 Solana. Scopri come verifico la sicurezza delle mie estensioni VS Code.","_seopress_robots_index":"","footnotes":""},"categories":[5],"tags":[593,596,597,594,598,595],"class_list":["post-1756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assistenza-computer","tag-glassworm","tag-open-vsx","tag-sicurezza-ide","tag-supply-chain-attack","tag-unicode-malware","tag-vs-code"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/1756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/comments?post=1756"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/1756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media\/1757"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=1756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=1756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=1756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}