Due giorni dopo, Microsoft ha attribuito l'operazione con elevata confidenza a Sapphire Sleet, gruppo sponsorizzato dalla Corea del Nord e noto anche come BlueNoroff e APT38 .
La campagna, denominata easy-day-js, ha seguito una catena relativamente semplice ma molto efficace: prendere il controllo di un'identità considerata affidabile, pubblicare rapidamente versioni alterate e lasciare che fosse il normale processo di installazione a eseguire il codice malevolo.
Gli aggressori hanno colpito tramite tecniche di ingegneria sociale un contributore legittimo di Mastra, riuscendo a ottenere le credenziali del suo account npm . L'account, identificato come ehindero, disponeva dei permessi di pubblicazione sull'intero ambito @mastra .
Questo passaggio è stato decisivo: invece di dover convincere gli sviluppatori a installare un pacchetto sconosciuto, gli aggressori hanno potuto aggiornare pacchetti già associati a un progetto legittimo.
Utilizzando l'account violato, gli attaccanti hanno ripubblicato tutti i pacchetti della famiglia @mastra/* nell'arco di circa 88 minuti. Alcuni resoconti collocano il picco della pubblicazione in appena 19 minuti . La velocità dell'operazione fa pensare all'impiego di uno script automatizzato, non a un caricamento manuale dei pacchetti.
Ogni versione compromessa includeva easy-day-js, un typosquat della libreria legittima e molto utilizzata dayjs . Il nome è studiato per sembrare plausibile a un controllo superficiale e per inserirsi nella catena delle dipendenze senza attirare immediatamente l'attenzione.
npm installIl codice malevolo era collegato allo script npm postinstall. Di conseguenza, l'esecuzione poteva avvenire non appena uno sviluppatore installava un pacchetto interessato con npm install, senza che fosse necessario avviare l'applicazione o utilizzare una specifica funzione di Mastra .
Dopo l'esecuzione, il payload cercava chiavi di portafogli di criptovalute, credenziali cloud e segreti presenti sulle workstation degli sviluppatori e nei sistemi CI/CD, cioè gli ambienti automatizzati che compilano, testano e pubblicano il software . Il codice disabilitava inoltre la verifica TLS e scaricava un infostealer di seconda fase da un'infrastruttura controllata dagli aggressori .
L'incidente mostra il rischio di concentrare poteri di pubblicazione molto ampi in un unico account protetto da credenziali che possono essere rubate. Una volta ottenuto l'accesso al maintainer, gli aggressori non hanno dovuto compromettere singolarmente 145 progetti: hanno sfruttato i permessi già assegnati all'intero spazio dei nomi.
La fiducia nella provenienza del pacchetto ha inoltre giocato a favore dell'attacco. Un aggiornamento pubblicato sotto un namespace noto può essere installato automaticamente da pipeline e progetti che aggiornano le dipendenze senza una revisione puntuale di ogni nuova versione.
Il 19 giugno 2026 Microsoft ha valutato con elevata confidenza che l'attività fosse riconducibile a Sapphire Sleet, un attore statale nordcoreano che prende principalmente di mira il settore finanziario e quello delle criptovalute . L'azienda ha citato l'infrastruttura e le tattiche, tecniche e procedure — le cosiddette TTP — osservate nella campagna, ritenute coerenti con operazioni precedentemente attribuite al gruppo .
Amazon Threat Intelligence ha inoltre collegato Sapphire Sleet a precedenti campagne contro pacchetti npm come axios, debug, chalk e typo-crypto .
Sebbene l'incidente abbia colpito npm, Microsoft ha accelerato misure più ampie per proteggere gli ecosistemi di pacchetti, compreso NuGet.org, il repository utilizzato dagli sviluppatori .NET.
A partire dal 17 agosto 2026, la durata massima delle nuove chiavi API di NuGet.org passa da 365 a 30 giorni . Tutte le chiavi create prima di quella data verranno invece fatte scadere il 1° novembre 2026 .
L'obiettivo è ridurre il periodo in cui una chiave rubata può essere utilizzata per pubblicare pacchetti alterati. Come ha spiegato Microsoft, le chiavi di lunga durata sono stringhe facili da perdere o esporre e possono diventare un vettore privilegiato per gli attacchi alla supply chain .
Microsoft raccomanda ai maintainer di passare a Trusted Publishing, un modello introdotto nel settembre 2025 che utilizza l'autenticazione OpenID Connect (OIDC) al posto di chiavi API conservate a lungo nei repository o nei sistemi CI/CD .
Il funzionamento è basato sull'identità del workflow, non sulla semplice disponibilità di un segreto:
I principali vantaggi sono :
Trusted Publishing è disponibile anche nell'ecosistema npm e in altri repository di pacchetti, tra cui PyPI . Tuttavia, l'adozione di questo modello non elimina da sola ogni rischio: anche un workflow legittimo deve essere protetto da modifiche non autorizzate e da compromissioni dell'ambiente di build.
La risposta all'attacco Mastra si inserisce in una stretta più ampia sulle credenziali di pubblicazione:
npm login ora rilascia sessioni valide per due ore .Nel loro insieme, queste misure cercano di impedire lo scenario sfruttato da Sapphire Sleet: un unico token di pubblicazione a lunga durata, poco sorvegliato e dotato di accesso a un'intera famiglia di pacchetti.
L'incidente offre indicazioni concrete per ridurre il rischio:
npm install --ignore-scripts, oppure l'impostazione globale ignore-scripts = true, può impedire l'esecuzione automatica di script preinstall e postinstall; Microsoft indica impostazioni equivalenti anche per pnpm e Yarn .La lezione centrale è semplice: nella supply chain del software non basta verificare il nome del pacchetto. Bisogna proteggere anche l'identità che lo pubblica, il processo di build e ogni credenziale che quel processo può raggiungere.