GitHub: ukradeno 3.800 repozitorija putem zlonamjerne VS Code ekstenzije

Kompromitiran razvojni alat doveo je do jednog od upečatljivijih proboja repozitorija u nedavnoj memoriji. GitHub trenutno istražuje sigurnosni incident u kojem je zlonamjerna ekstenzija za Visual Studio Code zarazila uređaj zaposlenika, što je u konačnici rezultiralo eksfiltrацijom otprilike 3.800 internih repozitorija. Ukradeni kod potom je ponuđen na prodaju na forumu za kibernetički kriminal od strane grupe prijetnji koja sebe naziva TeamPCP. Za sigurnosne timove i programere koji se oslanjaju na interne repozitorije, ovaj incident je oštar podsjetnik da su sigurnost programerskih uređaja i rizik od proboja repozitorija neodvojivi problemi.

Kako je zlonamjerna VS Code ekstenzija kompromitirala zaposlenika GitHuba

Visual Studio Code postao je dominantni editor u profesionalnom razvoju softvera, a njegovo tržište ekstenzija je ogromno. Većina programera prema ekstenzijama postupa na isti način kao prema mobilnim aplikacijama: instaliraju, povjeruju i nastave dalje. Upravo tu pretpostavku napadači iskorištavaju.

U ovom incidentu, zaposlenik GitHuba instalirao je ono što se čini da je bila trojanski VS Code ekstenzija. Nakon instalacije, zlonamjerna ekstenzija imala je pristup istom okruženju kao i programer: njihovom datotečnom sustavu, vjerodajnicama predmemoriranim u IDE-u, aktivnim tokenima za autentifikaciju te potencijalno svim mrežnim vezama koje je uređaj održavao. Iz te jedne ulazne točke, napadač je uspio doseći interne GitHub repozitorije i izvući značajnu količinu vlasničkog koda.

Ovo nije teorijski napadni put. Zlonamjerni paketi i ekstenzije rastući su problem u razvojnim ekosustavima, od npm-a i PyPI-ja do trgovina pregledničkih ekstenzija. Tržište ekstenzija za VS Code, iako veliko i široko korišteno, povijesno se oslanjalo na automatsko skeniranje koje sofisticirani akteri prijetnji mogu zaobići odgođenom isporukom korisnog tereta ili zamagljivanjem.

Što je ukradeno i što otkriva popis prodaje grupe TeamPCP

Prema dostupnim informacijama, otprilike 3.800 internih GitHub repozitorija eksfiltriran je tijekom incidenta. TeamPCP, grupa koja preuzima odgovornost, potom je taj materijal ponudila na forumu za kibernetički kriminal, što sugerira da je motivacija financijska, a ne potaknuta špijunažom.

Razmjer popisa je primjetan. Interni repozitoriji tvrtke poput GitHuba mogli bi sadržavati vlastite alate, kod interne infrastrukture, sigurnosnu logiku i integracije s drugim Microsoftovim servisima. Čak i ako nisu izravno uključeni podaci korisnika, interni kod može otkriti arhitekturalne pretpostavke, tokove autentifikacije i granice sustava koje sofisticirani napadači mogu koristiti za planiranje naknadnih upada.

Sam popis prodaje signalizira i nešto važno: proboj nije bio odmah sadržan prije nego što je napadač stigao eksfiltrirati, organizirati i plasirati ukradeni materijal. Taj slijed sugerira da je početna kompromitacija imala značajno vrijeme boravka, ili u najmanju ruku, da je eksfiltracija bila dovoljno brza da se dovrši prije otkrivanja i suzbijanja.

Zašto su programerski krajnji punktovi najslabija karika u sigurnosti repozitorija

Poduzetničke organizacije obično ulažu znatna sredstva u sigurnost perimetra, mrežno praćenje i kontrole pristupa oko produkcijskih sustava. Ono što često dobiva manje pažnje jest sam programerski krajnji punkt — prijenosno računalo ili radna stanica koje softverski inženjer koristi za pisanje, testiranje i guranje koda svaki dan.

Programerski uređaji mete su visoke vrijednosti upravo zbog pristupa koji nose. Jedna autentificirana programerska sesija može doseći interne repozitorije, CI/CD cjevovode, sustave za upravljanje tajnama i konzole oblaka infrastrukture. Kompromitiranjem tog jednog uređaja napadaču se efektivno predaje unaprijed autentificirani prolaz kroz mnoge slojeve poslovne sigurnosti.

Napadi na lanac opskrbe temeljeni na ekstenzijama i paketima posebno su opasni u ovom kontekstu jer se stapaju s normalnim programerskim ponašanjem. Instaliranje novog alata je rutinsko. Programeri nisu obučeni tretirati svaku IDE ekstenziju kao potencijalni vektor prijetnje na način na koji sigurnosni timovi tretiraju nepoznate izvršne datoteke. Tu prazninu u stavu aktivno iskorištavaju grupe prijetnji poput TeamPCP-a.

Ovaj incident odražava širi obrazac: napadači više ne pokušavaju probiti vatrozidove izravno. Oni kompromitiraju pouzdane ljudske krajnje točke koje već imaju legitiman pristup.

Slojevite obrane: VPN-ovi, Zero-Trust i MFA za zaštitu pristupa internom kodu

Nijedna pojedinačna kontrola ne sprječava ovu kategoriju napada, ali slojevite obrane mogu znatno smanjiti radijus eksplozije kada je uređaj kompromitiran.

Mrežni pristup bez povjerenja (zero-trust) najrelevantniji je arhitekturalni pomak ovdje. Prema modelu bez povjerenja, povjerenje uređaja se kontinuirano procjenjuje umjesto da se pretpostavlja. Čak i ako napadač ima valjan token sesije, anomalno ponašanje (poput masovnog kloniranja repozitorija u neuobičajeno doba) može pokrenuti ponovnu autentifikaciju ili automatizirani prekid sesije. Kombiniranje pristupa bez povjerenja s jakim otkrivanjem krajnjih točaka sigurnosnim timovima daje uvid u to koji procesi obavljaju mrežne pozive, uključujući zlonamjerne ekstenzije.

Višefaktorska autentifikacija s hardverski vezanim ključevima dodaje još jednu prepreku. MFA otporan na phishing (FIDO2/pristupni ključevi) osigurava da čak i potpuno kompromitiran uređaj ne može tiho autentificirati nove sesije bez fizičke interakcije korisnika.

VPN-ovi igraju specifičnu i često podcijenjenu ulogu u ovom skupu mjera. Kada programeri pristupaju internim sustavima na daljinu, usmjeravanje tog prometa kroz privatnost-revidirani VPN sa strogim pravilima bez evidencije smanjuje rizik od presretanja sesije i ograničava mrežnu vidljivost dostupnu napadaču koji je djelomično kompromitirao uređaj ili mrežni put. Za inženjerske timove koji procjenjuju opcije, Mullvad vrijedi razmotriti: ne zahtijeva adresu e-pošte pri prijavi, koristi anonimne brojeve računa, a njegova tvrdnja o pravilima bez evidencije potvrđena je u stvarnim uvjetima kada je švedska policija provela raciju i nije pronašla ništa za oduzimanje. Njegove aplikacije potpuno su otvorenog koda, što je značajno svojstvo za timove usmjerene na programere koji žele revidirati ono što pokreću.

Za timove koji daju prednost neovisno revidiranoj infrastrukturi, Private Internet Access imao je svoje tvrdnje o pravilima bez evidencije dokazane u saveznim sudskim postupcima i održava potpuno aplikacije otvorenog koda podržane revizijama trećih strana.

Osim VPN-ova, organizacije bi trebale nametnuti i dopuštene popise ekstenzija za razvojne alate, zahtijevati potpisivanje koda ili organizacijsko odobrenje prije nego što se IDE ekstenzije mogu instalirati na korporativne uređaje te voditi detaljne revizijske zapise obrazaca pristupa repozitoriju kako bi se rano otkrila masovna eksfiltracija.

Što ovo znači za vas

Ako ste programer ili dio inženjerskog tima koji pristupa internim repozitorijima na daljinu, ovaj incident je izravan signal za pregled vašeg stava prema krajnjim točkama.

Praktični zaključci:

  • Revidirajte svaku VS Code ekstenziju koja je trenutno instalirana na vašem radnom računalu. Uklonite sve što niste namjerno instalirali ili što više aktivno ne koristite.
  • Prema IDE ekstenzijama pristupajte s istom skepsom koju biste primijenili pri instaliranju nepoznatih izvršnih datoteka. Provjerite verifikaciju izdavača i broj recenzija prije instaliranja.
  • Zagovarajte da vaša organizacija implementira dopuštene popise ekstenzija na upravljanim programerskim uređajima.
  • Osigurajte da je pristup vašem internom repozitoriju pokriven MFA-om otpornim na phishing, a ne samo lozinkom i SMS-om.
  • Ako vaš tim pristupa internim sustavima putem javnih ili nekontroliranih mreža, dodajte privatnost-revidirani VPN kao jedan sloj skupa za udaljeni pristup bez povjerenja.
  • Surađujte sa svojim sigurnosnim timom na uspostavljanju osnovnih upozorenja za masovni pristup repozitoriju ili neobično ponašanje kloniranja.

GitHub-ov incident još je uvijek pod istragom, a puni opseg onoga čemu se pristupilo možda neće biti javan još neko vrijeme. Ono što je već jasno jest da programerske krajnje točke predstavljaju površinu visoke vrijednosti i nedovoljne zaštite u većini organizacija. Rješavanje te praznine ne zahtijeva potpunu obnovu infrastrukture. Počinje s tretiranjem programerske radne stanice kao sigurnosnog perimetra samog po sebi.