Een cluster van bijna 800 kwaadaardige pakketten is gepubliceerd in het npm-register als onderdeel van een nieuwe campagne die is ontworpen om platformonafhankelijke malware te leveren die zich richt op Windows-, Mac- en Linux-systemen.
“Deze pakketten lijken gebruik te maken van AI-slop-squats of willekeurig gegenereerde pakketnamen met typefouten, maar ze leveren allemaal een krachtige RAT- en infostealer-payload”, aldus OpenSourceMalware-onderzoeker Paul McCarty.
In tegenstelling tot andere npm-georiënteerde software supply chain-aanvallen die gebruik maken van lifecycle hooks zoals preinstall of postinstall om de uitvoering van kwaadaardige code te activeren, worden de nieuw geïdentificeerde pakketten geleverd met een README die ontwikkelaars instrueert ze te laden met require(), een ingebouwde functie om modules, lokale bestanden en pakketten van derden te importeren.
De aanval leidt tot de uitvoering van een downloader genaamd WEL1DROPPERdat, wanneer het wordt uitgevoerd, het hostbesturingssysteem en de processorarchitectuur identificeert en een compatibele payload ophaalt van een van de drie Cloudflare Workers-hosts. De drie Cloudflare Workers-domeinen worden hieronder vermeld:
- oob-worker.cf103-070.workers(.)dev
- oob-worker.cf102-baf.workers(.)dev
- oob-worker.cf99-9b3.workers(.)dev
Als de op HTTPS gebaseerde downloads mislukken, schakelt de malware over naar een platformspecifiek domein en gebruikt DNS TXT-records om de volgende fase van het domein “wel1(.)ru” te verkrijgen. Het payloaddomein voor elk besturingssysteem en CPU-architectuur is als volgt:
- Linux x64 – sdk.dl.wel1(.)ru
- Linux ARM64 – ext.dl.wel1(.)ru
- macOS – pkg.dl.wel1(.)ru
- Windows – net.dl.wel1(.)ru
“Het pakket vraagt eerst om een TXT-record van c.
In de laatste fase wordt de payload naar een tijdelijke map geschreven en uitgevoerd met behulp van “/bin/sh” op Linux en macOS, of “cmd.exe” op Windows.
Sonatype, dat ook de campagne volgt onder de naam Flooding Dropper, zei dat de laatste fase wordt gelanceerd als een losstaand proces, waarbij de Windows-versie stappen onderneemt om Event Tracing for Windows (ETW) en Antimalware Scan Interface (AMSI) te patchen om de monitoring te verstoren, te controleren op sandboxes en virtuele omgevingen, persistentie tot stand te brengen via een Registry Run-sleutel en een geplande taak, en een gecodeerde payload (“/pkg/update_win.exe”) te downloaden en uit te voeren.
De macOS-infectieketen is vergelijkbaar en voert een identieke reeks acties uit om te zoeken naar debuggers en analyseartefacten voordat een compatibele payload (“/pkg/beacon_mac.bin”) wordt opgehaald van een externe server. Als dit niet lukt, gebruikt het de eerder genoemde DNS TXT-levering, wordt persistentie ingesteld met behulp van een LaunchAgent en start het uitvoerbare bestand vervolgens in een losstaand proces.
Het Linux-voorbeeld daarentegen is een ELF-binair bestand vol UPX dat is geconfigureerd om aanvullende payloads te downloaden van een Cloudflare Worker-URL (“oob-worker(.)cf99-9b3.workers(.)dev”), wat uiteindelijk leidt tot de implementatie van Sliver, een open-source command-and-control (C2)-framework.
Er is ook vastgesteld dat de pakketten een bestand bevatten met de naam “lib/telemetry.js” dat een plausibel ogende telemetrie-SDK implementeert, maar ook dezelfde downloaderlogica bevat.
“Het pakketingangspunt importeert dit bestand niet en het bevat geen extra hardgecodeerde infrastructuur”, aldus OpenSourceMalware. “De extra grote telemetrie-implementatie lijkt bedoeld om ruis toe te voegen en het kwaadaardige gedrag tijdens een snelle beoordeling te laten lijken op native profilering of analysefunctionaliteit.”
De aanwezigheid van domeinen als “tcsbank(.)ru” en “cloudbetalingen(.)ru” in de macOS-payload geeft aan dat de campagne zich mogelijk richt op Russische financiële instellingen en mobiele betalingen.
Er wordt ook vermoed dat het een evolutie is van een afhankelijkheidsverwarringscampagne met de codenaam Moika die eerder in april werd waargenomen en waarbij meer dan 250 pakketten in het npm-register werden gepubliceerd om omgevingsinformatie te stelen en een besturingssysteemspecifieke tweede fase-payload te leveren.
De ontwikkeling komt op het moment dat Palo Alto Networks Unit 42 meerdere campagnes documenteerde die gericht waren op npm en de Python Package Index (PyPI) repository –
- Een set van 10 npm-pakketten die een versluierde cryptocurrency-diefstal en een trojan voor externe toegang downloaden van een externe server. “Na de installatie exporteren de pakketten een ‘getPlugin’-functie die de URL construeert van waaruit de payload wordt gedownload als een versluierde IIFE (Immediately Invoked Function Expression) JavaScript-code ingebed in een JSON-object”, aldus Unit 42. “De payload implementeert een crypto-stealer en Remote-Access Trojan (RAT) waarmee de aanvaller willekeurige opdrachten kan uitvoeren op de geïnfecteerde host.”
- Een reeks kwaadaardige pakketten over npm en PyPI die meerdere afzonderlijke bedreigingsactoren vertegenwoordigen die in staat zijn tot exfiltratie van cloudreferenties, die EtherHiding blockchain-gebaseerde C2-droppers leveren, sleuteldiefstal van Solana-cryptocurrency-portemonnees via Telegram, geheime exfiltratie van .env-bestanden, het uitvoeren van nep-CAPTCHA social engineering-code op afstand, en Discord-tokendiefstal en GitHub Actions CI/CD-credential-exfiltratie.
Van pakketten tot Chrome-extensies
Er zijn ook bedreigingsactoren waargenomen die Google Chrome-extensies gebruiken die op de markt worden gebracht als game-emulators, wachtwoordmanagers, productiviteitstools, CSS-inspecteurs en markdown-converters om de webbrowser in een webcrawl-proxy te veranderen. De crawlopdrachten worden op afstand ontvangen via een permanente WebSocket-verbinding.
“Deze extensies omvatten een identieke commerciële SDK voor het delen van webbandbreedte die de browser van de gebruiker verbindt met een extern proxynetwerk van derden voor webscraping-bewerkingen”, aldus Unit 42, eraan toevoegend dat het pagina’s crawlt door een verborgen iframe in actieve browsertabbladen te injecteren, pagina-inhoud converteert naar Markdown op de achtergrond en deze naar een externe cloud-backend stuurt.
Het cyberbeveiligingsbedrijf merkte op dat sommige van deze extensies de praktijk bekendmaken in de beschrijvingen van de Chrome Web Store en in het privacybeleid op hun SaaS-websites. Na installatie vraagt de SDK van derden gebruikers om zich aan te melden voor de service.
“Terwijl de proxy- en crawlfuncties inactief blijven als de gebruiker weigert, beschouwen sommige extensies deze opt-in als noodzakelijk voor een ononderbroken service”, aldus Unit 42. “Een opmerkelijk voorbeeld is InstaSkip (mdondgockboebafloibbhjofmoedmnnn), dat deze SDK insluit.”