27 000 nedladdningar – npm-paket stal OpenAI-token i tysthet
Ett skadligt npm-paket med namnet codexui-android tillbringade en okänd period med att i tysthet stjäla OpenAI-autentiseringstoken från utvecklarna som installerade det. Med ungefär 27 000 nedladdningar per vecka framstod paketet som ett legitimt användargränssnitt för OpenAI:s Codex-modell. Under den välbekanta ytan drev det en dold skördeoperation för inloggningsuppgifter, som säkerhetsforskare nu klassar som ett typexempel på en npm-leveranskedjeattack i stor skala mot OpenAI-token.
Upptäckten är ännu en skarp påminnelse om att paketregister inte är säkra i sig, och att popularitet i sig inte är något tecken på pålitlighet.
Hur codexui-android dolde tokenstöld inuti ett till synes legitimt paket
Attacken byggde på ett enkelt men effektivt bedrägeri: skapa något som utvecklare faktiskt vill använda, och lägg sedan till skadlig logik som körs tyst i bakgrunden. Paketet codexui-android erbjöd ett fungerande gränssnitt för OpenAI:s Codex, vilket innebar att utvecklare installerade det, testade det och behöll det i sina projekt, ofta utan att någonsin ifrågasätta vad paketet gjorde på nätverksnivå.
Det här tillvägagångssättet kallas en trojaniserad paketattack. Den skadliga koden bäddades in i vad som såg ut som ett användbart verktyg, och kringgick därmed den naturliga skepsis som ett uppenbart icke-funktionellt eller dåligt byggt paket skulle ha väckt. Paketet exfiltrerade OpenAI-uppdateringstoken, de långlivade autentiseringsuppgifter som gör att applikationer kan begära nya åtkomsttoken utan att användaren behöver logga in igen.
Namnet codexui-android följde också en namnkonvention som antydde legitimitet. Det lånade varumärkesvärde från OpenAI:s Codex-produkt och lade till ett plattformsspecifikt suffix som fick det att verka som ett ändamålsenligt verktyg med mobil anknytning. Utvecklare som sökte efter Codex-relaterade verktyg på npm hade ingen uppenbar anledning att misstro det.
Vad stulna OpenAI-uppdateringstoken faktiskt låter angripare göra
Uppdateringstoken är inte bara lösenord. I många autentiseringssystem är de praktiskt taget huvudnycklar. När en angripare får en giltig uppdateringstoken kan de generera nya åtkomsttoken upprepade gånger och behålla ihållande åtkomst till ett konto även efter att den ursprungliga sessionen upphört eller ett lösenord har ändrats.
För OpenAI-konton kan denna åtkomst innebära obehörig användning av betalda API-krediter, tillgång till lagrade prompter eller finjusterad modelldata, potentiell exponering av proprietär kod som skickas via API:t och, i organisationssammanhang, lateral åtkomst till teamresurser knutna till samma konto.
Risken ökar snabbt i utvecklingsmiljöer. Ingenjörer arbetar ofta med API-nycklar och token som har förhöjda behörigheter. En enda komprometterad uppdateringstoken i en CI/CD-pipeline eller en delad utvecklingsmiljö kan ge en angripare ett beständigt fotfäste som är svårt att upptäcka och ännu svårare att helt åtgärda. Denna kaskadeffekt påminner om det som hände i Dropbox Sign-intrånget, där stulna autentiseringsuppgifter öppnade vägar till sammankopplade system långt bortom den ursprungliga komprometteringspunkten.
Varför npm-ekosystemet gör leveranskedjeattacker lätta att skala
npm-registret innehåller över två miljoner paket. Att publicera ett nytt paket kräver minimal identitetsverifiering, och registrets öppna natur är just det som gör det så användbart för det globala utvecklarsamhället. Det är också det som gör det till ett återkommande mål för leveranskedjeangripare.
Fallet codexui-android visar hur angripare utnyttjar den tillitsmodell som ligger till grund för utveckling med öppen källkod. Utvecklare antar i allmänhet att ett paket med betydande nedladdningssiffror har genomgått någon form av granskning från communityn. Det antagandet blir allt farligare. Nedladdningssiffror kan blåsas upp på konstgjord väg, och verklig användning är inte detsamma som säkerhetsgranskning.
Det bredare problemet med npm-leveranskedjeattacker är inte nytt, men inriktningen mot AI-verktyg markerar en utveckling. När utvecklare integrerar API:er för stora språkmodeller i produktionssystem blir de token som autentiserar dessa integrationer högvärdiga mål. Angripare är uppenbart medvetna om detta skifte. Paket som efterliknar AI-utvecklarverktyg är en framväxande hotkategori som säkerhetscommunityn fortfarande arbetar för att motverka i stor skala.
Försvar på djupet för utvecklare: isolering av autentiseringsuppgifter, nätverkssegmentering och mer
Incidenten codexui-android pekar på flera konkreta metoder som kan minska exponeringen för denna typ av attack.
Isolering av autentiseringsuppgifter är den mest omedelbara åtgärden. API-token och uppdateringstoken bör avgränsas så snävt som möjligt, lagras i secrets-hanterare snarare än i miljövariabler eller konfigurationsfiler, och roteras regelbundet. Om en token blir stulen innebär begränsad omfattning begränsad skada.
Granskning av beroenden bör vara en standarddel i varje utvecklingsarbetsflöde. Verktyg som npm audit, tillsammans med plattformar för programvarusammanställningsanalys från tredje part, kan flagga paket med ovanligt beteende eller kända sårbarheter. Att låsa beroendeversioner i package-lock-filer och granska ändringar innan uppdateringar accepteras minskar också exponeringen för skadliga versionspushar.
Övervakning av nätverksutgående trafik kan fånga exfiltreringsförsök som granskningsverktyg missar. Om en utvecklingsmiljö eller CI/CD-pipeline konfigureras för att larma vid oväntade utgående anslutningar blir ett paket som försöker ringa hem med stulna token upptäckbart.
Principen om minsta privilegium gäller på varje nivå. Utvecklingsmaskiner bör inte köras med autentiseringsuppgifter som ger produktionsnivååtkomst. CI/CD-pipelines bör använda kortlivade token som genereras vid körning snarare än långsiktigt lagrade hemligheter.
Slutligen är det en värdefull övning att just nu granska dina egna installerade paket för allt som rör autentiseringsflöden. Incidenten med codexui-android är sannolikt inte isolerad. Granska vad som finns i din node_modules, kontrollera vilka behörigheter dina API-token har, och behandla alla paket som vidrör lagring av autentiseringsuppgifter med extra noggrannhet.
Leveranskedjeattacker lyckas eftersom de utnyttjar förtroende i stor skala. Att återuppbygga den säkerhetsställningen ett beroende i taget, med början i de mest känsliga autentiseringsuppgifterna i din stack, är det mest praktiska svar som enskilda utvecklare har tillgängligt idag.




