MalwareSchwachstellenHackerangriffe

CanisterWorm: Selbstverbreitender Wurm infiziert 47 npm-Pakete nach Trivy-Anschlag

CanisterWorm: Selbstverbreitender Wurm infiziert 47 npm-Pakete nach Trivy-Anschlag
Zusammenfassung

Die beliebte Trivy-Scanner-Software wurde Opfer eines umfassenden Supply-Chain-Angriffs, der sich nun zu einer beispiellosen Bedrohung für das npm-Ökosystem ausgeweitet hat. Unbekannte Akteure haben mindestens 47 npm-Pakete mit einem selbstreproduzierenden Schadprogramm namens CanisterWorm infiziert, das sich ohne manuelle Intervention automatisch ausbreitet. Der Angriff beginnt mit der Ausnutzung gestohlener Anmeldedaten für das Trivy-Projekt, führt aber schnell zu einer Kettenreaktion: Entwickler, die die kompromittierten Pakete installieren, werden unwissentlich zu Verbreitungsvektoren und infizieren ihre eigenen Projekte. Das Besondere an dieser Kampagne ist die Nutzung eines dezentralisierten Command-and-Control-Systems auf der Internet-Computer-Blockchain, was eine Abschaltung durch Behörden erheblich erschwert. Für deutsche Entwickler, Open-Source-Nutzer und Unternehmen, die auf npm-Abhängigkeiten setzen, stellt dies ein erhebliches Risiko dar. Jede Installation betroffener Pakete kann zur unbemerkten Installation von Hintertüren führen und potentiell zum Diebstahl von Anmeldedaten, zum Zugriff auf weitere Systeme oder zu Sabotage führen. Sofortige Überprüfung der verwendeten Abhängigkeiten und schnelle Sicherheitsmaßnahmen sind dringend erforderlich.

Der Angriff auf das Trivy-Ökosystem markiert einen Wendepunkt in der Evolutionäre von Supply-Chain-Attacken. Zunächst nutzten die Cyberkriminellen – vermutet wird die Cloud-fokussierte Gruppe TeamPCP – gestohlene Zugangsdaten, um manipulierte Versionen von Trivy (0.69.4), Trivy-Action und Setup-Trivy zu veröffentlichen. Diese enthielten einen Credential-Stealer, mit dem npm-Token gestohlen wurden.

Doch damit nicht genug: Mit diesen erbeuteten Token starteten die Angreifer eine zweite Welle, bei der sie 47 npm-Pakete mit CanisterWorm infizieren. Das Besondere an dieser Malware ist ihre Architektur. Sie nutzt sogenannte ICP-Canisters – unveränderbare Smart Contracts auf der dezentralisierten Internet-Computer-Blockchain – als „Dead Drop”-Resolver. Das macht die Infrastruktur äußerst resilient gegen Takedown-Maßnahmen, da die Angreifer die Kontrollserver jederzeit ändern können, ohne die Malware auf infizierten Systemen anzupassen.

Die Infektionskette funktioniert perfide: Beim npm-Install wird via Postinstall-Hook ein Loader ausgeführt, der einen Python-Backdoor installiert. Dieser kontaktiert alle 50 Minuten das ICP-Canister und holt sich die URL des nächsten Exploit-Payloads. Die Persistenz wird durch einen manipulierten Systemd-Service (getarnt als „pgmon” – vermeintliche PostgreSQL-Tools) gewährleistet, der bei Beendigung automatisch neu startet.

Besonders raffiniert ist die Kill-Switch-Mechanik: Zeigt das Canister auf eine YouTube-URL, schläft die Malware. Sobald auf einen echten Download-Link gezeigt wird, aktiviert sie sich – und auf allen 47 infizierten Paketen gleichzeitig.

Doch die größte Innovation ist CanisterWorms Selbstverbreitungsmechanismus. Eine neuere Variante im Paket “@teale.io/eslint-config” (Versionen 1.8.11 und 1.8.12) integriert die Propagationsfunktion direkt in den Postinstall-Prozess. Sie sammelt npm-Token aus der Entwicklungsumgebung und startet den Wurm eigenständig – ohne manuelle Eingriffe der Angreifer. “Das ist der Punkt, wo der Angriff von ‘kompromittiertes Konto veröffentlicht Malware’ zu ‘Malware kompromittiert weitere Konten’ wird”, warnt Sicherheitsforscher Charlie Eriksen.

Für deutsche Entwickler und IT-Teams ist dies besonders kritisch: Jeder Entwickler oder jede CI/CD-Pipeline, die eines dieser Pakete installiert und npm-Token zugänglich hat, wird zur Propagationsvektoren. Infizierte Pakete verbreiten sich kettenweise weiter – wie ein digitales Lauffeuer in der Softwarelieferkette.

Wie sehr die Angreifer die Lage im Griff haben, zeigt auch ein Detail: In der neuesten Variante setzten sie zunächst einen Test-String statt echten Malware-Code ein – um die gesamte Infektionskette zu validieren, bevor die echte Waffe scharf gemacht wird. Dies deutet auf professionelle Cyberkriminelle hin, die ihren Angriff sorgfältig planen.