Onderzoekers op het gebied van cyberbeveiliging hebben opnieuw een actieve software-aanvalscampagne ontdekt die zich richt op het npm-register, met meer dan 100 kwaadaardige pakketten die authenticatietokens, CI/CD-geheimen en GitHub-inloggegevens van de machines van ontwikkelaars kunnen stelen.
De campagne heeft de codenaam gekregen PhantomRaaf van Koi Security. Er wordt aangenomen dat de activiteit is begonnen in augustus 2025, toen de eerste pakketten naar de repository werden geüpload. Sindsdien is het aantal bibliotheken gestegen naar een totaal van 126 npm, wat meer dan 86.000 installaties heeft opgeleverd.
Sommige pakketten zijn ook gemarkeerd door het DevSecOps-bedrijf DCODX –
- op-cli-installatieprogramma (486 downloads)
- ongebruikte import (1.350 downloads)
- badgekit-api-client (483 downloads)
- polyfill-corejs3 (475 downloads)
- eslint-comments (936 Downloads)
Wat de aanval zo opvallend maakt, is het patroon van de aanvaller om de kwaadaardige code in afhankelijkheden te verbergen door naar een aangepaste HTTP-URL te verwijzen, waardoor npm deze van een niet-vertrouwde website ophaalt (in dit geval “packages.storeartifact(.)com”) in tegenstelling tot npmjs(.)com elke keer dat een pakket wordt geïnstalleerd.
“En npmjs(.)com volgt die URL’s niet”, legt beveiligingsonderzoeker Oren Yomtov uit in een rapport gedeeld met The Hacker News. “Beveiligingsscanners halen ze niet op. Hulpprogramma’s voor afhankelijkheidsanalyse negeren ze. Voor elk geautomatiseerd beveiligingssysteem tonen deze pakketten ‘0 afhankelijkheden.'”

Zorgwekkender is dat het feit dat de URL door de aanvaller wordt beheerd, betekent dat deze kan worden misbruikt door de slechte actor om hun payloads aan te passen en elke vorm van malware aan te bieden, en deze heimelijker te maken door in eerste instantie volledig onschadelijke code aan te bieden voordat een kwaadaardige versie van de afhankelijkheid wordt gepusht nadat het pakket breder wordt geaccepteerd.
De aanvalsketen begint zodra een ontwikkelaar een van de “goedaardige” pakketten installeert, wat op zijn beurt leidt tot het ophalen van de externe dynamische afhankelijkheid (RDD) van de externe server. Het kwaadaardige pakket wordt geleverd met een pre-installatie hook die de uitvoering van de hoofdlading activeert.
De malware is ontworpen om de ontwikkelaarsomgeving te scannen op e-mailadressen, informatie te verzamelen over de CI/CD-omgeving, een systeemvingerafdruk te verzamelen, inclusief het openbare IP-adres, en de resultaten naar een externe server te exfiltreren.
Koi Security zei dat de keuze van de pakketnamen niet willekeurig is, en dat de bedreigingsacteur zijn toevlucht heeft genomen tot het kapitaliseren van een fenomeen dat slopsquatting wordt genoemd – waarbij grote taalmodellen (LLM’s) niet-bestaande maar plausibel klinkende pakketnamen hallucineren – om die pakketten te registreren.
“PhantomRaven laat zien hoe geavanceerde aanvallers (beter) worden in het misbruiken van blinde vlekken in traditionele beveiligingstools”, aldus Yomtov. “Remote Dynamic Dependencies zijn niet zichtbaar voor statische analyse. AI-hallucinaties creëren plausibel klinkende pakketnamen die ontwikkelaars vertrouwen. En levenscyclusscripts worden automatisch uitgevoerd, zonder enige gebruikersinteractie.”
De ontwikkeling illustreert opnieuw hoe bedreigingsactoren nieuwe manieren vinden om kwaadaardige code in open-source-ecosystemen te verbergen en onder de radar te blijven.
“Het npm-ecosysteem maakt eenvoudig publiceren en lage wrijving voor pakketten mogelijk”, aldus DCODX. “Levenscyclusscripts (preinstall, install, postinstall) voeren tijdens de installatie willekeurige code uit, vaak zonder dat de ontwikkelaar hiervan op de hoogte is.”