npm paket s 27.000 preuzimanja tiho je krao OpenAI tokene

Zlonamjerni npm paket pod nazivom codexui-android proveo je nepoznato razdoblje tiho kradući OpenAI autentifikacijske tokene od programera koji su ga instalirali. S otprilike 27.000 tjednih preuzimanja, paket se predstavljao kao legitimno korisničko sučelje za OpenAI-jev Codex model. Ispod te poznate vanjštine odvijala se prikrivena operacija prikupljanja vjerodajnica koju sigurnosni istraživači sada klasificiraju kao školski primjer napada na lanac opskrbe npm-a usmjerenog na OpenAI tokene u velikim razmjerima.

Ovo otkriće još je jedan oštar podsjetnik da registri paketa nisu inherentno sigurni i da popularnost sama po sebi nije pokazatelj pouzdanosti.

Kako je codexui-android sakrio krađu tokena unutar paketa koji izgleda legitimno

Napad se oslanjao na jednostavnu, ali učinkovitu prijevaru: izgraditi nešto što programeri doista žele koristiti, a zatim dodati zlonamjernu logiku koja se nečujno izvodi u pozadini. Paket codexui-android nudio je funkcionalno sučelje za OpenAI-jev Codex, što je značilo da su ga programeri instalirali, testirali i zadržali u svojim projektima, često ne preispitujući što paket radi na mrežnom sloju.

Ovaj pristup poznat je kao napad trojaniziranim paketom. Zlonamjerni kôd bio je ugrađen unutar onoga što se činilo korisnim alatom, zaobilazeći prirodni skepticizam koji bi izazvao očito nefunkcionalan ili loše izgrađen paket. Paket je izvlačio OpenAI refresh tokene, dugotrajne vjerodajnice koje aplikacijama omogućuju zahtijevanje novih pristupnih tokena bez potrebe da se korisnik ponovno prijavi.

Naziv codexui-android također je slijedio konvenciju imenovanja koja je odavala dojam legitimnosti. Posudio je prepoznatljivost brenda OpenAI-jevog Codex proizvoda i dodao sufiks specifičan za platformu zbog kojeg je djelovao kao namjenski alat blizak mobilnom okruženju. Programeri koji su na npm-u pretraživali alate povezane s Codexom nisu imali očitog razloga za nepovjerenje.

Što ukradeni OpenAI refresh tokeni zapravo omogućuju napadačima

Refresh tokeni nisu samo lozinke. U mnogim autentifikacijskim sustavima oni su zapravo glavni ključevi. Kada napadač dobije valjani refresh token, može opetovano generirati nove pristupne tokene, održavajući trajan pristup računu čak i nakon što je izvorna sesija završila ili je lozinka promijenjena.

Za OpenAI račune taj bi se pristup mogao pretočiti u neovlašteno korištenje plaćenih API kredita, pristup pohranjenim upitima ili podacima fino podešenih modela, potencijalno izlaganje vlasničkog kôda proslijeđenog kroz API te, u organizacijskim kontekstima, bočni pristup resursima tima povezanima s istim računom.

Rizik se brzo umnožava u razvojnim okruženjima. Inženjeri često rade s API ključevima i tokenima koji nose povišene ovlasti. Jedan kompromitirani refresh token u CI/CD cjevovodu ili dijeljenom razvojnom okruženju mogao bi napadaču dati trajno uporište koje je teško otkriti i još teže u potpunosti sanirati. Taj kaskadni učinak odražava ono što se dogodilo u povredi Dropbox Signa, gdje su prikupljene vjerodajnice otvorile putove u međusobno povezane sustave daleko izvan početne točke kompromitacije.

Zašto npm ekosustav čini napade na lanac opskrbe lakima za skaliranje

npm registar sadrži preko dva milijuna paketa. Objavljivanje novog paketa zahtijeva minimalnu provjeru identiteta, a otvorena priroda registra upravo je ono što ga čini tako korisnim globalnoj razvojnoj zajednici. To je također ono što ga čini ponavljajućom metom napadača na lanac opskrbe.

Slučaj codexui-android pokazuje kako napadači iskorištavaju model povjerenja na kojem počiva razvoj otvorenog kôda. Programeri općenito pretpostavljaju da je paket sa značajnim brojem preuzimanja prošao određenu razinu provjere zajednice. Ta je pretpostavka sve opasnija. Brojevi preuzimanja mogu se umjetno napuhati, a stvarna upotreba nije isto što i sigurnosna revizija.

Širi problem napada na lanac opskrbe npm-a nije nov, ali ciljanje AI alata označava evoluciju. Kako programeri integriraju API-je velikih jezičnih modela u produkcijske sustave, tokeni koji autentificiraju te integracije postaju mete visoke vrijednosti. Napadači su očito svjesni tog pomaka. Paketi koji oponašaju alate za AI programere nova su kategorija prijetnji s kojom se sigurnosna zajednica još uvijek bori u velikim razmjerima.

Obrana u dubinu za programere: izolacija vjerodajnica, segmentacija mreže i šire

Incident s codexui-android ukazuje na nekoliko konkretnih praksi koje mogu smanjiti izloženost ovoj vrsti napada.

Izolacija vjerodajnica najneposrednija je mjera ublažavanja. API tokeni i refresh tokeni trebali bi imati što je uže moguće opsege, biti pohranjeni u upraviteljima tajni umjesto u varijablama okruženja ili konfiguracijskim datotekama te se redovito rotirati. Ako je token ukraden, ograničen opseg znači ograničenu štetu.

Revizija ovisnosti trebala bi biti standardni dio svakog razvojnog tijeka rada. Alati poput npm audit, zajedno s nezavisnim platformama za analizu sastavnica softvera, mogu označiti pakete s neobičnim ponašanjem ili poznatim ranjivostima. Zaključavanje verzija ovisnosti u package-lock datotekama i pregled promjena prije prihvaćanja ažuriranja također smanjuje izloženost zlonamjernim promjenama verzija.

Praćenje mrežnog izlaza može uhvatiti pokušaje izvlačenja podataka koje revizijski alati propuste. Ako je razvojno okruženje ili CI/CD cjevovod konfiguriran za upozoravanje na neočekivane odlazne veze, paket koji pokušava "nazvati kući" s ukradenim tokenima postaje vidljiv.

Načelo najmanje povlastice primjenjuje se na svakoj razini. Razvojna računala ne bi se trebala izvoditi s vjerodajnicama koje daju pristup na produkcijskoj razini. CI/CD cjevovodi trebali bi koristiti kratkotrajne tokene generirane u vrijeme izvođenja, a ne dugoročno pohranjene tajne.

Konačno, pregled vlastitih instaliranih paketa koji na bilo koji način dotiču autentifikacijske tijekove vrijedna je vježba upravo sada. Incident s codexui-android vjerojatno nije izoliran. Revidirajte što se nalazi u vašem node_modules, provjerite koje ovlasti nose vaši API tokeni i tretirajte svaki paket koji dodiruje pohranu vjerodajnica s pojačanim oprezom.

Napadi na lanac opskrbe uspijevaju jer iskorištavaju povjerenje u velikim razmjerima. Ponovna izgradnja tog sigurnosnog položaja, ovisnost po ovisnost, počevši od najosjetljivijih vjerodajnica u vašem stogu, najpraktičniji je odgovor koji je danas dostupan pojedinačnim programerima.