Il 17 giugno 2026 un attaccante ha messo a segno un attacco alla supply chain contro Mastra, un framework open source molto diffuso per costruire applicazioni di intelligenza artificiale in JavaScript e TypeScript. In appena 88 minuti, sono stati ripubblicati 142 pacchetti nello scope npm @mastra con una singola dipendenza malevola iniettata: easy-day-js, un typosquat della popolare libreria dayjs.
Come è iniziato: un account dimenticato
Il punto di accesso non è stata una vulnerabilità nel codice di Mastra, ma un account contributor — riconducibile a un utente identificato come "ehindero" — i cui permessi di pubblicazione sullo scope npm non erano mai stati revocati dopo la fine della sua collaborazione al progetto. Una volta ripreso il controllo di quell'account, l'attaccante ha potuto pubblicare pacchetti per conto dell'intero namespace @mastra senza destare sospetti immediati.
La trappola del typosquat
La tecnica usata è particolarmente accurata. L'attaccante ha prima pubblicato una versione pulita e legittima di easy-day-js (la 1.11.21), per costruire fiducia e superare eventuali controlli automatici. Subito dopo ha rilasciato la versione 1.11.22, questa volta armata, pochi minuti prima di lanciare la pubblicazione massiva dei 142 pacchetti compromessi. Poiché questi pacchetti dichiaravano una dipendenza con il vincolo ^1.11.21, il meccanismo di risoluzione delle versioni semver di npm ha scaricato automaticamente la release malevola più recente compatibile, senza alcuna azione da parte degli sviluppatori.
Cosa faceva il malware
La versione armata di easy-day-js conteneva uno script postinstall offuscato (setup.cjs) che, una volta eseguito durante l'installazione del pacchetto, disattivava la verifica dei certificati TLS, scriveva marcatori di presenza in directory temporanee, scaricava un payload di secondo stadio da un'infrastruttura di comando e controllo, lo avviava come processo in background separato e infine si autoeliminava per ostacolare le analisi forensi successive.
La portata dell'impatto
Mastra è un framework con oltre 1,1 milioni di download settimanali complessivi; il pacchetto più scaricato dello scope, @mastra/core, ne conta da solo circa 918.000. Secondo i ricercatori, alcune sovrapposizioni nelle tecniche utilizzate sono state collegate dal team Microsoft ai gruppi Sapphire Sleet/BlueNoroff, attivi storicamente in campagne di furto di credenziali e criptovalute.
Cosa fare
Chi ha installato o aggiornato dipendenze nello scope @mastra durante la finestra dell'attacco dovrebbe: tornare a una versione precedente all'incidente; ruotare tutte le credenziali potenzialmente esposte, inclusi token npm e GitHub, chiavi dei provider cloud, chiavi API dei modelli linguistici, segreti CI/CD e chiavi SSH; verificare la presenza di portafogli di criptovalute sui sistemi coinvolti e, in caso di dubbio, spostare i fondi su wallet generati su dispositivi puliti; infine, cercare ed eliminare eventuali artefatti di persistenza lasciati dal payload.
L'episodio ribadisce un problema strutturale dell'ecosistema open source: account di contributor non più attivi ma ancora dotati di permessi di pubblicazione restano un punto debole capace di trasformarsi, anche anni dopo, in una porta d'accesso per migliaia di sistemi a valle.