- Im NPM-Ökosystem kam es zu einem Supply-Chain-Angriff, bei dem in mehr als 40 Pakete, darunter das beliebte @ctrl/tinycolor, selbstverbreitende Malware eingeschleust wurde. Dadurch können Geheimnisse aus Entwicklungsumgebungen bis hin zu CI/CD-Zugangsdaten kaskadierend infiziert werden. Die infizierten Versionen wurden aus npm entfernt.
- Die Angriffs-Payload führt während des npm-Installationsprozesses asynchron ein Webpack-Bundle (
bundle.js, ~3,6 MB) aus und sammelt über Umgebungsvariablen, Dateisystem und Cloud-SDKs umfangreich Credentials.
- Die bösartige Logik erzwingt über NpmModule.updatePackage das Patchen und Veröffentlichen anderer Pakete und sorgt so für eine kaskadierende Verbreitung. Zudem injiziert sie in GitHub Actions den Workflow shai-hulud und exfiltriert Organisations-Secret über toJSON(secrets).
- Die gesammelten Daten werden durch das Anlegen des öffentlichen GitHub-Repositorys
Shai-Hulud exfiltriert, getarnt als normale Entwicklungsaktivität und mit hoher Fähigkeit zur Umgehung von Erkennung.
- Dies geschieht verdeckt über Zugriffe auf AWS/GCP/Azure/NPM/GitHub-Token und Metadata-Endpunkte sowie über Secret-Suche auf Basis von TruffleHog.
- Erforderlich sind die sofortige Entfernung der Pakete, die Bereinigung der Repositories und der Austausch sämtlicher Credentials sowie die Prüfung von CloudTrail-/GCP-Audit-Logs, das Blockieren von Webhooks und die Einführung von Branch Protection / Secret Scanning / Cooldown-Richtlinien.
Affected Packages
- Berichtet wurden insgesamt 195 Pakete/Versionen. Dazu zählen unter anderem @ctrl/tinycolor (4.1.1, 4.1.2), zahlreiche Pakete im Namespace @ctrl/, die Modulgruppe @crowdstrike/, ngx-bootstrap/ngx-toastr/ng2-file-upload/ngx-color und damit große Teile des Angular-/Web-UI-Ökosystems, außerdem der Mobile-Stack @nativescript-community/ und @nstudio/, die Life-Sciences-Toolchain teselagen/, ember-*, koa2-swagger-ui, pm2-gelf-json und wdio-web-reporter.
- Die exakten Versionen je Paket sind der Tabelle im Original zu entnehmen; es ist eine präzise Querverifikation erforderlich, ob diese Versionen verwendet werden.
- Beispiele:
@ctrl/ngx-emoji-mart 9.2.1, 9.2.2, @ctrl/qbittorrent 9.7.1, 9.7.2, ngx-bootstrap 18.1.4, 19.0.3–20.0.5, ng2-file-upload 7.0.2–9.0.1 usw.
Immediate Actions Required
Identify and Remove Compromised Packages
- Im Projekt prüfen, ob infizierte Pakete vorhanden sind: z. B. mit
npm ls @ctrl/tinycolor
- Infizierte Pakete sofort entfernen: z. B. mit
npm uninstall @ctrl/tinycolor
- Lokale Spuren durch Suche nach dem bekannten
bundle.js-Hash prüfen: sha256sum | grep 46faab8a... verwenden
Clean Infected Repositories
- Bösartigen GitHub-Actions-Workflow löschen:
.github/workflows/shai-hulud-workflow.yml entfernen
- Auf dem Remote erstellten Branch
shai-hulud erkennen und löschen: nach git ls-remote ... | grep shai-hulud dann git push origin --delete shai-hulud ausführen
Rotate All Credentials Immediately
- NPM-Token, GitHub-PATs/Actions-Secrets, SSH-Schlüssel, AWS/GCP/Azure-Zugangsdaten, DB-Connection-Strings, Third-Party-Token, CI/CD-Secrets usw. müssen vollständig ersetzt werden
- Erforderlich ist eine vollständige Rotation, einschließlich aller Einträge in AWS Secrets Manager/GCP Secret Manager
Audit Cloud Infrastructure for Compromise
- AWS: In CloudTrail Zeitpunkte und Muster von Aufrufen wie
BatchGetSecretValue, ListSecrets, GetSecretValue prüfen; mit dem IAM Credential Report auf anomale Erstellung oder Nutzung von Schlüsseln untersuchen
- GCP: In den Audit Logs die Zugriffe auf Secret Manager prüfen und kontrollieren, ob CreateServiceAccountKey-Ereignisse vorhanden sind
Noch keine Kommentare.