Bedreigingsactoren met banden met Noord-Korea zijn in verband gebracht met een nieuwe reeks kwaadaardige npm-pakketten die zich voordoen als Rollup polyfill-tooling om externe toegang en gegevensdiefstal te vergemakkelijken.
Volgens JFrog bootsen de pakketten “rollup-packages-polyfill-core” en “rollup-runtime-polyfill-core” het legitieme “rollup-plugin-polyfill-node”-project na, tot aan de beschrijving, metagegevens van de repository en de vorm van het pakket.
“De vergelijkbare pakketten plaatsen zichzelf in dezelfde rollup-, polyfill-, core- en node-naamgevingsruimte, wat er plausibel uit kan zien tijdens een snelle beoordeling van de afhankelijkheid”, zei JFrog in een technisch artikel over de campagne.
Bij de campagne zijn ook vier andere pakketten betrokken, die sindsdien allemaal uit het npm-register zijn verwijderd:
- eigenzinnig teken
- reageer-icon-svgs
- rollup-plug-in-polyfill-connect
- snelle-parse-stream
Wat hier opmerkelijk is, is dat “rollup-packages-polyfill-core” “swift-parse-stream” installeert en laadt, terwijl “rollup-runtime-polyfill-core” en “quirky-token” installeert. Op vergelijkbare wijze is gebleken dat “react-icon-svgs” “rollup-plugin-polyfill-connect” als tweede fase installeert.
“De pakketten van de tweede fase zijn vrijwel identieke SVG-hulpprogramma’s die een JSON-object ophalen uit JSONKeeper en het modelveld evalueren”, aldus het cyberbeveiligingsbedrijf. “Deze gelaagde structuur, samen met de op elkaar lijkende namen, legitiem ogende metadata, verborgen uitvoering tijdens de installatie, omgevingscontroles en payloads voor diefstal van inloggegevens/toegang op afstand, is vergelijkbaar met eerdere Noord-Koreaanse Lazarus-gekoppelde npm-campagnes.”
Het is de moeite waard hier te benadrukken dat dit niet de eerste keer is dat Noord-Koreaanse bedreigingsactoren npm-pakketten hebben geüpload die zich voordoen als Rollup polyfill-tools. In april 2026 beschreef Panther een aanhoudende npm-campagne waarbij 108 kwaadaardige npm-pakketten werden gepubliceerd, verspreid over 261 versies, om BeaverTail en OtterCookie te leveren, twee bekende malwarefamilies die verband houden met Contagious Interview. Een van die pakketten was “rollup-plugin-polyfill-route”, die op 20 maart 2026 werd gepubliceerd.
Het startpunt van de aanval is een Base64-gecodeerde npm-installatieopdracht voor “swift-parse-stream” (of “quirky-token”) die verborgen is in “rollup-packages-polyfill-core” (of “rollup-runtime-polyfill-core”). De twee pakketten in de tweede fase zijn verkleed als SVG-opschoningshulpprogramma’s, terwijl ze een JSON Keeper-URL gebruiken om JavaScript-malware op te halen en uit te voeren.
De JavaScript-code voert controles uit om uitvoering binnen cloudontwikkelomgevingen, sandboxes, serverloze runtimes en analyse-infrastructuur te voorkomen. Voorbij deze poort installeert de malware de noodzakelijke afhankelijkheden en maakt contact met een externe server (“216.126.236(.)244”) om een gecodeerde JavaScript-payload op te halen.
De gedecodeerde payload fungeert vervolgens als een lader voor extra scripts die verantwoordelijk zijn voor het mogelijk maken van externe toegang tot de gecompromitteerde host ter ondersteuning van interactieve terminalsessies, opdrachtuitvoering, screenshot-opname, procesbeëindiging, muisbewegingen die alleen voor Windows beschikbaar zijn, klikken, scrollen, toetsenbordaanslagen en sneltoetsen met behulp van het “@nut-tree-fork/nut-js”-pakket, evenals het stelen van gegevens uit webbrowsers en cryptocurrency-wallets, het verzamelen van bestanden die overeenkomen met specifieke extensies en het vastleggen van periodiek de inhoud van het klembord.

De functies overlappen met die van OtterCookie, waarbij het gebruik van “@nut-tree-fork/nut-js” voor muis- en toetsenbordbediening op afstand ook wordt waargenomen in een pakket met de naam “express-session-js” dat in april 2026 door SafeDep werd beschreven. Het bestandverzamelaarcomponent blijkt specifiek te zoeken naar editorgeschiedenis die is gekoppeld aan Microsoft Visual Studio Code, Windsurf en Cursor, samen met configuraties van ontwikkelaars en AI-tools, zoals AWS, Microsoft Azure, Google Gemini, Antropische Claude, Foundry, SSH en Z-shell (Zsh).
“Rollup-plug-ins worden doorgaans geladen vanuit lokale configuratiebestanden, ontwikkelaarswerkstations en CI-taken”, aldus JFrog. “Deze omgevingen hebben vaak toegang tot gevoelige assets zoals broncode, npm-tokens, Git-inloggegevens, cloudsleutels, SSH-sleutels, browsergegevens en projectgeheimen.”
“De payload is ook breder dan een eenvoudige downloader. Zodra de latere fasen zijn uitgevoerd, krijgt de aanvaller zowel verzamel- als controlemogelijkheden. Dit maakt de payload relevant voor ontwikkelaarswerkstations en bouwmachines, waar API-sleutels, SSH-sleutels, portemonneemateriaal, cloudreferenties en projectgeheimen vaak aanwezig zijn.”
De onthulling valt samen met de ontdekking van meerdere software supply chain-aanvallen door Checkmarx, SafeDep en AWS-beveiligingsonderzoeker Chi Tran, gericht op het vergiftigen van open-source pakketrepository’s en het stelen van waardevolle gegevens –
- Een cluster van ten minste acht getrojaniseerde ‘pyrogram’-vorken die tussen november 2025 en juni 2026 zijn gepubliceerd door een bedreigingsacteur die onder meerdere identiteiten opereert, inclusief een verborgen achterdeur die hen volledige controle op afstand geeft over elke server waarop het geïnfecteerde PyPI-pakket draait door willekeurige Python-code of shell-opdrachten uit te voeren die door de aanvaller zijn verzonden. De resultaten van de opdrachtuitvoering worden via Telegram geëxfiltreerd. De activiteit heeft door Checkmarx de codenaam Operation Navy Ghost gekregen.
- Een cluster van 30 npm-pakketten die Polymarket-tooling en algemene wiskundebibliotheken nabootsen, gepubliceerd door 10 npm-onderhouderaccounts, gericht op DeFi-ontwikkelaars om een JavaScript-infostealer te leveren die crypto-wallet-kluizen, browserreferenties, SSH-sleutels, AWS-referenties, npm-tokens, Docker-configuraties, shell-geschiedenis en databases voor wachtwoordbeheer leest.
- Een cluster van 25 npm-pakketten gepubliceerd onder het @marketfront-bereik door een npm-account met de naam “marketfront” dat een post-install credential harvester bevat die 20 credential- en geheime bestanden leest, waaronder ~/.ssh, ~/.aws/credentials, ~/.kube/config, ~/.docker/config.json, ~/.npmrc, ~/.netrc, ~/.pgpass, ~/.git-credentials, ~/.env en shell-geschiedenis, en exfiltreert de gegevens.
- Een Python-pakket genaamd “security-alerts-sdk” dat beweert een tool te zijn voor het monitoren van datalekken, maar code bevat om een achterdeur te lanceren die periodiek een externe server (“142.93.211(.)30:5000”) opvraagt voor opdrachten en exfiltreert SSH-privésleutels, AWS-inloggegevens, Docker/npm/PyPI/git-tokens, .env-bestanden en browserreferenties naar dezelfde server.
- Een cluster van 15 npm-pakketten gepubliceerd door een enkele bedreigingsacteur die opereert onder een bereik van 13 npm en die een post-install JavaScript-payload activeert die verantwoordelijk is voor het downloaden en uitvoeren van een door Rust gecompileerd ELF-binair bestand dat wordt gehost op GitHub, dat vervolgens een breed scala aan gegevens verzamelt van cryptocurrency-wallets, webbrowsers en andere applicaties, waaronder tokens van cloudproviders, SSH-sleutels, berichtenplatformsessies, databaseclientconfiguraties en inloggegevens van ontwikkelaars.
- Een npm-pakket met de naam ‘events-runtime’ dat het ‘events’-pakket typosquats en voorwaardelijk een cryptocurrency-portemonnee-diefstal voortbrengt, hostverkenningsgegevens via Slack en Telegram exfiltreert, een bidirectioneel Slack-opdrachtkanaal opent en configuratie- en payload-brokken leest van een Ethereum slim contract dat wordt gebruikt als een dead drop-resolver. De kwaadaardige logica wordt alleen geactiveerd als de gebeurtenis-ID ‘eventId0’ is.
- Een npm-pakket genaamd “o3forms” dat inloggegevens van cloudserviceproviders steelt, ontwikkelaarsgeheimen en CI/CD-omgevingen scant, interne netwerkverkenningen uitvoert en de gegevens exfiltreert naar een door de aanvaller bestuurd Cloudflare Workers-eindpunt. “De aanvaller heeft de aanval opgesplitst in een opzettelijk goedaardig, in het register gepubliceerd pakket en een op GitHub vastgezette *-utils-subafhankelijkheid die zowel de installatiehooks als de daadwerkelijke malware bevat”, aldus Tran. “Deze structuur is specifiek ontworpen om het statische scannen en het scannen van levenscyclusscripts te omzeilen waar de meeste tools aan de register- en CI-kant van afhankelijk zijn.”
Gebruikers die een van de bovengenoemde pakketten hebben geïnstalleerd, wordt geadviseerd deze van hun werkstations te verwijderen, compromissen te sluiten en inloggegevens te roteren, de kwaadaardige uitgaande kanalen te blokkeren en afhankelijkheidsscans in CI/CD-pijplijnen in te schakelen om nieuw gepubliceerde of verdachte pakketten te markeren.