Mūsdienu programmatūras izstrādes arhitektūras paradokss ir tāds, ka mūsu drošākie cietokšņi bieži vien paļaujas uz visvairāk trauslajiem rīkiem. Mēs būvējam augstas pieejamības, globāli izplatītas platformas ar šifrēšanas slāņiem un daudzfaktoru autentifikāciju, tomēr visa celtne bieži vien balstās uz viena izstrādātāja darbstacijas integritāti. Pagājušajā otrdienā šī realitāte skāra GitHub — Microsoft piederošu meitasuzņēmumu, kas kalpo kā de facto krātuve pasaules pirmkodam. Lai gan GitHub primārā infrastruktūra joprojām ir stabila, viena darbinieka ierīces kompromitēšana ļāva draudu izpildītājam, kas pazīstams kā TeamPCP, eksfiltrēt aptuveni 3800 iekšējās krātuves.
No riska viedokļa šis incidents ir mācību grāmatas piemērs tam, kā kritiski svarīgu vidi var apiet nevis caur nulles dienas ievainojamību pamata platformā, bet gan caur perifērajiem rīkiem, ko izstrādātāji izmanto mijiedarbībai ar to. Izstrādātāja uzbrukuma virsmas novērtēšana šodien nozīmē skatīties tālāk par mākoņa konsoli un ielūkoties vietējā IDE (integrētajā izstrādes vidē). Šajā gadījumā vārti bija saindēts Microsoft Visual Studio Code paplašinājums. Tas ir nopietns atgādinājums, ka, lai gan mēs uzskatām šifrēšanu par neiznīcināmu digitālo seifu, šis seifs ir tikai tik drošs, cik droša ir persona, kuras rokās ir atslēgas — un rīki, ko tā izmanto, lai tās pagrieztu.
Stāsts sākās, kad TeamPCP, draudu izpildītājs, kas jau ir bēdīgi slavens ar virkni piegādes ķēdes uzbrukumu, izlika pārdošanai GitHub iekšējo pirmkodu labi zināmā kibernoziedzības forumā. Prasītā cena bija 50 000 ASV dolāru, ko grupa nekaunīgi raksturoja kā savu pensijas fondu. Atšķirībā no tradicionālajām izspiedējvīrusu grupām, kas pārtiek no digitālo ķīlnieku situācijām, TeamPCP skaidri paziņoja, ka tas nav izspiešanas mēģinājums. Viņi nodomāja pārdot datus vienam pircējam un pēc tam "iznīcināt" savu kopiju vai nopludināt tos bez maksas, ja pircējs nepieteiksies.
Kad es pirmo reizi redzēju Dark Web Informer kopīgotos ekrānuzņēmumus, es sazinājos ar dažiem incidentu reaģēšanas speciālistiem, izmantojot Signal, lai pārbaudītu apgalvojumus. Lai gan forumu lielīšanās ir ierasta parādība, TeamPCP sniegtās tehniskās detaļas — jo īpaši krātuvju skaits un nosaukumu konvencijas — bija pārāk detalizētas, lai tās ignorētu. GitHub galu galā apstiprināja, ka uzbrucēja apgalvojums par aptuveni 3800 krātuvēm ir virziena ziņā saskaņots ar viņu iekšējo kriminālistikas izmeklēšanu. Šī eksfiltrācija ir būtisks konfidencialitātes pārkāpums, pat ja platformā glabāto klientu datu integritāte, saskaņā ar GitHub sniegto informāciju, pašlaik nav ietekmēta.
GitHub izmeklēšana izsekoja kompromitēšanu līdz saindētam VS Code paplašinājumam. Lai gan viņi oficiāli nenosauca konkrēto spraudni, laiks sakrīt ar zināmo Nx Console paplašinājuma kompromitēšanu. Šeit arhitektūras paradokss kļūst visredzamākais: GitHub cerēja, ka viņu stingrā iekšējā piekļuves kontrole mazinās risku, taču uzticama izstrādātāja rīka ievainojamība padarīja šīs robežas par novecojušām.
Aizkulisēs uzbrucējs, visticamāk, izmantoja daudzpakāpju akreditācijas datu zagli, kas bija iegults paplašinājumā. Tā kā izstrādātāji bieži piešķir savām IDE plašas atļaujas mijiedarbībai ar vietējiem failiem, vides mainīgajiem un SSH atslēgām, kompromitēts paplašinājums faktiski ir VIP kluba apsargs, kurš nolēmis ielaist nepareizo publiku pa aizmugures durvīm. Tiklīdz paplašinājums bija aktīvs darbinieka ierīcē, uzbrucējam bija vienkārši iegūt marķierus un akreditācijas datus, kas nepieciešami iekšējo krātuvju klonēšanai. Rezultātā GitHub bija spiests uzsākt vērienīgu slepeno datu nomaiņas procesu, par prioritāti izvirzot augstākās ietekmes akreditācijas datus, lai novērstu turpmākas darbības.
GitHub iekšējo krātuvju pārkāpums nebija izolēts notikums; tas bija pagrieziena punkts daudz lielākai, visaptverošai kampaņai. TeamPCP izmantoja nozagtos akreditācijas datus, lai kompromitētu GitHub kontu ar piekļuvi durabletask PyPI pakotnei — oficiālam Microsoft Python klientam. Publicējot ļaunprātīgas versijas (1.4.1, 1.4.2 un 1.4.3), uzbrucēji pārvērta lokālu pārkāpumu par globālu piegādes ķēdes apdraudējumu.
Šī ļaunprogrammatūra, ko pētnieki nodēvējuši par "Mini Shai-Hulud", ir īpaši slepena. Tas ir pašreplicējošs "dropper", kas izpildās brīdī, kad pakotne tiek importēta. Raugoties uz apdraudējumu ainavu, mēs reti redzam šādu sarežģītības līmeni Python pakotnēs. Derīgā krava, otrā posma skripts ar nosaukumu rope.pyz, ir pilnvērtīgs informācijas zaglis, kas īpaši izstrādāts Linux sistēmām. Tas nemeklē tikai paroles; tas aktīvi mēģina atslēgt un izgūt 1Password un Bitwarden seifus, ievākt HashiCorp Vault KV noslēpumus un iegūt Docker un VPN konfigurācijas.
| Funkcija | Mini Shai-Hulud apraksts |
|---|---|
| Mērķa OS | Īpaši optimizēta Linux vidēm. |
| Noturība | Izmanto nozagtos marķierus, lai izplatītos starp mākoņinstancēm. |
| Slepenība | Izpildās klusi pēc importēšanas, bez redzamiem kļūdu ziņojumiem. |
| Eksfiltrācija | Mērķē uz SSH atslēgām, mākoņpakalpojumu sniedzēju akreditācijas datiem un paroļu pārvaldniekiem. |
| Ģeogrāfiskā ierobežošana | Ietver loģiku destruktīvu komandu izpildei pie noteiktiem reģionālajiem iestatījumiem. |
Šo kampaņu patiesi bīstamu padara tas, kā tā izmanto mūsdienu infrastruktūru izplatībai. Ja ļaunprogrammatūra konstatē, ka tā darbojas AWS vidē, tā mēģina izmantot AWS Systems Manager (SSM), lai pārietu uz citām EC2 instancēm. Proaktīvi runājot, tas pārvērš vienu inficētu izstrādātāja mašīnu vai CI/CD cauruļvadu par iekšējā tārpa palaišanas platformu. Ja tā nonāk Kubernetes klasterī, tā izmanto kubectl exec, lai izplatītos.
Kā pretpasākumu organizācijas bieži paļaujas uz tīkla segmentāciju, taču šī ļaunprogrammatūra pilnībā apiet tīkla perimetru, izmantojot leģitīmus pārvaldības protokolus. Tā pat izmanto aizraujošu rezerves C2 (Command and Control) mehānismu ar nosaukumu FIRESCALE. Ja primārais domēns tiek bloķēts, ļaunprogrammatūra meklē publiskos GitHub "commit" ziņojumus pēc specifiskām base64 kodētām virknēm, lai atrastu jaunu adresi. Šī decentralizētā pieeja C2 padara apdraudējumu izcili noturīgu pret standarta domēnu bloķēšanas metodēm.
Gadu gaitā analizējot APT (Advanced Persistent Threats), esmu secinājis, ka mēs bieži veltām pārāk daudz laika tam, "kas" notika, un nepietiekami tam, "kā". "Kas" šeit ir 3800 krātuves, bet "kā" ir sistemātiska cilvēka ugunsmūra kļūme apvienojumā ar pārmērīgu paļaušanos uz trešo pušu paplašinājumu integritāti. Mēs uztveram savas IDE kā privātas darba vietas, bet patiesībā tās ir daļa no uzņēmuma uzbrukuma virsmas.
Šim konkrētajam draudu izpildītājam ir arī tumšāka, nepastāvīgāka puse. Aikido Security analītiķi atklāja, ka ļaunprogrammatūra satur "1 pret 6 iespējamību" atskaņot audio un izpildīt rm -rf /*, ja tā konstatē Izraēlas vai Irānas sistēmas iestatījumus. Tas ienes digitālā nihilisma elementu citādi ļoti profesionālā akreditācijas datu vākšanas operācijā. Tas liecina, ka, lai gan TeamPCP motivācija ir peļņa, viņi neizvairās no sistēmiska haosa radīšanas procesa gaitā.
Neatkarīgi no ielāpu uzstādīšanas, mācība šeit ir tāda, ka mums ir jāpiemēro Nulles uzticības (Zero Trust) principi ne tikai mūsu tīkliem, bet arī mūsu izstrādes vidēm. Katra mašīna vai cauruļvads, kurā tika instalētas ietekmētās durabletask versijas, būtu jāuzskata par pilnībā kompromitētu. Fakts, ka pakotne tiek lejupielādēta vairāk nekā 400 000 reižu mēnesī, nozīmē, ka šī pārkāpuma ēna pār nozari klāsies vēl kādu laiku.
Lai nodrošinātu savu digitālo nospiedumu pirms nākamā lielā pārkāpuma, es iesaku veikt šādus darbības soļus:
SendCommand vai kubectl exec modeļiem, īpaši tiem, kas nāk no negaidītiem pakalpojumu kontiem.durabletask, pārbaudiet, vai neizmantojat versijas no 1.4.1 līdz 1.4.3. Piesaistiet savas atkarības zināmām labām versijām un izmantojiet privātu krātuvju pārvaldnieku, lai starpniekotu publiskās pakotnes.Tīkla perimetrs ir novecojis pils grāvis; jaunais kaujas lauks ir izstrādātāja klēpjdators. Kamēr mēs neizturēsimies pret katru spraudni un pakotni kā pret potenciālu Trojas zirgu, mēs turpināsim redzēt, kā pat visizturīgākās organizācijas zaudē savus dārgumus vienas saindētas koda rindiņas dēļ.
Avoti:
Atruna: Šis raksts ir paredzēts tikai informatīviem un izglītojošiem nolūkiem un neaizstāj profesionālu kiberdrošības auditu vai incidentu reaģēšanas pakalpojumu. Autors un izdevējs nenes atbildību par darbībām, kas veiktas, pamatojoties uz šeit sniegto informāciju.



Mūsu end-to-end šifrētais e-pasta un mākoņdatu glabāšanas risinājums nodrošina visefektīvākos līdzekļus drošai datu apmaiņai, garantējot jūsu datu drošību un konfidencialitāti.
/ Izveidot bezmaksas kontu