Cybersecurity-onderzoekers hebben een reeks kwaadaardige npm-pakketten ontdekt die zijn ontworpen om een op Windows gebaseerde trojan voor externe toegang (RAT) te leveren.
De lijst met geïdentificeerde pakketten vindt u hieronder:
- aes-decode-runner-pro (145 downloads)
- postcss-minify-selector (256 downloads)
- postcss-minify-selector-parser (615 downloads)
Alle pakketten zijn de afgelopen maand gepubliceerd door een npm-gebruiker genaamd “abdrizak” en zijn op het moment van schrijven nog steeds beschikbaar om te downloaden van npm.
“Aes-decode-runner-pro en postcss-minify-selector-parser presenteren zichzelf beide als gelaagde AES/custom-codec-pakketten en zijn afhankelijk van de legitieme postcss-selector-parser”, zei JFrog in een analyse. “Postcss-minify-selector presenteert zichzelf als een PostCSS-selector-minifier en is afhankelijk van postcss-minify-selector-parser.”
Wat betreft “postcss-minify-selector-parser”, de naam is een verwijzing naar “postcss-selector-parser”, een veelgebruikte npm-bibliotheek met meer dan 127 miljoen wekelijkse downloads. Ongeacht het gedownloade pakket leidt de aanvalsketen tot de inzet van dezelfde Windows-malware.
De pakketten worden geleverd met een JavaScript-dropper die een PowerShell-script (“settings.ps1”) naar schijf schrijft en dit uitvoert. Het PowerShell-script fungeert vervolgens als downloader voor een payload in de volgende fase die wordt opgehaald van een externe server (“nvidiadriver(.)net”) met behulp van de “curl.exe.”
De opgehaalde payload is een ZIP-archief, waaruit een Visual Basic Script-bestand (“update.vbs”) wordt uitgepakt en uitgevoerd met behulp van “wscript.exe”. Ook gebundeld in het gedownloade ZIP-bestand is een Python-runtime, een Python-lader (“loader.py”) en een aantal Python-extensiemodules (*.pyd) gecompileerd met Nuitka.
Visual Basic is verantwoordelijk voor het opzetten van de Python-omgeving op de getroffen host en het starten van het script “loader.py”, dat vervolgens de kernlogica van de malware activeert. De RAT is uitgerust om hostinformatie te verzamelen, inloggegevens van Google Chrome over te hevelen, gegevens van Chrome-extensies te verzamelen, shell-opdrachten uit te voeren en bestanden te downloaden/uploaden van en naar een command-and-control (C2)-server (“95.216.92(.)207:8080”).
Deze functies worden gerealiseerd via een reeks native Python-uitbreidingsmodules –
- config.pyd, dat constanten, opdracht-ID’s, C2-URL en namen van registersleutels bevat
- api.pyd, dat de HTTP C2-pakketuitwisseling afhandelt
- audiodriver.pyd, dat de belangrijkste RAT-orkestratielus afhandelt
- command.pyd, dat de host profileert, virtuele machine (VM) controles, bestandsoverdracht en shell-uitvoering uitvoert
- auto.pyd, dat diefstal van Chrome-referenties en -extensies uitvoert, waarbij app-gebonden encryptie (ABE)-beveiligingen worden omzeild
- util.pyd, dat fungeert als tar/gzip-archiefhelpers
“Deze casus laat zien hoe een klein parser-achtig pakket een uit meerdere fasen bestaande Windows-payload kan verbergen, terwijl het lijkt alsof het gerelateerd is aan legitieme build-tools met een groot wekelijks gebruik”, aldus JFrog. “Voor verdedigers is de belangrijke les om lookalike build-afhankelijkheden te behandelen als potentiële leveringsmechanismen, en niet alleen maar als onschuldige naamgevingsruis.”
De ontdekking valt samen met drie andere campagnes gericht op het npm- en TypeScript-ecosysteem:
- Een kwaadaardig pakket met de naam “apintergrationpost” dat een volledig uitgeruste Linux RAT levert genaamd MYRA, terwijl het beweert een Node.js-integratieclient te zijn voor geautoriseerde red team-oefeningen. “Het compileert een native C-rootkit tijdens de installatie, zet drie onafhankelijke persistentiemechanismen op, doet zich voor als een systemd-service, ondersteunt bestandsloze uitvoering en biedt interactieve shell-toegang met live schermstreaming”, aldus SafeDep.
- Een kwaadaardig pakket genaamd “@withgoogle/stitch-sdk” dat de Stitch AI-ontwerptool van Google nabootst, maar wordt geleverd met mogelijkheden om ontwikkelaarsreferenties te stelen uit acht bronnen (Claude Code, git config, ~/.git-credentials, openbare SSH-sleutels, GitHub CLI, npm config, ~/.npmrc en ~/.docker/config.json) en deze te exfiltreren naar een door de aanvaller beheerd domein (“steek-productie(.)org/api/v1”).
- Een cluster van vijf pakketten (“procwire”, “routecraft”, “endpointmap”, “bytecraft” en “staticlayer”) die een dropper binary op Windows-hosts levert vanaf een externe server en deze uitvoert tijdens de npm-installatie. Het “routecraft”-pakket vermeldt “procwire” als een afhankelijkheid, terwijl de laatste “endpointmap” en “bytecraft” als afhankelijkheden vermeldt. Het laatste pakket, “staticlayer”, is ontworpen om op de server te draaien en bestanden af te leveren aan een client die de exacte User-Agent van de dropper presenteert.
Gebruikers die een van de bovenstaande pakketten hebben geïnstalleerd, wordt geadviseerd deze met onmiddellijke ingang te verwijderen, eventuele door deze pakketten gemaakte artefacten te verwijderen en inloggegevens van de getroffen ontwikkelaarsmachines te rouleren.
De bevindingen vallen ook samen met een supply chain-aanval gericht op de ‘gonex-AI/Understand-Anything’ kennisgrafiektool om een kwaadaardige payload te pushen die ‘een van de drie hardgecodeerde C2-servers bakens, een campagnemarker exfiltreert, XOR-decodeert en evalueert een gedownloade botclient, en vervolgens onafhankelijk een tweede faseopdracht oplost van een Tron blockchain-adres waarvan de laatste transactie een BSC-transactie-hash codeert die de actieve payload draagt.’
De activiteit overlapt met een Noord-Koreaanse supply chain-operatie genaamd PolinRider, waarbij is waargenomen dat versluierde JavaScript wordt geïnjecteerd in de configuratiebestanden van legitieme ontwikkelaars in bijna 2.000 gecompromitteerde GitHub-repository’s om een bekende malware-downloader en stealer te leveren, genaamd BeaverTail, die vervolgens de weg vrijmaakt voor de InvisibleFerret-achterdeur.
“Deze aanval combineert drie dingen die afzonderlijk bekend zijn, maar samen een detectiekloof openen: een uitgebreide nep-PR-beschrijving met verzonnen testbewijs, een diff die zijn lading in horizontale witruimte verbergt, en een tweetraps C2 waarbij de tweede fase de openbare blockchain-infrastructuur gebruikt als een eenmalige, overal leesbare relais”, aldus SafeDep.