CanisterWorm Malware
Ein ausgeklügelter Lieferkettenangriff, der ursprünglich den weit verbreiteten Trivy-Scanner zum Ziel hatte, hat sich zu einer umfassenderen Kompromittierung zahlreicher npm-Pakete ausgeweitet. Die Angreifer stehen im Verdacht, einen bisher unbekannten, sich selbst verbreitenden Wurm namens CanisterWorm eingesetzt zu haben, wodurch Ausmaß und Auswirkungen des Angriffs erheblich vergrößert wurden.
Die Schadsoftware verdankt ihren Namen der Verwendung eines ICP-Canisters (Internet Computer Protocol), manipulationssicherer Smart Contracts auf einer dezentralen Blockchain, als Teil ihrer Kommandoinfrastruktur. Dies ist der erste öffentlich dokumentierte Fall, in dem ICP-Canister als Waffe eingesetzt werden, um Command-and-Control-Endpunkte (C2) zu erlangen. Dadurch wird eine neuartige und widerstandsfähige Taktik eingeführt, die herkömmliche Abwehrmaßnahmen erschwert.
Inhaltsverzeichnis
Kompromittierte Pakete und erster Zugriffsvektor
Der Angriff hat mehrere npm-Pakete in verschiedenen Bereichen beeinträchtigt und damit die weitreichenden Folgen innerhalb der Software-Lieferkette verdeutlicht:
- 28 Pakete im Zuständigkeitsbereich der @EmilGroup
- 16 Pakete im Zuständigkeitsbereich von @opengov
- Zusätzliche Pakete wie @teale.io/eslint-config, @airtm/uuid-base32 und @pypestream/floating-ui-dom
Diese Kampagne folgt unmittelbar auf einen Angriff, bei dem Zugangsdaten kompromittiert wurden. Dadurch konnten Angreifer manipulierte Versionen von Trivy-bezogenen Tools veröffentlichen, insbesondere von trivy, trivy-action und setup-trivy, die Funktionen zum Diebstahl von Zugangsdaten enthielten. Die Operation wird der auf Cloud-Technologien spezialisierten Cyberkriminellen-Gruppe TeamPCP zugeschrieben.
Infektionsablauf und dezentrale Befehlsinfrastruktur
Die Infektionskette beginnt während der Installation des npm-Pakets, wo ein Postinstall-Skript einen Loader ausführt. Dieser Loader installiert eine Python-basierte Backdoor, die mit dem ICP-Canister kommuniziert. Der Canister fungiert als Dead-Drop-Resolver und gibt eine URL zurück, die das infizierte System anweist, die nächste Payload herunterzuladen und auszuführen.
Die dezentrale Struktur der ICP-Infrastruktur bietet Angreifern einen erheblichen Vorteil. Da der Container die Payload-URL dynamisch aktualisieren kann, können Angreifer neue Schadsoftware auf allen infizierten Systemen verteilen, ohne die installierte Malware selbst zu verändern. Diese Architektur erschwert zudem die Bekämpfung der Schadsoftware erheblich.
Persistenzmechanismen und Tarntechniken
Die Persistenz wird durch die Erstellung eines systemd-Benutzerdienstes erreicht, der so konfiguriert ist, dass er den schädlichen Prozess automatisch neu startet. Zu den wichtigsten Merkmalen gehören:
- Automatischer Neustart wird durch die Direktive Restart=always erzwungen.
- Eine 5-sekündige Verzögerung vor dem erneuten Start der Hintertür, falls diese beendet wurde.
- Der Dienst wird unter dem Namen „pgmon“ als legitime PostgreSQL-Überwachungssoftware getarnt.
Dieser Ansatz gewährleistet einen kontinuierlichen Betrieb und minimiert gleichzeitig die Wahrscheinlichkeit der Entdeckung, indem er sich in legitime Systemdienste einfügt.
Adaptives Nutzlastübertragungs- und Notabschaltverhalten
Die Hintertür kommuniziert periodisch alle 50 Minuten mit dem ICP-Kanister und verwendet dabei einen gefälschten Browser-User-Agent, um keinen Verdacht zu erregen. Die zurückgegebene URL bestimmt die nächste Aktion:
- Wenn die URL auf eine gültige Nutzlast verweist, lädt die Schadsoftware diese herunter und führt sie aus.
- Enthält die URL „youtube.com“, wechselt die Schadsoftware in einen Ruhezustand.
Dieser Mechanismus dient effektiv als Fernabschaltung. Durch Umschalten der URL des Containers zwischen einem harmlosen YouTube-Link und einer schädlichen Nutzlast kann der Angreifer die Malware auf allen infizierten Systemen aktivieren oder deaktivieren. Bemerkenswert ist, dass zuvor ausgeführte Nutzlasten im Hintergrund weiterlaufen, da die Malware frühere Prozesse nicht beendet.
Ein ähnlicher, auf YouTube basierender Kill-Switch wurde auch in einer mit einem Trojaner infizierten Trivy-Binärdatei (Version 0.69.4) beobachtet, die über einen separaten Python-Dropper mit der gleichen ICP-Infrastruktur kommuniziert.
Fähigkeiten des Wurms und automatisierte Verbreitung
Die Verbreitung erfolgte anfänglich über ein manuell ausgeführtes Skript namens deploy.js, das gestohlene npm-Authentifizierungstoken nutzte, um Schadcode in zugängliche Pakete einzuschleusen. Dieses Skript wurde nicht während der Installation ausgeführt, sondern diente als eigenständiges Werkzeug, um die Reichweite des Angriffs zu vergrößern.
Nachfolgende Varianten von CanisterWorm haben sich deutlich weiterentwickelt. In neueren Versionen, wie beispielsweise denen in @teale.io/eslint-config (Versionen 1.8.11 und 1.8.12), integriert der Wurm die Selbstverbreitung direkt in den Installationsprozess des Pakets. Der aktualisierte Mechanismus umfasst Folgendes:
- Extraktion von npm-Authentifizierungstoken aus der infizierten Umgebung
- Sofortige Ausführung der Ausbreitungsroutine als unabhängiger Hintergrundprozess
- Automatisierte Veröffentlichung kompromittierter Pakete unter Verwendung erbeuteter Zugangsdaten
Durch diese Umstellung wird der Angriff von einer manuell gesteuerten Kampagne in ein vollständig autonomes Verbreitungssystem verwandelt.
Eskalation zu einer sich selbst erhaltenden Lieferkettenbedrohung
Die Einführung des automatisierten Token-Erfassens und der Selbstverbreitung stellt eine kritische Eskalation dar. Jeder Entwicklerarbeitsplatz oder jede CI/CD-Pipeline, die ein kompromittiertes Paket installiert und zugängliche npm-Zugangsdaten enthält, wird zu einem aktiven Verbreitungsknoten. Dies erzeugt einen Kaskadeneffekt, bei dem infizierte Pakete zu weiteren Infektionen in nachgelagerten Abhängigkeiten führen.
In dieser Phase entwickelt sich die Bedrohung über die Kompromittierung einzelner Konten hinaus zu einem sich selbst erhaltenden Ökosystem der Malware-Verbreitung. Jede neu infizierte Umgebung trägt zur Ausbreitung bei, ermöglicht exponentielles Wachstum und erschwert die Eindämmung erheblich.
Zu allem Überfluss deuten Testartefakte wie eine Platzhalter-Payload („hello123“) darauf hin, dass die Angreifer die Angriffskette aktiv verfeinern und validieren, bevor sie vollständig funktionsfähige bösartige Binärdateien einsetzen.