Rufen Sie uns an: +49 2361 9703777 Erreichbarkeit
Mo. - Fr.: 7.30 bis 18.00 Uhr
Schreiben Sie uns: info@zubIT.de Oder nutzen Sie unser Kontaktformular
zubIT QuickSupport Tool Jetzt herunterladen Schneller Support per Fernwartung.

Supply-Chain-Angriff trifft über 180 npm-Pakete („Shai-Hulud“)

Supply-Chain-Angriff trifft über 180 npm-Pakete („Shai-Hulud“)

Im npm-Ökosystem läuft aktuell eine groß angelegte Supply-Chain-Kampagne: Ein selbstreplizierender Wurm („Shai-Hulud“) kompromittiert Maintainer-Konten, injiziert Schadcode und veröffentlicht automatisch neue, infizierte Versionen.

Erste Funde betrafen u. a. @ctrl/tinycolor; inzwischen sind 180+ bis mehrere hundert Pakete gemeldet.
Entwicklerteams sollten umgehend prüfen und reagieren.

Wichtigste Fakten auf einen Blick

  • Umfang: 180+ kompromittierte Pakete; teils Berichte über noch höhere Zahlen im Verlauf der Analysen.
  • Erstmeldung: 15. September durch Community-Reports (u. a. Daniel Pereira) rund um @ctrl/tinycolor.
  • Ziel: Diebstahl von Entwickler-/CI-Geheimnissen (npm-Tokens, GitHub-Zugänge, Cloud-Keys) und automatische Weiterverbreitung.
  • Technik: Einsatz von TruffleHog zum Secret-Harvesting, versteckte GitHub-Actions zur Exfiltration & Persistenz.
  • Betroffene Maintainer/Orgs: Streuung über mehrere Autoren; auch Pakete von CrowdStrike wurden zeitweise in Mitleidenschaft gezogen (Falcon-Sensor nicht betroffen).

Timeline & Ausbreitung

Nach aktuellen Analysen begann die Kampagne Anfang/Mitte September mit zielgerichtetem Phishing gegen Maintainer. Nach der Kompromittierung eines Kontos injiziert der Wurm Schadcode in alle zugehörigen Repositories, veröffentlicht automatisch neue Versionen und setzt damit die Infektionskette fort – ein Verhalten, das über klassische Supply-Chain-Vorfälle hinausgeht.

„Shai-Hulud“ wird in mehreren Fachberichten als eine der gefährlichsten npm-Kompromittierungen bislang bezeichnet.

Technische Details

  • Secret-Diebstahl: Beim npm install eines kompromittierten Pakets läuft ein Obfuscated-Script, das Umgebungsvariablen und Anmeldedaten einsammelt (Cloud/CI/VCS) – häufig mithilfe von TruffleHog.
  • Persistenz & Exfiltration: Automatisch angelegte GitHub Actions leiten Secrets über Webhooks an Angreifer-Infrastruktur und sind in Logs schwer erkennbar.
  • Weiterverbreitung: Gestohlene Tokens erlauben das Re-Publizieren aller Pakete eines Maintainers als infizierte Minor-/Patch-Releases („Wurm“).

Betroffene Pakete & Live-Listen (aktualisiert am 22.09.2025)

Die Zahlen schwanken, da ständig neue Funde hinzukommen.
Auslöser/Prominenter Fund war @ctrl/tinycolor (4.1.1/4.1.2).

PackageVersions
@ahmedhfarag/ngx-perfect-scrollbar20.0.20
@ahmedhfarag/ngx-virtual-scroller4.0.4
@art-ws/common2.0.28
@art-ws/config-eslint2.0.4, 2.0.5
@art-ws/config-ts2.0.7, 2.0.8
@art-ws/db-context2.0.24
@art-ws/di2.0.28, 2.0.32
@art-ws/di-node2.0.13
@art-ws/eslint1.0.5, 1.0.6
@art-ws/fastify-http-server2.0.24, 2.0.27
@art-ws/http-server2.0.21, 2.0.25
@art-ws/openapi0.1.9, 0.1.12
@art-ws/package-base1.0.5, 1.0.6
@art-ws/prettier1.0.5, 1.0.6
@art-ws/slf2.0.15, 2.0.22
@art-ws/ssl-info1.0.9, 1.0.10
@art-ws/web-app1.0.3, 1.0.4
@crowdstrike/commitlint8.1.1, 8.1.2
@crowdstrike/falcon-shoelace0.4.1, 0.4.2
@crowdstrike/foundry-js0.19.1, 0.19.2
@crowdstrike/glide-core0.34.2, 0.34.3
@crowdstrike/logscale-dashboard1.205.1, 1.205.2
@crowdstrike/logscale-file-editor1.205.1, 1.205.2
@crowdstrike/logscale-parser-edit1.205.1, 1.205.2
@crowdstrike/logscale-search1.205.1, 1.205.2
@crowdstrike/tailwind-toucan-base5.0.1, 5.0.2
@ctrl/deluge7.2.1, 7.2.2
@ctrl/golang-template1.4.2, 1.4.3
@ctrl/magnet-link4.0.3, 4.0.4
@ctrl/ngx-codemirror7.0.1, 7.0.2
@ctrl/ngx-csv6.0.1, 6.0.2
@ctrl/ngx-emoji-mart9.2.1, 9.2.2
@ctrl/ngx-rightclick4.0.1, 4.0.2
@ctrl/qbittorrent9.7.1, 9.7.2
@ctrl/react-adsense2.0.1, 2.0.2
@ctrl/shared-torrent6.3.1, 6.3.2
@ctrl/tinycolor4.1.1, 4.1.2
@ctrl/torrent-file4.1.1, 4.1.2
@ctrl/transmission7.3.1
@ctrl/ts-base324.0.1, 4.0.2
@hestjs/core0.2.1
@hestjs/cqrs0.1.6
@hestjs/demo0.1.2
@hestjs/eslint-config0.1.2
@hestjs/logger0.1.6
@hestjs/scalar0.1.7
@hestjs/validation0.1.6
@nativescript-community/arraybuffers1.1.6, 1.1.7, 1.1.8
@nativescript-community/gesturehandler2.0.35
@nativescript-community/perms3.0.5, 3.0.6, 3.0.7, 3.0.8
@nativescript-community/sqlite3.5.2, 3.5.3, 3.5.4, 3.5.5
@nativescript-community/text1.6.9, 1.6.10, 1.6.11, 1.6.12
@nativescript-community/typeorm0.2.30, 0.2.31, 0.2.32, 0.2.33
@nativescript-community/ui-collectionview6.0.6
@nativescript-community/ui-document-picker1.1.27, 1.1.28
@nativescript-community/ui-drawer0.1.30
@nativescript-community/ui-image4.5.6
@nativescript-community/ui-label1.3.35, 1.3.36, 1.3.37
@nativescript-community/ui-material-bottom-navigation7.2.72, 7.2.73, 7.2.74, 7.2.75
@nativescript-community/ui-material-bottomsheet7.2.72
@nativescript-community/ui-material-core7.2.72, 7.2.73, 7.2.74, 7.2.75
@nativescript-community/ui-material-core-tabs7.2.72, 7.2.73, 7.2.74, 7.2.75
@nativescript-community/ui-material-ripple7.2.72, 7.2.73, 7.2.74, 7.2.75
@nativescript-community/ui-material-tabs7.2.72, 7.2.73, 7.2.74, 7.2.75
@nativescript-community/ui-pager14.1.36, 14.1.37, 14.1.38
@nativescript-community/ui-pulltorefresh2.5.4, 2.5.5, 2.5.6, 2.5.7
@nexe/config-manager0.1.1
@nexe/eslint-config0.1.1
@nexe/logger0.1.3
@nstudio/angular20.0.4, 20.0.5, 20.0.6
@nstudio/focus20.0.4, 20.0.5, 20.0.6
@nstudio/nativescript-checkbox2.0.6, 2.0.7, 2.0.8, 2.0.9
@nstudio/nativescript-loading-indicator5.0.1, 5.0.2, 5.0.3, 5.0.4
@nstudio/ui-collectionview5.1.11, 5.1.12, 5.1.13, 5.1.14
@nstudio/web20.0.4
@nstudio/web-angular20.0.4
@nstudio/xplat20.0.5, 20.0.6, 20.0.7
@nstudio/xplat-utils20.0.5, 20.0.6, 20.0.7
@operato/board9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/data-grist9.0.29, 9.0.35, 9.0.36, 9.0.37
@operato/graphql9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/headroom9.0.2, 9.0.35, 9.0.36, 9.0.37
@operato/help9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/i18n9.0.35, 9.0.36, 9.0.37
@operato/input9.0.27, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/layout9.0.35, 9.0.36, 9.0.37
@operato/popup9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@operato/pull-to-refresh9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42
@operato/shell9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39
@operato/styles9.0.2, 9.0.35, 9.0.36, 9.0.37
@operato/utils9.0.22, 9.0.35, 9.0.36, 9.0.37, 9.0.38, 9.0.39, 9.0.40, 9.0.41, 9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46
@teselagen/bounce-loader0.3.16, 0.3.17
@teselagen/liquibase-tools0.4.1
@teselagen/range-utils0.3.14, 0.3.15
@teselagen/react-list0.8.19, 0.8.20
@teselagen/react-table6.10.19
@thangved/callback-window1.1.4
@things-factory/attachment-base9.0.43, 9.0.44, 9.0.45, 9.0.46, 9.0.47, 9.0.48, 9.0.49, 9.0.50
@things-factory/auth-base9.0.43, 9.0.44, 9.0.45
@things-factory/email-base9.0.42, 9.0.43, 9.0.44, 9.0.45, 9.0.46, 9.0.47, 9.0.48, 9.0.49, 9.0.50, 9.0.51, 9.0.52, 9.0.53, 9.0.54
@things-factory/env9.0.42, 9.0.43, 9.0.44, 9.0.45
@things-factory/integration-base9.0.43, 9.0.44, 9.0.45
@things-factory/integration-marketplace9.0.43, 9.0.44, 9.0.45
@things-factory/shell9.0.43, 9.0.44, 9.0.45
@tnf-dev/api1.0.8
@tnf-dev/core1.0.8
@tnf-dev/js1.0.8
@tnf-dev/mui1.0.8
@tnf-dev/react1.0.8
@ui-ux-gang/devextreme-angular-rpk24.1.7
@yoobic/design-system6.5.17
@yoobic/jpeg-camera-es61.0.13
@yoobic/yobi8.7.53
airchief0.3.1
airpilot0.8.8
angulartics214.1.1, 14.1.2
browser-webdriver-downloader3.0.8
capacitor-notificationhandler0.0.2, 0.0.3
capacitor-plugin-healthapp0.0.2, 0.0.3
capacitor-plugin-ihealth1.1.8, 1.1.9
capacitor-plugin-vonage1.0.2, 1.0.3
capacitorandroidpermissions0.0.4, 0.0.5
config-cordova0.8.5
cordova-plugin-voxeet21.0.24
cordova-voxeet1.0.32
create-hest-app0.1.9
db-evo1.1.4, 1.1.5
devextreme-angular-rpk21.2.8
ember-browser-services5.0.2, 5.0.3
ember-headless-form1.1.2, 1.1.3
ember-headless-form-yup1.0.1
ember-headless-table2.1.5, 2.1.6
ember-url-hash-polyfill1.0.12, 1.0.13
ember-velcro2.2.1, 2.2.2
encounter-playground0.0.2, 0.0.3, 0.0.4, 0.0.5
eslint-config-crowdstrike11.0.2, 11.0.3
eslint-config-crowdstrike-node4.0.3, 4.0.4
eslint-config-teselagen6.1.7
globalize-rpk1.7.4
graphql-sequelize-teselagen5.3.8
html-to-base64-image1.0.2
json-rules-engine-simplified0.2.1
jumpgate0.0.2
koa2-swagger-ui5.11.1, 5.11.2
mcfly-semantic-release1.3.1
mcp-knowledge-base0.0.2
mcp-knowledge-graph1.2.1
mobioffice-cli1.0.3
monorepo-next13.0.1, 13.0.2
mstate-angular0.4.4
mstate-cli0.4.7
mstate-dev-react1.1.1
mstate-react1.6.5
ng2-file-upload7.0.2, 7.0.3, 8.0.1, 8.0.2, 8.0.3, 9.0.1
ngx-bootstrap18.1.4, 19.0.3, 19.0.4, 20.0.3, 20.0.4, 20.0.5
ngx-color10.0.1, 10.0.2
ngx-toastr19.0.1, 19.0.2
ngx-trend8.0.1
ngx-ws1.1.5, 1.1.6
oradm-to-gql35.0.14, 35.0.15
oradm-to-sqlz1.1.2
ove-auto-annotate0.0.9
pm2-gelf-json1.0.4, 1.0.5
printjs-rpk1.6.1
react-complaint-image0.0.32
react-jsonschema-form-conditionals0.3.18
remark-preset-lint-crowdstrike4.0.1, 4.0.2
rxnt-authentication0.0.3, 0.0.4, 0.0.5, 0.0.6
rxnt-healthchecks-nestjs1.0.2, 1.0.3, 1.0.4, 1.0.5
rxnt-kue1.0.4, 1.0.5, 1.0.6, 1.0.7
swc-plugin-component-annotate1.9.1, 1.9.2
tbssnch1.0.2
teselagen-interval-tree1.1.2
tg-client-query-builder2.14.4, 2.14.5
tg-redbird1.3.1
tg-seq-gen1.0.9, 1.0.10
thangved-react-grid1.0.3
ts-gaussian3.0.5, 3.0.6
ts-imports1.0.1, 1.0.2
tvi-cli0.1.5
ve-bamreader0.2.6
ve-editor1.0.1
verror-extra6.0.1
voip-callkit1.0.2, 1.0.3
wdio-web-reporter0.1.3
yargs-help-output5.0.3
yoo-styles6.0.326
@yoobic/design-system6.5.17
@yoobic/jpeg-camera-es61.0.13
@yoobic/yobi8.7.53

Quellen & weiterführende Analysen

(Ausgewählte Referenzen: Aikido, StepSecurity, JFrog, Sonatype, Unit42 / Palo Alto, The Hacker News, TechRadar Pro, KrebsOnSecurity)

Zahlen entwickeln sich dynamisch; prüft tagesaktuelle Live-Listen und Vendor-Hinweise.

Risiken für Unternehmen

  • Credential-Kompromittierung: npm-Tokens, GitHub-PATs, Cloud-Keys (AWS/GCP/Azure) können missbraucht werden – inkl. lateraler Bewegung in CI/CD.
  • Supply-Chain-Kontamination: Build-Artefakte und nachgelagerte Anwendungen/Services können unbemerkt infiziert werden.
  • Ruf-, Compliance- und Betriebsrisiko: Geheimnisabfluss, Unterbrechungen, potenzielle Compliance-Verstöße.

Sofortmaßnahmen (Empfohlen)

  1. Dependency-Freeze & Rollback: Keine automatischen Updates.
    Pinning auf bekannte Clean-Versionen, falls vorhanden. Auditieren Sie package-lock.json / pnpm-lock.yaml.
  2. Secret-Rotation: Alle npm-Tokens, GitHub-PATs, CI/CD- und Cloud-Keys sofort rotieren.
    Prüfen Sie auf unautorisierte GitHub Actions in den betroffenen Repos.
  3. Code- & Build-Pipeline-Review: Nach Indicators of Compromise (IoCs) scannen;
    z. B. auf obfuskierten postinstall-/Lifecycle-Skripte und verdächtige HTTP-Calls.
  4. Provenance & Policies: Signierte Artefakte/Provenance prüfen,
    2FA/MFA für Maintainer einführen, Release-Rechte minimieren, „Require Review“ für Veröffentlichungen.
  5. Monitoring & Threat Intel: Keep-Watching der Live-Listen (Aikido/StepSecurity/JFrog/Sonatype)
    und Security-Advisories; betroffene Builds/Images neu erstellen.

 

Schnellchecks (Beispiele)

npm ls | grep -E "@ctrl|crowdstrike|nativescript|operato|nstudio|ngx|yoobic"
npm audit --production
# Lock-Datei auf verdächtige neue Patch-/Minor-Stände prüfen
git log --since="2025-09-08" -- package*.json
# GitHub Actions & Webhooks sichten
gh api repos/:owner/:repo/actions/workflows
gh api repos/:owner/:repo/hooks

Betroffen? Zögern Sie nicht – sprechen Sie uns an.

Wir sind Experten für Supply-Chain-Security, DevSecOps & Microsoft Cloud Security.
Wir unterstützen mit Sofort-Checks (Dependency/Lockfile-Review, Secret-Rotation, CI/CD-Hardening),
forensischer Analyse und nachhaltigen Guardrails (Provenance, Signing, Policy-as-Code)