# CanisterWorm: Sich selbst verbreitender Wurm in der npm-Lieferkette nach dem Trivy-Angriff
Angreifer haben nach der Kompromittierung von Trivy den CanisterWorm-Wurm eingesetzt, der Dutzende von npm-Paketen infiziert hat. Die Malware nutzt ICP-Canister auf der Internet-Computer-Blockchain als widerstandsfähigen C2-Server. Dies ist der erste dokumentierte Missbrauch von ICP zur Abrufung von Payloads, was dezentralen Widerstand gegen Abschaltungen bietet.
Infektions- und Verbreitungsmechanismus
Die Angriffssequenz beginnt mit einem postinstall-Hook in den kompromittierten Paketen. Der Hook startet einen Loader, der eine Python-Backdoor installiert. Die Backdoor verbindet sich mit einem ICP-Canister, um die URL des nächsten Payloads abzurufen.
Der ICP-Canister implementiert die Methoden get_latest_link, http_request und update_link. Letztere ermöglicht es dem Controller, die URL in Echtzeit zu ändern und ausführbare Dateien auf allen infizierten Hosts zu aktualisieren, ohne den Betrieb zu unterbrechen.
Die Backdoor befragt den Canister alle 50 Minuten mit einem gefälschten User-Agent. Enthält die URL youtube.com, schaltet sich der Implantat in den Ruhezustand. Die Aktivierung erfolgt durch Wechsel zum echten Payload; alte Prozesse laufen parallel weiter.
Die Persistenz wird durch einen systemd-Dienst namens „pgmon“ sichergestellt, der sich als PostgreSQL-Überwachung tarnt. Die Direktive Restart=always startet die Backdoor 5 Sekunden nach dem Beenden neu.
Betroffene Pakete:
- 28 im @EmilGroup-Scope;
- 16 im @opengov-Scope;
- @teale.io/eslint-config;
- @airtm/uuid-base32;
- @pypestream/floating-ui-dom.
Socket hat 141 schädliche Artefakte in mehr als 66 einzigartigen Paketen erkannt.
Evolution von CanisterWorm zur vollständigen Automatisierung
In den Versionen 1.8.11–1.8.12 von @teale.io/eslint-config integriert eine mutierte Variante den Diebstahl von npm-Tokens direkt in index.js. Die Funktion findNpmTokens() scannt die Umgebung während des postinstall und startet deploy.js als Hintergrundprozess zur Selbstverbreitung.
Deploy.js veröffentlicht bösartige Versionen in allen zugänglichen Paketen mithilfe der gestohlenen Tokens. Der Wurm, vermutlich mit KI und Vibe-Technologie generiert, verschleiert seinen Code nicht.
Der aktuelle Payload in ICP ist der Teststring „hello123“, was auf eine Überprüfungsphase der Kette vor einem vollständigen Angriff hindeutet.
Ein ähnlicher Mechanismus mit youtube.com-Überprüfung wurde im trojanisierten Trivy 0.69.4 über sysmon.py gefunden, das auf denselben ICP-Canister verweist.
Vergleich mit früheren Kampagnen
CanisterWorm folgt dem Muster von Shai-Hulud (September): Die Kompromittierung von tinycolor breitete sich auf über 40 Pakete aus, dann infizierte der Wurm über 300 weitere via NpmModule.updatePackage und TruffleHog zur Validierung von Zugangsdaten.
Sha1-Hulud (November) traf über 25.000 Repositories: Das preinstall-Skript setup_bun.js erkannte die Bun-Umgebung und startete bun_environment.js zum Datenklau.
| Kampagne | Betroffene Pakete | Verbreitungsmechanismus | Diebstahl-Tools |
|-------------|-------------------|-------------------------------------|----------------------|
| Shai-Hulud | 300+ | NpmModule.updatePackage | TruffleHog |
| Sha1-Hulud | 25.000+ | preinstall/setup_bun.js | bun_environment |
| CanisterWorm| 66+ | postinstall/deploy.js + ICP C2 | findNpmTokens |
Wichtige Erkenntnisse
- Erste Nutzung von ICP-Canistern für C2 in Malware: Dezentralisierung erschwert Abschaltungen.
- Automatische Verbreitung: Token-Diebstahl + deploy.js macht Installationen zu Infektionsvektoren für CI/CD- und Entwicklermaschinen.
- Widerstandsfähigkeit: systemd mit Restart=always + parallele Prozesse + dynamisches update_link.
- Tarnung: Dienste als pgmon getarnt, Ruhezustand bei youtube.com.
- Umfang: Von Trivy zu 141 Artefakten; Evolution zur vollständigen Automatisierung ohne manuelle Deploys.
Unternehmen wie Aikido Security, Endor Labs, JFrog und Wiz bestätigen: Dies markiert einen Wechsel von einzelnen Kompromittierungen zu exponentiellem Wurmverhalten im npm-Ökosystem.
— Editorial Team
Noch keine Kommentare.