Mini Shai-Hulud trifft SAP Ökosystem

Kompromittierte SAP-npm-Pakete stehlen Anmeldedaten

SAP
Quelle: T. Schneider / Shutterstock.com

TeamPCP infiltriert offizielle SAP-npm-Pakete. Wie der Mini Shai-Hulud-Wurm CI/CD-Systeme knackt und Cloud-Geheimnisse über GitHub exfiltriert.

Die Sicherheit der Software-Lieferkette wurde erneut erschüttert, als mehrere offizielle npm-Pakete von SAP als kompromittiert gemeldet wurden. Sicherheitsforscher von Aikido, Socket und Snyk identifizierten eine koordinierte Kampagne, die unter dem Namen Mini Shai-Hulud bekannt wurde. Ziel des Angriffs waren Entwickler und Unternehmen, die das SAP Cloud Application Programming Model (CAP) sowie Cloud MTA Build Tools nutzen. Durch die Infiltration legitimer Pakete gelang es den Angreifern, hochempfindliche Anmeldedaten, Cloud-Geheimnisse und Authentifizierungs-Token direkt aus Entwicklerumgebungen und automatisierten CI/CD-Pipelines zu extrahieren.

Anzeige

Bun-Runtime als Tarnung

Der Angriff zeichnet sich durch eine technische Raffinesse aus, die darauf abzielt, herkömmliche Sicherheitsüberwachungen zu umgehen. Im Zentrum stehen vier spezifische npm-Pakete in Versionen, die veröffentlicht wurden:

  • @cap-js/sqlite – v2.2.2
  • @cap-js/postgres – v2.2.2
  • @cap-js/db-service – v2.10.1
  • mbt – v1.2.48

Die Angreifer modifizierten die package.json-Dateien dieser Pakete und fügten ein sogenanntes preinstall-Skript hinzu. Dieses Skript wird automatisch ausgeführt, sobald ein Entwickler oder ein Build-Server den Befehl npm install aufruft, noch bevor der eigentliche Installationsprozess abgeschlossen ist. Das Skript lädt einen Loader namens setup.mjs, der wiederum die Bun-JavaScript-Runtime von GitHub herunterlädt.

Die Wahl der Bun-Runtime ist strategisch klug: Da viele Sicherheitslösungen auf die Überwachung von Node.js-Prozessen spezialisiert sind, bleibt die Ausführung des bösartigen Payloads über Bun oft unentdeckt. Mit dieser Runtime wird die Datei execution.js gestartet, ein schwer verschleierter Credential-Stealer mit einer Größe von etwa 11,7 Megabyte.

Anzeige

Infiltration der CI/CD-Speicher: Umgehung von Log-Masking

Besonders besorgniserregend ist die Fähigkeit des Mini Shai-Hulud, Geheimnisse direkt aus dem Arbeitsspeicher von CI/CD-Runnern zu lesen. In Cloud-Umgebungen wie GitHub Actions oder CircleCI werden sensible Daten oft durch Log-Masking geschützt, sodass sie in Protokolldateien nur als Sternchen erscheinen. Die Malware umgeht diesen Schutz jedoch vollständig.

Ein eingebettetes Python-Hilfsprogramm durchsucht das Dateisystem unter /proc nach dem Prozess Runner.Worker, der für die Ausführung von Build-Jobs zuständig ist. Durch das Auslesen der Speicherzuordnungen (maps) und des eigentlichen Arbeitsspeichers (mem) extrahiert die Malware jedes Datenfeld, das als isSecret markiert ist. Damit gelangen die Angreifer an AWS-Zugangsschlüssel, Azure-Secrets, Google-Cloud-Tokens und Kubernetes-Konfigurationen, ohne dass Spuren in den Sicherheitslogs hinterlassen werden.

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

Exfiltration über GitHub

Die gestohlenen Daten werden nicht an einen klassischen Command-and-Control-Server (C2) gesendet, was auffällig wäre. Stattdessen nutzt die Malware die kompromittierten GitHub-Zugangsdaten der Opfer selbst. Es werden öffentliche Repositories im Namen des Nutzers erstellt, die eine markante Beschreibung tragen: A Mini Shai-Hulud has Appeared.

Innerhalb dieser Repositories werden die gesammelten Informationen verschlüsselt abgelegt. Die Verschlüsselung erfolgt mittels AES-256-GCM, wobei die Schlüssel wiederum mit einem RSA-4096-Public-Key der Angreifer geschützt sind. Für Außenstehende sieht es lediglich so aus, als hätte ein Entwickler ein neues Projekt gestartet. Gleichzeitig dient GitHub als Dead-Drop-Mechanismus: Die Malware sucht nach spezifischen Commit-Nachrichten mit dem Präfix OhNoWhatsGoingOnWithGitHub, um weitere Befehle oder Token zu empfangen.

Bösartiger Code wird in neue Versionen eingeschleust

Der Angriff endet nicht beim Diebstahl von Daten. Sobald die Malware Zugriff auf npm-Automatisierungs-Token oder GitHub-OAuth-Tokens mit Schreibberechtigung erhält, versucht sie, sich wie ein Wurm weiterzuverbreiten. Sie identifiziert alle anderen Pakete, für die das Opfer Veröffentlichungsrechte besitzt, und schleust denselben bösartigen Code in neue Versionen dieser Pakete ein.

Zusätzlich sorgt die Malware für Persistenz in der lokalen Entwicklungsumgebung. Sie modifiziert die Konfigurationsdateien von Visual Studio Code (.vscode/tasks.json), sodass der bösartige Code bei jedem Öffnen eines Projektordners erneut ausgeführt wird. Sogar Einstellungen für KI-Coding-Assistenten wie Claude (.claude/settings.json) werden manipuliert, um zusätzliche Angriffspfade zu eröffnen.

Wer steckt hinter TeamPCP?

Die Sicherheitsforschung ordnet diesen Angriff mit mittlerer bis hoher Wahrscheinlichkeit der Gruppe TeamPCP zu. Diese Akteure waren bereits für ähnliche Vorfälle bei den Projekten Bitwarden, Checkmarx und Trivy verantwortlich. Ihr Markenzeichen ist die Verwendung von Dune-Themen (wie der Name Shai-Hulud) und eine extrem hohe Geschwindigkeit bei der Ausnutzung von Fehlkonfigurationen in CI-Pipelines. Im aktuellen Fall von SAP wird vermutet, dass ein npm-Token über einen unzureichend gesicherten CircleCI-Job oder durch den Missbrauch von GitHub OIDC-Trusted-Publishing-Mechanismen entwendet wurde.

Sofortmaßnahmen für betroffene Organisationen

Falls Sie oder Ihr Team die betroffenen Versionen am 29. April zwischen 11:00 und 15:00 Uhr UTC installiert haben, sollten Sie von einer vollständigen Kompromittierung ausgehen. Folgende Schritte sind nun kritisch:

  1. Prüfung der Sperrdateien: Suchen Sie in package-lock.json oder yarn.lock nach den Versionen @cap-js/sqlite 2.2.2, @cap-js/db-service 2.10.1 und mbt 1.2.48. Achten Sie auch auf transitive Abhängigkeiten.
  2. Passwort- und Token-Rotation: Ändern Sie umgehend alle Passwörter, SSH-Keys, Cloud-Zugangsdaten (AWS, Azure, GCP) und API-Token, die auf dem betroffenen System zugänglich waren.
  3. GitHub-Audit: Suchen Sie in Ihrem Account nach Repositories mit der Beschreibung A Mini Shai-Hulud has Appeared oder unerwarteten Commits.
  4. Bereinigung der Runner: Setzen Sie betroffene CI/CD-Runner und lokale Entwicklermaschinen vollständig neu auf, um versteckte Persistenzmechanismen in VS-Code-Konfigurationen zu entfernen.

SAP hat die betroffenen Versionen bereits von npm entfernt und durch saubere Updates ersetzt. Dennoch zeigt dieser Vorfall, wie verwundbar selbst Enterprise-Ökosysteme gegenüber gezielten Supply-Chain-Attacken sind.

Autorenbild Lisa Löw

Lisa

Löw

Junior Online-Redakteurin

IT-Verlag

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.