Die betroffenen Pakete kamen zusammen auf mehr als 1,1 Millionen Downloads pro Woche . Microsoft ordnete die Operation am 19. Juni 2026 mit hoher Sicherheit Sapphire Sleet zu .
Der Ablauf entspricht einem bekannten Muster bei Angriffen auf Open-Source-Lieferketten: Nicht der Quellcode des Projekts wird zuerst geknackt, sondern ein vertrauenswürdiger Zugang zum Paket-Ökosystem.
Die Angreifer manipulierten zunächst einen legitimen Mastra-Maintainer und erlangten dessen npm-Zugangsdaten . Das betroffene Konto mit dem Namen „ehindero“ verfügte über Veröffentlichungsrechte für den gesamten @mastra-Namensraum .
Mit dem gekaperten Konto veröffentlichten die Angreifer manipulierte Versionen aller Pakete im @mastra/*-Namensraum. Der gesamte Vorgang dauerte rund 88 Minuten; für den eigentlichen Veröffentlichungsansturm nennen einzelne Berichte sogar nur 19 Minuten . Das Tempo spricht für ein automatisiertes Skript und nicht für manuelle Uploads.
Die manipulierten Versionen enthielten eine Abhängigkeit namens „easy-day-js“. Dabei handelt es sich um ein Typosquat der bekannten Datumsbibliothek „dayjs“ – also um einen Namen, der einer legitimen Bibliothek zum Verwechseln ähnlich sieht . Sicherheitsforscher bezeichnen die Kampagne deshalb als „easy-day-js“ .
Die Schadsoftware wurde über ein npm-postinstall-Skript automatisch gestartet. Wer ein betroffenes Paket mit npm install installierte, konnte die Payload auslösen, ohne anschließend überhaupt Anwendungscode ausführen zu müssen .
Nach der Ausführung suchte die Payload unter anderem nach Schlüsseln für Kryptowährungs-Wallets, Cloud-Zugangsdaten und Geheimnissen aus CI/CD-Systemen – also aus automatisierten Entwicklungs- und Bereitstellungspipelines . Außerdem deaktivierte sie die TLS-Prüfung und lud einen weiteren Infostealer von einer von den Angreifern kontrollierten Infrastruktur nach .
Microsoft bewertete die Zuordnung zu Sapphire Sleet am 19. Juni 2026 mit hoher Sicherheit. Als Begründung nannte das Unternehmen die verwendete Infrastruktur sowie Taktiken, Techniken und Vorgehensweisen – kurz TTPs –, die mit früheren Aktivitäten der Gruppe übereinstimmen .
Sapphire Sleet ist ein nordkoreanischer staatlicher Akteur, der vor allem auf den Finanz- und Kryptowährungssektor zielt. Amazon Threat Intelligence brachte die Gruppe zudem mit früheren Angriffen auf npm-Pakete wie axios, debug, chalk und typo-crypto in Verbindung .
Der Mastra-Vorfall fällt in eine Phase, in der Microsoft die Veröffentlichung von Paketen über NuGet.org – die Paketplattform für das .NET-Ökosystem – ohnehin sicherer machen will. Die nun angekündigten Änderungen zielen genau auf das Problem, das solche Angriffe besonders gefährlich macht: langlebige Zugangsschlüssel mit weitreichenden Veröffentlichungsrechten.
Ab dem 17. August 2026 dürfen neu erstellte NuGet.org-API-Schlüssel höchstens 30 Tage gültig sein. Die bisher mögliche Laufzeit von 365 Tagen entfällt .
Alle API-Schlüssel, die vor diesem Datum erstellt wurden, laufen am 1. November 2026 automatisch ab . Maintainer müssen bis dahin neue Schlüssel ausstellen oder auf Trusted Publishing umsteigen.
Microsoft begründet den Schritt damit, dass langfristig gültige API-Schlüssel leicht verloren gehen oder in falsche Hände geraten können. Wer einen solchen Schlüssel stiehlt, erhält ein langes Zeitfenster, um unter dem Namen eines vertrauenswürdigen Projekts manipulierte Pakete zu veröffentlichen .
Microsoft empfiehlt Maintainerinnen und Maintainer, auf Trusted Publishing umzusteigen. Der im September 2025 eingeführte Ansatz nutzt OpenID Connect (OIDC), um Veröffentlichungen aus CI/CD-Systemen zu authentifizieren, anstatt dauerhaft gültige API-Schlüssel in Repositories oder Build-Umgebungen zu hinterlegen .
Die wichtigsten Vorteile :
Technisch fordert der CI/CD-Workflow – beispielsweise über GitHub Actions – ein kryptografisch signiertes OIDC-Token an. NuGet.org prüft dieses Token gegen die hinterlegte Publisher-Richtlinie und stellt anschließend einen temporären, nur einmal verwendbaren API-Schlüssel für die jeweilige Veröffentlichung aus .
Microsofts Maßnahmen stehen nicht isoliert. Das gesamte Paket-Ökosystem entfernt sich von dauerhaft gültigen Veröffentlichungstokens:
npm login stellt seitdem nur noch Sitzungs-Tokens mit einer Laufzeit von zwei Stunden aus .Zusammen sollen diese Maßnahmen das Angriffsmuster erschweren, das Sapphire Sleet im Mastra-Fall ausgenutzt hat: ein einzelnes, langlebiges und unzureichend geschütztes Maintainer-Token mit Veröffentlichungsrechten für einen kompletten Paketbereich.
npm install --ignore-scripts oder die globale Einstellung ignore-scripts = true verhindert die automatische Ausführung von Pre- und Post-Installationsskripten. Das kann eine schädliche postinstall-Payload blockieren .