Zlonamerna programska oprema CanisterWorm
Sofisticiran napad na dobavno verigo, ki je bil sprva usmerjen na široko uporabljen skener Trivy, se je razvil v širšo ogrožitev, ki je prizadela številne npm pakete. Osumljeni so, da so akterji, ki stojijo za kampanjo, namestili prej nedokumentiranega samorazmnoževalnega črva, znanega kot CanisterWorm, kar je znatno povečalo obseg in vpliv vdora.
Zlonamerna programska oprema je dobila ime po uporabi varnostnega sistema internetnega računalniškega protokola (ICP), pametnih pogodb, odpornih proti nedovoljenim posegom, ki se nahajajo na decentralizirani verigi blokov, kot del njene infrastrukture za upravljanje. To je prvi javno dokumentiran primer uporabe varnostnih sistemov ICP za pridobivanje končnih točk sistema vodenja in nadzora (C2), kar uvaja novo in odporno taktiko, ki otežuje tradicionalna prizadevanja za ublažitev.
Kazalo
Ogroženi paketi in vektor začetnega dostopa
Napad je vplival na več npm paketov na različnih področjih, kar kaže na širok radij eksplozije znotraj dobavne verige programske opreme:
- 28 paketov v okviru @EmilGroup
- 16 paketov v okviru @opengov
- Dodatni paketi, vključno z @teale.io/eslint-config, @airtm/uuid-base32 in @pypestream/floating-ui-dom
Ta kampanja je sledila takoj za vdorom v poverilnice, ki je napadalcem omogočil objavo zlonamernih različic orodij, povezanih s Trivyjem, zlasti trivy, trivy-action in setup-trivy, ki so vsebovale vgrajeno funkcionalnost kraje poverilnic. Domneva se, da je operacija povezana s skupino kibernetskih kriminalcev, osredotočeno na oblak, imenovano TeamPCP.
Potek dela pri okužbah in decentralizirana infrastruktura poveljstva
Veriga okužbe se začne med postopkom namestitve paketa npm, kjer skript po namestitvi izvede nalagalnik. Ta nalagalnik namesti zadnja vrata, ki temeljijo na Pythonu in so zasnovana za komunikacijo z vsebnikom ICP. Vsebnik deluje kot razreševalec mrtvih mest in vrne URL, ki usmeri okuženi sistem k prenosu in izvajanju naslednjega koristnega tovora.
Decentralizirana narava infrastrukture ICP napadalcem zagotavlja pomembno prednost. Ker lahko vsebnik dinamično posodablja URL koristnega tovora, lahko akterji napadalcev distribuirajo nove zlonamerne binarne datoteke po vseh okuženih sistemih, ne da bi pri tem spreminjali samo nameščeno zlonamerno programsko opremo. Zaradi te arhitekture so prizadevanja za odstranitev precej zahtevnejša.
Mehanizem vztrajnosti in tehnike prikrivanja
Vztrajnost se doseže z ustvarjanjem uporabniške storitve systemd, konfigurirane za samodejni ponovni zagon zlonamernega procesa. Ključne značilnosti vključujejo:
- Samodejni ponovni zagon, vsiljen z direktivo Restart=always
- 5-sekundna zakasnitev pred ponovnim zagonom zadnjih vrat, če so prekinjena
- Prikrivanje storitve kot legitimne programske opreme za spremljanje PostgreSQL pod imenom 'pgmon'
Ta pristop zagotavlja neprekinjeno delovanje, hkrati pa zmanjšuje verjetnost odkritja, saj se zlije z legitimnimi sistemskimi storitvami.
Prilagodljiva dostava koristnega tovora in delovanje stikala za izklop
Zadnja vrata periodično komunicirajo z ICP vsebnikom vsakih 50 minut, pri čemer uporabljajo ponarejenega uporabniškega agenta brskalnika, da se izognejo sumu. Vrnjeni URL določa naslednje dejanje:
- Če URL kaže na veljaven koristni tovor, ga zlonamerna programska oprema prenese in izvede.
- Če URL vsebuje »youtube.com«, zlonamerna programska oprema preide v stanje mirovanja.
Ta mehanizem dejansko služi kot stikalo za oddaljeno zaustavitev. Z preklapljanjem URL-ja vsebnika med neškodljivo povezavo do YouTuba in zlonamerno koristno programsko opremo lahko napadalec aktivira ali deaktivira zlonamerno programsko opremo v vseh okuženih sistemih. Omeniti velja, da se predhodno izvedene koristne programske opreme še naprej izvajajo v ozadju, saj zlonamerna programska oprema ne prekine prejšnjih procesov.
Podobno stikalo za zaustavitev, ki temelji na YouTubu, so opazili tudi v trojanski binarni datoteki Trivy (različica 0.69.4), ki komunicira z isto infrastrukturo ICP prek ločenega Python dropperja.
Zmogljivosti črvov in avtomatizirano razmnoževanje
Sprva se je širjenje zanašalo na ročno izveden skript z imenom deploy.js, ki je izkoriščal ukradene žetone za preverjanje pristnosti npm za vbrizgavanje zlonamerne kode v dostopne pakete. Ta skript se ni sprožil med namestitvijo, temveč je služil kot samostojno orodje za razširitev dosega napada.
Kasnejše različice CanisterWorma so se znatno razvile. V novejših različicah, kot so tiste, ki jih najdete na @teale.io/eslint-config (različici 1.8.11 in 1.8.12), črv vključuje samorazmnoževanje neposredno v postopek namestitve paketa. Posodobljen mehanizem vključuje:
- Pridobivanje žetonov za preverjanje pristnosti npm iz okuženega okolja
- Takojšnja izvedba rutine razmnoževanja kot ločenega procesa v ozadju
- Samodejno objavljanje ogroženih paketov z uporabo pridobljenih poverilnic
Ta premik preoblikuje napad iz ročno upravljane kampanje v popolnoma avtonomen sistem širjenja.
Stopnjevanje v grožnjo samozadostni dobavni verigi
Uvedba avtomatiziranega zbiranja žetonov in samorazširjanja pomeni kritično eskalacijo. Vsaka razvijalska delovna postaja ali cevovod CI/CD, ki namesti ogrožen paket in vsebuje dostopne poverilnice npm, postane aktivno vozlišče za razširjanje. To ustvarja kaskadni učinek, pri katerem okuženi paketi vodijo do nadaljnjih okužb v odvisnostih sistema.
Na tej stopnji se grožnja razvije izven izoliranega vdora v račune v samovzdrževalni ekosistem distribucije zlonamerne programske opreme. Vsako novo okuženo okolje prispeva k širjenju, kar omogoča eksponentno rast in znatno otežuje zadrževanje.
Skrb še poslabša dejstvo, da testiranje artefaktov, kot je nadomestni tovor ('hello123'), kaže, da napadalci aktivno izpopolnjujejo in preverjajo verigo napadov, preden namestijo popolnoma delujoče zlonamerne binarne datoteke.