Am 1. Juni 2026 haben wir mehrere offizielle Pakete von der @redhat-cloud-services-Bereich auf npm wurden durch einen Wurm kompromittiert, der Zugangsdaten stiehlt. Über 30 Pakete scheinen betroffen zu sein. Die Malware ähnelt der Mini-Shai-Hulud-Malware das kürzlich von TeamPCP als Open Source veröffentlicht wurde. Seitdem die Tools öffentlich zugänglich sind, haben auch andere Angreifer Zugriff auf dieselben Techniken und können diese nachahmen oder anpassen. Die Pakete wurden über GitHub Actions OIDC veröffentlicht, was darauf hindeutet, dass die CI/CD-Pipeline kompromittiert wurde und nicht ein npm-Token. Wenn Sie seit dem 1. Juni 2026 betroffene Paketversionen installiert haben, betrachten Sie alle secrets, Cloud-Anmeldedaten, SSH-Schlüssel und npm-Token als kompromittiert und ändern Sie diese unverzüglich.
Zeitleiste der „Mini Shai-Hulud“-Kampagne
- 22. April 2026 – @bitwarden/cli wurde über einen manipulierten GitHub-Actions-Workflow kompromittiert. Die Schadcode-Nutzlast bezeichnet sich selbst als „Shai-Hulud: The Third Coming“.
- 29. April 2026 – Vier SAP-npm-Pakete wurden durch ein npm-Token kompromittiert, das über einen böswilligen CircleCI-Pull-Request-Build offengelegt wurde.
- 30. April 2026 – PyTorch Lightning auf PyPI kompromittiert, Versionen 2.6.2 und 2.6.3.
- 12. Mai 2026 – Mini Shai-Hulud erreicht über 160 Pakete, darunter Mistral und Tanstack.
- 12. Mai 2026 – TeamPCP veröffentlicht den vollständigen Quellcode von Shai-Hulud auf GitHub und veröffentlicht gleichzeitig Beiträge auf BreachForums, in denen andere dazu ermutigt werden, eigene Kampagnen durchzuführen.
- 19. Mai 2026 – Das npm-Paket „DurableTask“ von Microsoft wurde kompromittiert; Ursache war ein zuvor gehacktes GitHub-Konto.
- 1. Juni 2026 - Über 30
@redhat-cloud-servicesnpm-Pakete, die kompromittiert wurden durch Miasma, eine neue Variante von Mini Shai-Hulud.
Miasma: Ist Shai-Hulud zurück?
Die in den betroffenen Paketen eingebettete Schadsoftware weist starke Ähnlichkeiten mit „Mini Shai-Hulud“ auf, der von TeamPCP als Open-Source-Software veröffentlichten Supply-Chain-Malware. Interessanterweise nennt sich diese Version „Miasma“ und scheint die bekannten „Dune“-Anspielungen von Shai-Hulud durch Elemente der griechischen Mythologie ersetzt zu haben.
TeamPCP ist eine Gruppe von Angreifern, die Lieferkettenangriffe mehreren Monaten gezielte Lieferkettenangriffe durchführt. Ihre Malware „Mini Shai-Hulud“ ist ein ausgeklügelter Wurm zum Diebstahl von Anmeldedaten, der sich verbreitet, indem er mit Hintertüren versehene Versionen von Paketen erneut veröffentlicht, auf die das Opferkonto Zugriff hat. Wir haben bereits über Kompromittierungen berichtet, die Mistral und TanStack, Microsofts Durable Task, PyTorch Lightning, Bitwarden CLI und Intercom betrafen und alle auf dasselbe Tooling zurückgeführt werden konnten.
Als TeamPCP „Mini Shai-Hulud“ als Open-Source-Software veröffentlichte, ging die Bedrohung über einen einzelnen Akteur hinaus. Jede Gruppe kann das Framework nun nutzen, anpassen und gegen neue Ziele einsetzen.
Umgehung der vertrauenswürdigen Veröffentlichung
„Trusted Publishing“ ist ein von npm eingeführter Mechanismus, der darauf abzielt, langlebige Publish-Token aus CI/CD-Pipelines zu entfernen und sie durch kurzlebige OIDC-Token zu ersetzen, die von GitHub Actions ausgestellt werden. Das Verfahren wurde entwickelt, um die Sicherheit zu erhöhen, doch wie jüngste Angriffe zeigen, kann es umgangen werden, wenn ein Angreifer über eine Sicherheitslücke oder ein kompromittiertes Token Zugriff auf eine CI/CD-Pipeline erlangt.
Wir haben festgestellt, dass das GitHub-Konto eines Red-Hat-Mitarbeiters gehackt und dazu missbraucht wurde, bösartige, nicht zu einem Repository gehörende Commits direkt in mehrere Repositorys zu übertragen, wodurch die Codeüberprüfung vollständig umgangen wurde. Diese nicht zu einem Repository gehörenden Commits enthielten eine Workflow-Datei (ci.yaml) und ein Skript (_index.js).
Name: Veröffentlichung
am:
Push:
Zweige: ['*']
Jobs:
Release:
läuft auf: ubuntu-latest
Berechtigungen:
ID-Token: Schreiben
Inhalt: lesen
Schritte:
- Verwendet: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- Verwendet: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
- name: vorbereiten
Ausführung: bun Ausführen _index.js
Umgebung:
OIDC_PACKAGES: "@redhat-cloud-services/frontend-components-advisor-components, @redhat-cloud-services/chrome, @redhat-cloud-services/frontend-components, @redhat-cloud-services/frontend-components-config-utilities, @redhat-cloud-services/frontend-components-config, @redhat-cloud-services/eslint-config-redhat-cloud-services, @redhat-cloud-services/frontend-components-notifications, @redhat-cloud-services/frontend-components-remediations, @redhat-cloud-services/rule-components, @redhat-cloud-services/frontend-components-testing, @redhat-cloud-services/frontend-components-translations, @redhat-cloud-services/tsc-transform-imports, @redhat-cloud-services/types, @redhat-cloud-services/frontend-components-utilities"
WORKFLOW_ID: "ci.yaml"
REPO_ID_SUFFIX: "RedHatInsights/frontend-components"Wenn der Workflow ausgeführt wird, installiert er Bun und führt _index.js, wobei ihm eine Liste der Zielpakete über die OIDC_PAKETE Umgebungsvariable. Das Skript verwendet die id-token: schreiben die Berechtigung, ein kurzlebiges OIDC-Token von GitHub anzufordern, und nutzt dieses Token anschließend, um sich direkt beim vertrauenswürdigen Veröffentlichungsendpunkt von npm zu authentifizieren und mit Hintertüren versehene Versionen aller Pakete in der Liste zu veröffentlichen.
Hier zeigt sich dasselbe grundlegende Muster wie bei den Sicherheitsverletzungen bei TanStack und Bitwarden: Die CI/CD-Pipeline selbst wird zur Angriffsfläche, während die auf OIDC basierende vertrauenswürdige Veröffentlichung – die eigentlich dazu dient, langlebige Token zu vermeiden – zu einem irreführenden Vertrauenssignal wird.
Das Vorinstallationsskript
Jedes kompromittierte Paket enthält in seiner `package.json`-Datei ein Vorinstallationsskript, das bei jedem `npm install` automatisch `node index.js` ausführt – noch bevor der Anwendungscode ausgeführt wird und noch bevor der Entwickler bemerkt, dass etwas nicht stimmt.
"scripts": {
"preinstall": "node index.js"
}
Die Datei „index.js“ ist eine 4,2 MB große Nutzlast, die hinter mehreren Verschleierungsschichten verborgen ist.
Was es stiehlt
Wie bei früheren Mini-Shai-Hulud-Angriffen führt die Schadsoftware eine umfassende Suche nach Anmeldedaten bei Cloud-Anbietern, in CI/CD-Umgebungen und bei Entwicklertools durch. Im Bereich CI zielt sie auf secrets von GitHub Actions ab secrets GITHUB_TOKEN und ACTIONS_RUNTIME_TOKEN. Bei Cloud-Anmeldedaten erfasst es AWS-Zugriffsschlüssel und Sitzungstoken, GCP-Standardanmeldedaten für Anwendungen und Schlüsseldateien für Dienstkonten sowie Anmeldedaten für Azure-Dienstprinzipale und Token für verwaltete Identitäten. Außerdem sucht es nach HashiCorp-Vault-Token, Kubernetes-Dienstkontotoken und kubeconfig-Dateien, npm- und PyPI-Veröffentlichungstoken, privaten SSH-Schlüsseln, Anmeldedaten für Docker-Registries, GPG-Schlüsseln und allen .env-Dateien, die es im Dateisystem finden kann.
Wie Aikido dies erkennt
Wenn Sie ein Aikido-Benutzer sind, überprüfen Sie Ihren zentralen Feed und filtern Sie nach Malware-Problemen. Dies wird als kritisches Problem mit 100/100 angezeigt. Aikido führt nächtliche Rescans durch, aber wir empfehlen, jetzt einen manuellen Rescan auszulösen.
Wenn Sie noch kein Aikido-Benutzer sind, können Sie ein Konto erstellen und Ihre Repos verbinden. Unsere Malware-Abdeckung ist im kostenlosen Plan enthalten, keine Kreditkarte erforderlich.
Für einen umfassenden Schutz Ihres gesamten Teams bietet Ihnen der Geräteschutz Aikido Aikido Transparenz und Kontrolle über die auf den Geräten Ihres Teams installierten Softwarepakete. Er deckt Browser-Erweiterungen, Code-Bibliotheken, IDE-Plugins und Build-Abhängigkeiten ab – alles an einem Ort. Stoppen Sie Malware, bevor sie installiert wird.
Für zukünftigen Schutz sollten Sie Aikido Safe Chain (Open Source) in Betracht ziehen. Safe Chain integriert sich in Ihren bestehenden Workflow, indem es npm-, npx-, yarn-, pnpm- und pnpx-Befehle abfängt und Pakete vor der Installation gegen Aikido Intel prüft.
Indicators of Compromise
Falls Sie eine der folgenden Paketversionen installiert haben, betrachten Sie alle CI secrets, Cloud-Anmeldedaten, SSH-Schlüssel und npm-Token als kompromittiert und ändern Sie diese unverzüglich:
@redhat-cloud-services/chrome(2.3.1, 2.3.2)compliance(4.0.3, 4.0.4)@redhat-cloud-services/config-manager-client(5.0.4, 5.0.5)@redhat-cloud-services/entitlements-client(4.0.11, 4.0.12)@redhat-cloud-services/eslint-config-redhat-cloud-services(3.2.1, 3.2.2)@redhat-cloud-services/Frontend-Komponenten(7.7.2, 7.7.3)@redhat-cloud-services/Frontend-Komponenten-Berater-Komponenten(3.8.2)@redhat-cloud-services/frontend-components-config(6.11.3, 6.11.4)@redhat-cloud-services/Frontend-Komponenten-Konfigurations-Dienstprogramme(4.11.2, 4.11.3)@redhat-cloud-services/frontend-components-notifications(6.9.2, 6.9.3)@redhat-cloud-services/Frontend-Komponenten-Korrekturmaßnahmen(4.9.2, 4.9.3)@redhat-cloud-services/Frontend-Komponenten-Tests(1.2.1, 1.2.2)@redhat-cloud-services/frontend-components-translations(4.4.1, 4.4.2)@redhat-cloud-services/Frontend-Komponenten-Dienstprogramme(7.4.1, 7.4.2)@redhat-cloud-services/hcc-feo-mcp(0.3.1, 0.3.2)@redhat-cloud-services/hcc-kessel-mcp(0.3.1, 0.3.2)@redhat-cloud-services/hcc-pf-mcp(0.6.1, 0.6.2)@redhat-cloud-services/host-inventory-client(5.0.3, 5.0.4)@redhat-cloud-services/insights-client(4.0.4, 4.0.5)@redhat-cloud-services/integrations-client(6.0.4, 6.0.5)@redhat-cloud-services/javascript-clients-shared(2.0.8, 2.0.9)@redhat-cloud-services/notifications-client(6.1.4, 6.1.5)@redhat-cloud-services/patch-client(4.0.4, 4.0.5)@redhat-cloud-services/quickstarts-client(4.0.11, 4.0.12)@redhat-cloud-services/rbac-client(9.0.3, 9.0.4)@redhat-cloud-services/remediations-client(4.0.4, 4.0.5)@redhat-cloud-services/Regelkomponenten(4.7.2, 4.7.3)@redhat-cloud-services/sources-client(3.0.10, 3.0.11)@redhat-cloud-services/topological-inventory-client(3.0.10, 3.0.11)@redhat-cloud-services/tsc-transform-imports(1.2.2)@redhat-cloud-services/Typen(3.6.1, 3.6.2, 3.6.4)@redhat-cloud-services/Sicherheitslücken-Client(2.1.8, 2.1.9)

