Zeventien kwaadaardige pakketten op npm en PyPI die zich voordoen als de betaal-SDK's van Paysafe, Skrill en Neteller stelen in het geniep de sleutels van ontwikkelaars die er een betaalintegratie mee bouwen. Dertien pakketten stonden op npm, vier op PyPI, meldt beveiligingsbedrijf Socket.
Voor elk Nederlands bedrijf dat zijn eigen betaalflow bouwt, verschuift het gevaar hiermee naar het moment vóór de eerste echte transactie. Een ontwikkelaar die snel paysafe-checkout of skrill-sdk binnenhaalt, installeert een look-alike die keurig een { success: true } teruggeeft zonder ook maar één echte betaal-API aan te roepen. De integratie lijkt te werken, terwijl het pakket op de achtergrond de omgevingsvariabelen van de laptop of de CI-pijplijn leegtrekt.

Wat de nep-SDK's buitmaken
De malware zoekt gericht naar PAYSAFE_API_KEY en PAYSAFE_ENV, maar grijpt daarnaast elke omgevingsvariabele waarvan de naam KEY, SECRET, TOKEN, PASS, AUTH of API bevat, tot honderd tekens per waarde. In de praktijk zijn dat je AWS_SECRET_ACCESS_KEY, je GITHUB_TOKEN en je NPM_TOKEN: precies de sleutels waarmee een aanvaller je cloudomgeving, je broncode en je eigen pakketpublicaties overneemt. In een build- of CI/CD-omgeving liggen daar ook databasewachtwoorden en cloud-toegangssleutels voor het oprapen.
De gestolen data gaat naar een command-and-control-server die schuilgaat achter een ngrok-domein, verborgen met base64, een XOR-bewerking en omgekeerde tekst. Socket koppelt die infrastructuur aan eerdere operaties van de NjRAT-remote-access-trojan. Elk pakket kreeg een onschuldig ogende versie 1.0.0 en werd binnen zes minuten na publicatie als malware herkend.
Waarom een vertrouwde naam niet genoeg is
Deze aanval mikt niet op een bug in je code, maar op de naamruimte van de pakketregisters zelf. paysafe-payments op npm oogt net zo geloofwaardig als de echte SDK, en pip install paysafe-sdk voelt als een routinehandeling. Het is niet het eerste geval deze zomer: in juni werd de npm-scope van het AI-framework Mastra gekaapt en ruim 140 pakketten voorzien van een credential-steler. Hetzelfde patroon, een ander doelwit.
Wat je nu kunt doen
Draaide een van deze pakketnamen ooit door je build? Roteer dan direct alle secrets op elke machine of CI-runner die het importeerde of uitvoerde, en controleer je logs op uitgaand verkeer naar .ngrok-free.dev-adressen.
Structureel helpt vooral discipline in je dependency-keten. Omdat de kwaadaardige pakketten net gepubliceerd waren, biedt een simpele regel bescherming: de FBI adviseert een minimale package-leeftijd voordat je een dependency vertrouwt, zodat een pakket dat gisteren pas verscheen niet vanzelf in je productie belandt. Combineer dat met het vastpinnen van versies en een SBOM die je hele dependency-keten in kaart brengt, en installeer alleen de pakketnaam die je betaalprovider zelf documenteert.
De echte les zit niet in deze zeventien namen, die morgen vervangen zijn door zeventien nieuwe. Het pakketregister is een open publicatiekanaal geworden waar een geloofwaardige naam en een werkende { success: true } genoeg zijn om binnen te komen. Wie software bouwt, beveiligt niet langer alleen de eigen code, maar ook de herkomst van elke regel die van buiten binnenkomt.
Veelgestelde vragen
Betaalflow die je kunt vertrouwen
Een betaalintegratie valt of staat bij de pakketten en koppelingen eronder. Ik ontwerp en bouw je betaalflow end-to-end, van checkout tot afhandeling, met dependencies die ik zelf controleer en waar het kan self-hosted.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
