De berørte pakker havde tilsammen over 1,1 millioner downloads om ugen . Angrebet ramte dermed et bredt udsnit af AI-udviklermiljøet og fik Microsoft til at fremskynde ændringer i sikkerheden omkring publicering af softwarepakker. Den 19. juni vurderede Microsoft med høj sikkerhed, at Sapphire Sleet stod bag operationen .
Angrebet fulgte en velkendt, men fortsat effektiv opskrift: Først blev en legitim konto kapret, hvorefter angriberne brugte dens tillid og publiceringsrettigheder til at distribuere skadelig kode.
Angriberne målrettede en legitim Mastra-vedligeholder gennem social engineering og fik adgang til vedkommendes npm-login . Den kompromitterede konto, der er identificeret som "ehindero", havde rettigheder til at publicere på tværs af hele @mastra-området .
Ved hjælp af den kaprede konto genudgav angriberne alle pakkerne i @mastra/*-navnerummet inden for et vindue på 88 minutter. Nogle rapporter beskriver selve massepubliceringen som gennemført på helt ned til 19 minutter . Hastigheden peger på, at processen blev udført af et automatiseret script frem for manuelt.
Hver kompromitteret pakkeversion fik tilføjet en skadelig afhængighed med navnet "easy-day-js". Navnet minder om den legitime og udbredte dato- og tidsbibliotek dayjs – en såkaldt typosquatting-teknik, hvor et næsten identisk navn skal få brugeren til at overse forskellen . Sikkerhedsforskere har kaldt kampagnen "easy-day-js" .
Den skadelige kode blev designet til at starte automatisk gennem npm's postinstall-script. Det betød, at en udvikler kunne udløse payloaden ved blot at køre npm install på en berørt pakke. Det var ikke nødvendigt først at starte en applikation eller køre Mastra-kode .
Efter aktivering indsamlede payloaden blandt andet nøgler til kryptovalutapunge, cloud-legitimationsoplysninger og hemmeligheder fra CI/CD-systemer på udviklernes arbejdsstationer og i deres build-miljøer . Koden deaktiverede også TLS-verifikation og hentede en yderligere informationsstjæler fra infrastruktur kontrolleret af angriberne .
Den 19. juni 2026 vurderede Microsoft med høj sikkerhed, at angrebet kunne tilskrives Sapphire Sleet, en nordkoreansk statsaktør, der især retter sig mod finans- og kryptovalutasektorerne. Microsoft pegede på infrastruktur samt taktikker, teknikker og procedurer – samlet kaldet TTP'er – som stemmer overens med tidligere operationer knyttet til gruppen .
Amazon Threat Intelligence har desuden koblet Sapphire Sleet til tidligere kampagner mod npm-pakker som axios, debug, chalk og typo-crypto .
Mastra-angrebet blev et tydeligt eksempel på risikoen ved langlivede publiceringsnøgler. Microsoft havde allerede arbejdet på flere ændringer og annoncerede nu især to tiltag, der skal gøre netop denne type angreb vanskeligere.
Fra 17. august 2026 reducerer Microsoft den maksimale levetid for nyoprettede API-nøgler på NuGet.org fra 365 dage til 30 dage . Alle nøgler, der er oprettet før denne dato, udløber tvangsmæssigt den 1. november 2026 .
NuGet.org er Microsofts pakkeregister for .NET-økosystemet. Ændringen er en direkte reaktion på den risiko, der følger med API-nøgler, som ligger aktive i månedsvis eller et helt år. Som Microsoft formulerer det, er langlivede nøgler "løse tekststrenge, der er nemme at miste" . Hvis en sådan nøgle bliver stjålet, får en angriber et stort tidsvindue til at udgive trojanske pakker under et navn, brugerne allerede har tillid til.
Microsoft anbefaler, at pakkevedligeholdere skifter til Trusted Publishing – en publiceringsmetode, der blev lanceret i september 2025 og bruger OpenID Connect, forkortet OIDC, i stedet for langlivede API-nøgler .
Metoden giver blandt andet:
Når et CI/CD-workflow med Trusted Publishing kører, anmoder det om et kryptografisk signeret OIDC-token fra udbyderen, for eksempel GitHub Actions. NuGet.org kontrollerer tokenet mod den registrerede publiceringspolitik og udsteder derefter en midlertidig API-nøgle, der kun kan bruges til den aktuelle publicering .
Microsofts tiltag kommer samtidig med bredere ændringer i npm-økosystemet:
npm login udsteder nu kun sessionstokens, der varer to timer .Tilsammen skal ændringerne fjerne den adgangsvej, Sapphire Sleet udnyttede: én langlivet og utilstrækkeligt beskyttet npm-token med ret til at publicere på tværs af et helt pakkenavnerum.
npm install --ignore-scripts – eller indstillingen ignore-scripts = true – kan forhindre skadelige postinstall-scripts i at køre. Tilsvarende indstillinger findes til pnpm og Yarn .