27.000 downloads - npm-pakket stal stilletjes OpenAI-tokens

Een kwaadaardig npm-pakket genaamd codexui-android stal gedurende een onbekende periode stilletjes OpenAI-authenticatietokens van de ontwikkelaars die het installeerden. Met ongeveer 27.000 wekelijkse downloads presenteerde het pakket zich als een legitieme gebruikersinterface voor OpenAI's Codex-model. Achter die vertrouwde buitenkant draaide het een geheime operatie voor het oogsten van inloggegevens die beveiligingsonderzoekers nu classificeren als een klassieke aanval op de npm-toeleveringsketen, gericht op OpenAI-tokens op grote schaal.

De ontdekking is opnieuw een scherpe herinnering dat pakketregisters niet inherent veilig zijn en dat populariteit alleen geen betrouwbaarheidsindicator is.

Hoe codexui-android tokendiefstal verborg in een legitiem ogend pakket

De aanval berustte op een eenvoudig maar effectief bedrog: bouw iets wat ontwikkelaars daadwerkelijk willen gebruiken, en voeg dan kwaadaardige logica toe die stilletjes op de achtergrond draait. Het pakket codexui-android bood een functionele interface voor OpenAI's Codex, wat betekende dat ontwikkelaars het installeerden, testten en in hun projecten hielden, vaak zonder zich af te vragen wat het pakket op netwerkniveau deed.

Deze aanpak staat bekend als een aanval met een getrojaniseerd pakket. De kwaadaardige code was ingebed in wat leek op een nuttige tool, waardoor de natuurlijke scepsis die een overduidelijk niet-functioneel of slecht gebouwd pakket zou oproepen, werd omzeild. Het pakket onderschepte OpenAI-vernieuwingstokens, de langlevende inloggegevens waarmee applicaties nieuwe toegangstokens kunnen aanvragen zonder dat een gebruiker opnieuw hoeft in te loggen.

De naam codexui-android volgde ook een naamconventie die legitimiteit suggereerde. Het leende merkkapitaal van OpenAI's Codex-product en voegde een platformspecifieke achtervoegsel toe dat het deed lijken op een doelgericht, mobiel-gerelateerd hulpmiddel. Ontwikkelaars die npm doorzochten naar Codex-gerelateerde tooling, hadden geen duidelijke reden om het te wantrouwen.

Wat gestolen OpenAI-vernieuwingstokens aanvallers daadwerkelijk laten doen

Vernieuwingstokens zijn niet zomaar wachtwoorden. In veel authenticatiesystemen zijn het in feite hoofdsleutels. Als een aanvaller een geldig vernieuwingstoken bemachtigt, kan hij herhaaldelijk nieuwe toegangstokens genereren, waardoor hij blijvende toegang tot een account behoudt, zelfs nadat de oorspronkelijke sessie is beëindigd of een wachtwoord is gewijzigd.

Voor OpenAI-accounts kan deze toegang zich vertalen in ongeautoriseerd gebruik van betaalde API-tegoeden, toegang tot opgeslagen prompts of fijn-afgestemde modelgegevens, mogelijke blootstelling van eigen code die via de API is verzonden, en in organisatorische contexten, laterale toegang tot teamresources die aan hetzelfde account zijn gekoppeld.

Het risico neemt snel toe in ontwikkelomgevingen. Ingenieurs werken vaak met API-sleutels en tokens die verhoogde machtigingen dragen. Eén enkel gecompromitteerd vernieuwingstoken in een CI/CD-pijplijn of een gedeelde ontwikkelomgeving kan een aanvaller een hardnekkig steunpunt geven dat moeilijk te detecteren en nog moeilijker volledig te herstellen is. Dit trapsgewijze effect weerspiegelt wat gebeurde bij het Dropbox Sign-datalek, waarbij geoogste inloggegevens paden openden naar onderling verbonden systemen die veel verder reikten dan het oorspronkelijke compromis.

Waarom het npm-ecosysteem toeleveringsketenaanvallen gemakkelijk schaalbaar maakt

Het npm-register herbergt meer dan twee miljoen pakketten. Het publiceren van een nieuw pakket vereist minimale identiteitsverificatie en de open aard van het register is precies wat het zo nuttig maakt voor de wereldwijde ontwikkelgemeenschap. Het is ook wat het een terugkerend doelwit maakt voor toeleveringsketenaanvallers.

Het geval codexui-android demonstreert hoe aanvallers het vertrouwensmodel misbruiken dat ten grondslag ligt aan open-sourceontwikkeling. Ontwikkelaars gaan er over het algemeen van uit dat een pakket met aanzienlijke downloadaantallen een zekere mate van gemeenschapscontrole heeft doorstaan. Die aanname wordt steeds gevaarlijker. Downloadaantallen kunnen kunstmatig worden opgeblazen en daadwerkelijk gebruik staat niet gelijk aan een beveiligingsreview.

Het bredere probleem van npm-toeleveringsketenaanvallen is niet nieuw, maar het viseren van AI-tooling markeert een evolutie. Naarmate ontwikkelaars large language model-API's in productiesystemen integreren, worden de tokens die die integraties authenticeren hoogwaardige doelwitten. Aanvallers zijn zich duidelijk bewust van deze verschuiving. Pakketten die AI-ontwikkeltools nabootsen, vormen een opkomende dreigingscategorie waartegen de beveiligingsgemeenschap nog steeds op schaal probeert op te treden.

Diepteverdediging voor ontwikkelaars: credential isolation, netwerksegmentatie en meer

Het codexui-android-incident wijst op verschillende concrete praktijken die de blootstelling aan dit type aanval kunnen verminderen.

Credential isolation is de meest directe maatregel. API-tokens en vernieuwingstokens moeten zo nauw mogelijk worden afgebakend, opgeslagen in secrets managers in plaats van omgevingsvariabelen of configuratiebestanden, en regelmatig worden gerouleerd. Als een token wordt gestolen, betekent beperkte reikwijdte beperkte schade.

Dependency auditing zou een standaard onderdeel moeten zijn van elke ontwikkelworkflow. Tools zoals npm audit, samen met externe platforms voor software composition analysis, kunnen pakketten met ongebruikelijk gedrag of bekende kwetsbaarheden markeren. Het vergrendelen van dependency-versies in package-lock-bestanden en het beoordelen van wijzigingen vóór het accepteren van updates, vermindert ook de blootstelling aan kwaadaardige versie-pushes.

Netwerkuitgaand verkeer monitoren kan exfiltratiepogingen opvangen die audittools missen. Als een ontwikkelomgeving of CI/CD-pijplijn is geconfigureerd om te alarmeren bij onverwachte uitgaande verbindingen, wordt een pakket dat probeert 'naar huis te bellen' met gestolen tokens detecteerbaar.

Het principe van minimale bevoegdheden is op elk niveau van toepassing. Ontwikkelmachines mogen niet draaien met inloggegevens die toegang op productieniveau verlenen. CI/CD-pijplijnen moeten korte, tijdens runtime gegenereerde tokens gebruiken in plaats van langdurig opgeslagen geheimen.

Ten slotte is het nu een waardevolle oefening om je eigen geïnstalleerde pakketten door te lichten op alles wat met authenticatieflows te maken heeft. Het codexui-android-incident staat waarschijnlijk niet op zichzelf. Controleer wat er in je node_modules staat, kijk welke machtigingen je API-tokens dragen en behandel elk pakket dat betrekking heeft op de opslag van inloggegevens met extra aandacht.

Toeleveringsketenaanvallen slagen omdat ze vertrouwen op schaal misbruiken. Het herbouwen van die beveiligingspositie, afhankelijkheid voor afhankelijkheid, te beginnen met de meest gevoelige inloggegevens in je stack, is de meest praktische reactie die individuele ontwikkelaars vandaag tot hun beschikking hebben.