Malware CanisterWorm
Sofistikovaný útok na dodavatelský řetězec, původně zaměřený na široce používaný skener Trivy, se rozrostl v rozsáhlejší kompromitaci, která postihla řadu npm balíčků. Útočníci, kteří stojí za kampaní, jsou podezřelí z nasazení dříve nezdokumentovaného samovolně se množícího červa známého jako CanisterWorm, což výrazně zvyšuje rozsah a dopad narušení.
Název malwaru je odvozen od použití canisteru ICP (Internet Computer Protocol), což jsou chytré smlouvy odolné proti neoprávněné manipulaci, které jsou hostovány na decentralizovaném blockchainu, jako součást jeho velitelské infrastruktury. Jedná se o první veřejně zdokumentovaný případ, kdy byly canistery ICP zneužity k získání koncových bodů velení a řízení (C2), což představuje novou a odolnou taktiku, která komplikuje tradiční snahy o zmírnění škod.
Obsah
Kompromitované balíčky a vektor počátečního přístupu
Útok ovlivnil několik npm balíčků v různých oblastech, což ukazuje na široký dosah útoku v rámci dodavatelského řetězce softwaru:
- 28 balíčků v rámci rozsahu @EmilGroup
- 16 balíčků v rámci @opengov
- Mezi další balíčky patří @teale.io/eslint-config, @airtm/uuid-base32 a @pypestream/floating-ui-dom
Tato kampaň těsně navazuje na kompromitaci přihlašovacích údajů, která útočníkům umožnila publikovat škodlivé verze nástrojů souvisejících s Trivy, konkrétně trivy, trivy-action a setup-trivy, které obsahovaly zabudované funkce pro krádež přihlašovacích údajů. Operace je pravděpodobně spojena s cloudově zaměřenou kyberzločinnou skupinou TeamPCP.
Pracovní postup infekce a decentralizovaná velitelská infrastruktura
Řetězec infekce začíná během procesu instalace balíčku npm, kde postinstalační skript spustí zavaděč. Tento zavaděč nasadí backdoor založený na Pythonu, který je určen pro komunikaci s ICP canisterem. Canister funguje jako dead drop resolver a vrací URL adresu, která směruje infikovaný systém ke stažení a spuštění dalšího datového obsahu.
Decentralizovaná povaha infrastruktury ICP poskytuje útočníkům značnou výhodu. Vzhledem k tomu, že kontejner může dynamicky aktualizovat URL adresy obsahu, mohou útočníci distribuovat nové škodlivé binární soubory napříč všemi infikovanými systémy, aniž by museli upravovat samotný nasazený malware. Tato architektura také značně ztěžuje jeho odstranění.
Mechanismus vytrvalosti a techniky utajení
Perzistence je dosažena vytvořením uživatelské služby systemd nakonfigurované tak, aby automaticky restartovala škodlivý proces. Mezi klíčové vlastnosti patří:
- Automatický restart vynucený direktivou Restart=always
- 5sekundové zpoždění před opětovným spuštěním zadních vrátek, pokud je ukončen
- Maskování služby jako legitimního monitorovacího softwaru PostgreSQL pod názvem „pgmon“
Tento přístup zajišťuje nepřetržitý provoz a zároveň minimalizuje pravděpodobnost odhalení tím, že se snoubí s legitimními systémovými službami.
Adaptivní doručování užitečného zatížení a chování vypínače Kill Switch
Backdoor pravidelně komunikuje s ICP canisterem každých 50 minut a používá falešný User-Agent prohlížeče, aby se vyhnul podezření. Vrácená URL adresa určuje další akci:
- Pokud URL adresa odkazuje na platný datový obsah, malware jej stáhne a spustí.
- Pokud adresa URL obsahuje „youtube.com“, malware přejde do latentního stavu.
Tento mechanismus v podstatě slouží jako dálkový kill switch. Přepínáním URL adresy schránky mezi neškodným odkazem na YouTube a škodlivým payloadem může útočník aktivovat nebo deaktivovat malware na všech infikovaných systémech. Je pozoruhodné, že dříve spuštěné payloady nadále běží na pozadí, protože malware neukončuje dřívější procesy.
Podobný kill switch založený na YouTube byl pozorován také v trojansky napadeném binárním souboru Trivy (verze 0.69.4), který komunikuje se stejnou ICP infrastrukturou prostřednictvím samostatného Python dropperu.
Schopnosti červů a jejich automatické šíření
Zpočátku se šíření spoléhalo na ručně spuštěný skript s názvem deploy.js, který využíval ukradené autentizační tokeny NPM k vložení škodlivého kódu do přístupných balíčků. Tento skript se nespouštěl během instalace, ale sloužil jako samostatný nástroj k rozšíření dosahu útoku.
Následné varianty červa CanisterWorm se výrazně vyvinuly. V novějších verzích, jako jsou ty, které najdete na @teale.io/eslint-config (verze 1.8.11 a 1.8.12), červ začleňuje vlastní šíření přímo do instalačního procesu balíčku. Aktualizovaný mechanismus zahrnuje:
- Extrakce autentizačních tokenů npm z infikovaného prostředí
- Okamžité spuštění propagační rutiny jako samostatného procesu na pozadí
- Automatické publikování kompromitovaných balíčků s využitím získaných přihlašovacích údajů
Tato změna transformuje útok z ručně ovládané kampaně na plně autonomní systém šíření.
Eskalace do hrozby pro soběstačný dodavatelský řetězec
Zavedení automatizovaného sběru tokenů a jejich samošíření představuje kritickou eskalaci. Jakákoli vývojářská pracovní stanice nebo CI/CD pipeline, která nainstaluje kompromitovaný balíček a obsahuje přístupné npm přihlašovací údaje, se stává aktivním uzlem šíření. To vytváří kaskádový efekt, kdy infikované balíčky vedou k dalším infekcím napříč závislostmi v následných systémech.
V této fázi se hrozba vyvíjí z hranice izolovaného napadení účtů do soběstačného ekosystému distribuce malwaru. Každé nově infikované prostředí přispívá k šíření, umožňuje exponenciální růst a výrazně ztěžuje jeho zamezení.
Obavy dále zhoršuje testování artefaktů, jako je zástupný datový symbol („hello123“), které naznačuje, že útočníci aktivně zdokonalují a ověřují útočný řetězec před nasazením plně funkčních škodlivých binárních souborů.