Paketen hade tillsammans mer än 1,1 miljoner nedladdningar i veckan . Attacken riktade därmed inte bara in sig på en enskild utvecklare, utan på en hel del av AI-ekosystemets beroendekedja. Microsoft kopplade med hög säkerhet operationen till Sapphire Sleet i en uppdatering den 19 juni 2026 .
Angreppet följde ett välkänt mönster: en angripare tog över ett legitimt publiceringskonto och använde sedan den etablerade tilliten i paketregistret mot andra utvecklare.
Angriparna riktade in sig på en legitim Mastra-underhållare genom social manipulation och lyckades komma över inloggningsuppgifterna till dennes npm-konto . Kontot, som identifierats som ehindero, hade rätt att publicera paket i hela @mastra-omfattningen .
Med det kapade kontot publicerade angriparna nya versioner av paketen i @mastra/* under ett tidsfönster på 88 minuter. Vissa rapporter beskriver den mest intensiva publiceringsfasen som så kort som 19 minuter . Tempot tyder på att processen styrdes av ett automatiserat skript snarare än manuella uppladdningar.
De komprometterade versionerna innehöll ett skadligt beroende med namnet easy-day-js. Namnet liknar dayjs, ett legitimt och vanligt datum bibliotek för JavaScript – en så kallad typosquatting-attack . Säkerhetsforskare har därför kallat kampanjen för "easy-day-js" .
Nyttolasten aktiverades automatiskt genom npm:s postinstall-skript. Det innebar att en utvecklare kunde utlösa attacken redan genom att köra npm install på ett berört paket. Det krävdes alltså inte att den installerade applikationen först kördes .
När koden hade körts letade den efter nycklar till kryptoplånböcker, inloggningsuppgifter till molntjänster och hemligheter i CI/CD-system – de automatiserade miljöer som används för att bygga, testa och publicera kod . Enligt rapporteringen stängde nyttolasten dessutom av TLS-verifiering och hämtade en andra stjälarprogramvara från angriparnas infrastruktur .
Den 19 juni 2026 bedömde Microsoft med hög säkerhet att attacken kunde kopplas till Sapphire Sleet, en nordkoreansk statsaktör som främst riktar in sig på finans- och kryptosektorerna . Bedömningen grundades på infrastruktur och så kallade TTP:er – angriparnas metoder, tekniker och procedurer – som överensstämmer med tidigare operationer från gruppen.
Amazon Threat Intelligence har även kopplat Sapphire Sleet till tidigare kampanjer mot npm-paket som axios, debug, chalk och typo-crypto .
Mastra-incidenten inträffade samtidigt som Microsoft redan arbetade med att minska riskerna med långlivade publiceringsuppgifter. Företaget har nu tydliggjort två centrala förändringar för NuGet, Microsofts paketregister för .NET-utvecklare.
Från och med 17 augusti 2026 får nya API-nycklar på NuGet.org ha en maximal livslängd på 30 dagar, jämfört med tidigare 365 dagar . Alla nycklar som skapats före detta datum kommer att löpa ut den 1 november 2026 .
Bakgrunden är att långlivade API-nycklar är enkla att tappa bort eller läcka och kan ge en angripare lång tid att publicera manipulerade paket under ett betrott projektnamn . Det var just den typen av åtkomst som gjorde Mastra-attacken möjlig, liksom den senare komprometteringen av NX Console-paketet .
Microsoft rekommenderar i stället Trusted Publishing, en publiceringsmodell som lanserades i september 2025. Den ersätter långlivade API-nycklar med kortlivad autentisering baserad på OpenID Connect, OIDC .
Fördelarna är bland annat:
När ett CI/CD-arbetsflöde med Trusted Publishing körs begär det en kryptografiskt signerad OIDC-token från sin leverantör, exempelvis GitHub Actions. NuGet.org kontrollerar tokenen mot den registrerade publiceringspolicyn och utfärdar därefter en tillfällig, engångsnyckel som bara gäller för den aktuella publiceringen .
Microsofts åtgärder ingår i en bredare förskjutning bort från långlivade tokens i paketekosystemet:
npm login ger nu i stället en sessionstoken som gäller i två timmar .Tillsammans ska åtgärderna minska risken för den typ av angrepp som drabbade Mastra: ett enda långlivat och otillräckligt skyddat konto med publiceringsrättigheter till en hel paketomfattning.
npm install --ignore-scripts, eller inställningen ignore-scripts = true, kan förhindra att skadliga postinstall-skript körs automatiskt .