CanisterWorm ļaunprogrammatūra
Sarežģīts piegādes ķēdes uzbrukums, kas sākotnēji bija vērsts pret plaši izmantoto Trivy skeneri, ir pāraudzis plašākā kompromitēšanā, kas ietekmē daudzas npm pakotnes. Tiek turēts aizdomās, ka kampaņas veidotāji ir ieviesuši iepriekš nedokumentētu pašvairojošu tārpu, kas pazīstams kā CanisterWorm, ievērojami palielinot ielaušanās apmēru un ietekmi.
Ļaunprogramma savu nosaukumu ieguvusi no tā, ka tā kā komandu infrastruktūras ietvaros izmanto interneta datora protokola (ICP) konteineru — pret viltojumiem drošus viedlīgumus, kas tiek mitināti decentralizētā blokķēdē. Šis ir pirmais publiski dokumentētais gadījums, kad ICP konteineri ir tikuši ierocīgi izmantoti, lai izgūtu vadības un kontroles (C2) galapunktus, ieviešot jaunu un noturīgu taktiku, kas sarežģī tradicionālos mazināšanas pasākumus.
Satura rādītājs
Apdraudētas pakotnes un sākotnējās piekļuves vektors
Uzbrukums ir ietekmējis vairākas npm pakotnes dažādos darbības laukumos, demonstrējot plašu sprādziena rādiusu programmatūras piegādes ķēdē:
- 28 pakotnes @EmilGroup darbības jomā
- 16 paketes @opengov darbības jomā
- Papildu pakotnes, tostarp @teale.io/eslint-config, @airtm/uuid-base32 un @pypestream/floating-ui-dom
Šī kampaņa cieši seko akreditācijas datu kompromitēšanai, kas ļāva uzbrucējiem publicēt ļaunprātīgas ar Trivy saistītu rīku versijas, īpaši trivy, trivy-action un setup-trivy, kurās bija iestrādāta akreditācijas datu zagšanas funkcionalitāte. Tiek uzskatīts, ka operācija ir saistīta ar mākoņpakalpojumos orientētu kibernoziedznieku grupu, kas identificēta kā TeamPCP.
Infekcijas darbplūsma un decentralizēta komandu infrastruktūra
Infekcijas ķēde sākas npm pakotnes instalēšanas procesā, kur pēcinstalēšanas skripts izpilda ielādētāju. Šis ielādētājs izvieto Python balstītu aizmugurējo durvju sistēmu, kas paredzēta saziņai ar ICP konteineru. Konteiners darbojas kā neveiksmīgu failu atrisinātājs, atgriežot URL, kas novirza inficēto sistēmu uz nākamā posma vērtuma lejupielādi un izpildi.
ICP infrastruktūras decentralizētais raksturs sniedz uzbrucējiem ievērojamas priekšrocības. Tā kā kanisters var dinamiski atjaunināt lietderīgās slodzes URL, draudu izpildītāji var izplatīt jaunus ļaunprātīgus bināros failus visās inficētajās sistēmās, nemainot pašu izvietoto ļaunprogrammatūru. Šī arhitektūra arī ievērojami apgrūtina noņemšanas centienus.
Noturības mehānisms un slepenības metodes
Noturība tiek panākta, izveidojot systemd lietotāja pakalpojumu, kas konfigurēts ļaunprātīgā procesa automātiskai restartēšanai. Galvenās iezīmes ietver:
- Automātiska restartēšana, kas tiek panākta, izmantojot direktīvu Restart=always
- 5 sekunžu aizkave pirms aizmugurējo durvju atkārtotas palaišanas, ja tā tiek pārtraukta
- Pakalpojuma maskēšana kā likumīga PostgreSQL uzraudzības programmatūra ar nosaukumu “pgmon”
Šī pieeja nodrošina nepārtrauktu darbību, vienlaikus samazinot atklāšanas iespējamību, saplūstot ar likumīgiem sistēmas pakalpojumiem.
Adaptīvā kravas piegāde un izslēgšanas slēdža darbība
Aizmugurējā lūka periodiski sazinās ar ICP konteineru ik pēc 50 minūtēm, izmantojot viltotu pārlūkprogrammas lietotāja aģentu, lai izvairītos no aizdomām. Atgrieztais URL nosaka nākamo darbību:
- Ja URL norāda uz derīgu vērtumu, ļaunprogrammatūra to lejupielādē un izpilda.
- Ja URL satur “youtube.com”, ļaunprogrammatūra nonāk neaktīvā stāvoklī.
Šis mehānisms efektīvi kalpo kā attālināts kill switch. Pārslēdzot kanistra URL starp nekaitīgu YouTube saiti un ļaunprātīgu vērtumu, uzbrucējs var aktivizēt vai deaktivizēt ļaunprogrammatūru visās inficētajās sistēmās. Jāatzīmē, ka iepriekš izpildītie vērtumi turpina darboties fonā, jo ļaunprogrammatūra neaptur iepriekšējos procesus.
Līdzīgs YouTube bāzēts kill switch ir novērots arī Trojas zirga inficētā Trivy binārajā failā (0.69.4. versija), kas sazinās ar to pašu ICP infrastruktūru, izmantojot atsevišķu Python dropperu.
Tārpu iespējas un automatizēta pavairošana
Sākotnēji izplatīšana balstījās uz manuāli izpildītu skriptu ar nosaukumu deploy.js, kas izmantoja nozagtas npm autentifikācijas žetonus, lai ievietotu ļaunprātīgu kodu pieejamās pakotnēs. Šis skripts netika aktivizēts instalēšanas laikā, bet kalpoja kā atsevišķs rīks uzbrukuma tvēruma paplašināšanai.
Turpmākie CanisterWorm varianti ir ievērojami attīstījušies. Jaunākās versijās, piemēram, tādās, kas atrodamas @teale.io/eslint-config (1.8.11. un 1.8.12. versijas), tārps iekļauj pašizplatīšanos tieši pakotnes instalēšanas procesā. Atjauninātais mehānisms ietver:
- npm autentifikācijas žetonu ieguve no inficētās vides
- Izplatīšanas rutīnas tūlītēja izpilde kā atsevišķs fona process
- Automatizēta apdraudēto pakotņu publicēšana, izmantojot ievāktos akreditācijas datus
Šī maiņa pārveido uzbrukumu no manuāli vadītas kampaņas par pilnībā autonomu izplatīšanās sistēmu.
Eskalācija līdz pašpietiekamai piegādes ķēdes apdraudējumam
Automatizētas marķieru ieguves un pašizplatīšanas ieviešana iezīmē kritisku eskalāciju. Jebkura izstrādātāja darbstacija vai CI/CD cauruļvads, kas instalē kompromitētu pakotni un satur pieejamus npm akreditācijas datus, kļūst par aktīvu izplatīšanas mezglu. Tas rada kaskādes efektu, kurā inficētas pakotnes noved pie tālākas inficēšanās lejupējās atkarībās.
Šajā posmā apdraudējums attīstās no atsevišķa konta apdraudēšanas līdz pašpietiekamai ļaunprogrammatūras izplatīšanas ekosistēmai. Katra jauna inficēta vide veicina izplatību, nodrošinot eksponenciālu izaugsmi un ievērojami apgrūtinot ierobežošanu.
Bažas pastiprina tas, ka tādi testēšanas artefakti kā viettura vērtuma dati ('hello123') norāda, ka uzbrucēji aktīvi pilnveido un validē uzbrukuma ķēdi, pirms izvieto pilnībā funkcionējošus ļaunprātīgus bināros failus.