Sandworm Mode emerge come una delle campagne più aggressive contro la supply chain JavaScript degli ultimi mesi. Il worm, scoperto dal Socket Research Team, si diffonde tramite 19 pacchetti npm maliziosi, pubblicati sotto gli alias official334 e javaorg, con l’obiettivo di infettare repository, sottrarre segreti CI, compromettere identità GitHub e avvelenare le toolchain AI usate per il coding assistito. Non si tratta di un semplice furto di credenziali: il malware combina propagazione automatica, harvesting profondo e iniezione di server MCP rogue per intercettare chiavi API LLM e wallet crypto. La campagna sfrutta typosquatting mirato su utility Node.js ad alto traffico, strumenti crypto e tool AI come Claude Code e OpenClaw, ricalcando caratteristiche già osservate nelle varianti Shai-Hulud. La differenza è l’integrazione sistematica tra worming npm, iniezione nei workflow GitHub e compromissione delle configurazioni degli assistenti AI.
Panoramica della minaccia e vettori di propagazione
Sandworm Mode agisce come un worm automatico per maintainer npm, rubando token e identità per ripubblicare versioni infette dei pacchetti target. L’esfiltrazione avviene via HTTPS, API GitHub e tunneling DNS, con fallback basato su DGA seed sw2025 distribuito su 10 TLD tra cui .cc e .io. Una volta installato, il malware modifica repository iniettando dipendenze carrier e workflow pull_request_target, sfruttando il GITHUB_TOKEN per creare loop auto-propaganti. Se gli altri metodi falliscono, tenta persino un fallback via SSH_AUTH_SOCK, clonando e pushando codice compromesso. La persistenza si basa su alterazioni di git config global init.templateDir, puntando a ~/.git-templates per installare hook pre-commit e pre-push che continuano a esfiltrare segreti e reiniettare dipendenze. Il payload include una routine distruttiva configurabile, attualmente disabilitata, che potrebbe cancellare la home directory in caso di fallimento nella propagazione su GitHub e npm. Un dead switch pensato come extrema ratio, ma che segnala il potenziale distruttivo dell’operazione.
Architettura tecnica e offuscamento multilayer
Il codice utilizza una catena di decodifica a tre layer. Lo Stage 0 funge da loader: decodifica un blob base64, decomprime con zlib.inflateSync, applica un XOR con chiave statica da 32 byte e avvia il codice tramite eval indiretto. Alcune varianti spezzano il payload in chunk base64 caricati in memoria con Module.compile o scrivono file temporanei poi cancellati. Lo Stage 1 avvia l’harvesting iniziale, cercando file come .npmrc, .env, hardhat.config e mnemonici wallet. Le chiavi crypto vengono esfiltrate immediatamente via endpoint dedicato /exfil/drain, con POST HTTPS autenticato. Lo Stage 2 è cifrato con AES-256-GCM, attivato dopo un ritardo di 48–96 ore più jitter per evadere sandbox, ma eseguito immediatamente in ambienti CI. La chiave viene derivata via XOR buffer, con IV dko6mG8AmQVECvVP e tag /6rzsm9K+mflC4uguMJriA==. Il payload decifrato genera moduli come Propagate, Exfil, McpInject e DeadSwitch, caricati da file transitori .node.js. Il codice integra variabili runtime SANDWORM_ come SANDWORM_MODE e SANDWORM_DGA_SEED, che permettono switch dinamici di comportamento. Il tema Dune/Shai-Hulud non è solo decorativo: è incorporato nei naming interni, suggerendo continuità evolutiva con campagne precedenti.
Iniezione MCP e compromissione delle toolchain AI
Uno degli elementi più critici è il modulo McpInject, che crea directory nascoste come ~/.dev-utils/ e registra server MCP rogue via JSON-RPC. Questi server includono tool apparentemente legittimi come index_project, lint_check e scan_dependencies, ma incorporano prompt injection marcate con blocchi IMPORTANT. Le istruzioni spingono gli assistenti AI a leggere file sensibili, incluse chiavi SSH, credenziali AWS, contenuti di .npmrc e .env, convertendo i segreti in JSON context da esfiltrare. Il worm intercetta chiavi API LLM per nove provider, inclusi OpenAI, Anthropic e Google, oltre a sondare endpoint locali come http://localhost:11434/api/generate per LLM self-hosted. Vengono modificate configurazioni come ~/.claude/settings.json e targettati ambienti come Claude, Cursor e VS Code Continue, creando una compromissione silente delle toolchain AI.
GitHub Action weaponizzata e loop auto-propagante
La GitHub Action pubblica ci-quality/code-quality-check@v1, pubblicata il 17 febbraio 2026, si presenta come scanner di qualità del codice. In realtà integra la stessa logica di propagazione dello Stage 2, iniettando workflow che referenziano se stessa e generando un loop di auto-distribuzione. L’azione esfiltra segreti CI via HTTPS e DNS, produce output fake in forma di tabella per mascherare l’attività e contiene routine distruttive commentate. Il matching con dist/propagate-core.js conferma la condivisione del core worm.
Indicatori di compromissione e infrastruttura
I 19 pacchetti includono nomi come [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] e [email protected]. Gli alias editori sono official334 e javaorg, con email su Proton. Gli endpoint C2 includono https://pkg-metrics.official334.workers.dev/exfil/drain, oltre a domini come freefan.net e fanfree.net. L’uso di Cloudflare Workers come relay rende l’infrastruttura agile e difficile da bloccare rapidamente.
Mitigazioni e risposta operativa
Socket ha notificato npm, GitHub e Cloudflare, portando alla rimozione dei pacchetti e al takedown dell’infrastruttura nota. Tuttavia, la natura worm-like suggerisce che repository compromessi possano ancora diffondere payload secondari. Le azioni immediate includono la rimozione di node_modules/, la rotazione di token npm e GitHub, l’audit di package.json e lockfile, la verifica di workflow CI e il controllo di git config global init.templateDir. È cruciale analizzare eventuali voci mcpServers nelle configurazioni degli assistenti AI. L’hardening richiede restrizione dei permessi nei workflow CI, uso di OIDC e trusted publishing, minimizzazione dei segreti esposti e monitoraggio continuo di attività anomale.
Una nuova fase dell’avvelenamento AI
Sandworm Mode non è solo un worm npm. È un segnale della convergenza tra supply chain software, CI automation e assistenti AI per il coding. L’iniezione MCP e la raccolta di chiavi LLM mostrano come le toolchain AI siano diventate superficie di attacco primaria. L’avvelenamento non avviene più soltanto nella dipendenza JavaScript. Avviene nel contesto operativo dell’AI che scrive codice, legge repository e suggerisce modifiche. In questo scenario, la difesa non è più solo patching: è controllo rigoroso dell’intero ecosistema di sviluppo, dalle dipendenze npm ai server MCP nascosti.
Iscriviti alla Newsletter
Non perdere le analisi settimanali: Entra nella Matrice Digitale.
Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.








