Zlonamjerni softver CanisterWorm
Sofisticirani napad na lanac opskrbe, koji je u početku bio usmjeren na široko korišteni Trivy skener, eskalirao je u širu kompromitaciju koja je utjecala na brojne npm pakete. Sumnja se da su akteri prijetnji koji stoje iza kampanje implementirali prethodno nedokumentiranog samorazmnožavajućeg crva poznatog kao CanisterWorm, što je značajno povećalo opseg i utjecaj upada.
Zlonamjerni softver dobio je ime po korištenju ICP (Internet Computer Protocol) spremnika, pametnih ugovora otpornih na neovlaštene izmjene smještenih na decentraliziranom blockchainu, kao dijela svoje komandne infrastrukture. Ovo označava prvi javno dokumentirani slučaj da su ICP spremnici oružje za preuzimanje krajnjih točaka zapovijedanja i kontrole (C2), uvodeći novu i otpornu taktiku koja komplicira tradicionalne napore ublažavanja.
Sadržaj
Kompromitirani paketi i vektor početnog pristupa
Napad je utjecao na više npm paketa u različitim područjima, pokazujući širok radijus eksplozije unutar lanca opskrbe softverom:
- 28 paketa pod @EmilGroup opsegom
- 16 paketa pod @opengov opsegom
- Dodatni paketi, uključujući @teale.io/eslint-config, @airtm/uuid-base32 i @pypestream/floating-ui-dom
Ova kampanja slijedi odmah nakon kompromitiranja vjerodajnica koje je omogućilo napadačima objavljivanje zlonamjernih verzija alata povezanih s Trivyjem, posebno trivy, trivy-action i setup-trivy, koji su sadržavali ugrađenu funkcionalnost krađe vjerodajnica. Vjeruje se da je operacija povezana s kibernetičkom kriminalnom skupinom usmjerenom na oblak, identificiranom kao TeamPCP.
Tijek rada infekcije i decentralizirana zapovjedna infrastruktura
Lanac zaraze započinje tijekom procesa instalacije npm paketa, gdje postinstalacijska skripta izvršava program za učitavanje. Ovaj program za učitavanje postavlja backdoor temeljen na Pythonu, dizajniran za komunikaciju s ICP spremnikom. Spremnik djeluje kao razrješivač mrtvih mjesta, vraćajući URL koji usmjerava zaraženi sustav na preuzimanje i izvršavanje sljedećeg sadržaja.
Decentralizirana priroda ICP infrastrukture pruža značajnu prednost napadačima. Budući da spremnik može dinamički ažurirati URL korisnog tereta, akteri prijetnji mogu distribuirati nove zlonamjerne binarne datoteke na svim zaraženim sustavima bez mijenjanja samog implementiranog zlonamjernog softvera. Ova arhitektura također znatno otežava napore uklanjanja.
Mehanizam upornosti i tehnike prikrivanja
Upornost se postiže stvaranjem korisničke usluge systemd konfigurirane za automatsko ponovno pokretanje zlonamjernog procesa. Ključne karakteristike uključuju:
- Automatsko ponovno pokretanje nametnuto direktivom Restart=always
- Kašnjenje od 5 sekundi prije ponovnog pokretanja stražnjih vrata ako se prekine
- Prikrivanje servisa kao legitimnog softvera za praćenje PostgreSQL-a pod nazivom 'pgmon'
Ovaj pristup osigurava kontinuirani rad uz minimiziranje vjerojatnosti otkrivanja integrirajući se s legitimnim sistemskim uslugama.
Prilagodljiva isporuka korisnog tereta i ponašanje prekidača za gašenje
Stražnja vrata periodički komuniciraju s ICP spremnikom svakih 50 minuta, koristeći lažni korisnički agent preglednika kako bi se izbjegla sumnja. Vraćeni URL određuje sljedeću radnju:
- Ako URL upućuje na valjani korisni sadržaj, zlonamjerni softver ga preuzima i izvršava.
- Ako URL sadrži 'youtube.com', zlonamjerni softver ulazi u stanje mirovanja
Ovaj mehanizam učinkovito služi kao daljinski prekidač za zaustavljanje. Prebacivanjem URL-a spremnika između benigne YouTube poveznice i zlonamjernog sadržaja, napadač može aktivirati ili deaktivirati zlonamjerni softver na svim zaraženim sustavima. Važno je napomenuti da se prethodno izvršeni sadržaji nastavljaju izvoditi u pozadini, jer zlonamjerni softver ne prekida ranije procese.
Sličan kill switch temeljen na YouTubeu uočen je i u trojanskom Trivy binarnom programu (verzija 0.69.4), koji komunicira s istom ICP infrastrukturom putem zasebnog Python droppera.
Mogućnosti crva i automatizirano širenje
U početku se širenje oslanjalo na ručno izvršavanu skriptu pod nazivom deploy.js, koja je koristila ukradene npm tokene za autentifikaciju za ubrizgavanje zlonamjernog koda u dostupne pakete. Ova skripta nije pokrenuta tijekom instalacije, već je služila kao samostalni alat za proširenje dosega napada.
Naknadne varijante CanisterWorma značajno su evoluirale. U novijim verzijama, poput onih koje se nalaze u @teale.io/eslint-config (verzije 1.8.11 i 1.8.12), crv uključuje samopropagaciju izravno u proces instalacije paketa. Ažurirani mehanizam uključuje:
- Ekstrakcija npm autentifikacijskih tokena iz zaraženog okruženja
- Trenutno izvršavanje rutine propagacije kao odvojenog pozadinskog procesa
- Automatizirano objavljivanje kompromitiranih paketa korištenjem prikupljenih vjerodajnica
Ova promjena transformira napad iz ručno upravljane kampanje u potpuno autonomni sustav širenja.
Eskalacija u prijetnju samoodrživom lancu opskrbe
Uvođenje automatiziranog prikupljanja tokena i samopropagacije označava kritičnu eskalaciju. Svaka razvojna radna stanica ili CI/CD cjevovod koji instalira kompromitirani paket i sadrži dostupne npm vjerodajnice postaje aktivni čvor za propagaciju. To stvara kaskadni učinak u kojem zaraženi paketi dovode do daljnjih infekcija nizvodnih ovisnosti.
U ovoj fazi, prijetnja se razvija izvan izoliranog kompromitiranja računa u samoodrživi ekosustav distribucije zlonamjernog softvera. Svako novo zaraženo okruženje doprinosi širenju, omogućujući eksponencijalni rast i znatno otežavajući suzbijanje.
Zabrinutost dodatno pogoršava to što testiranje artefakata poput rezerviranog sadržaja ('hello123') ukazuje na to da napadači aktivno usavršavaju i provjeravaju lanac napada prije implementacije potpuno operativnih zlonamjernih binarnih datoteka.