Bedreigingsactoren met banden met Noord-Korea zijn waarschijnlijk de laatsten geworden die de onlangs onthulde kritieke React2Shell-beveiligingsfout in React Server Components (RSC) hebben misbruikt om een voorheen ongedocumenteerde trojan voor externe toegang te leveren, genaamd EtherRAT.
“EtherRAT maakt gebruik van slimme contracten van Ethereum voor command-and-control (C2) resolutie, zet vijf onafhankelijke Linux-persistentiemechanismen in en downloadt zijn eigen Node.js-runtime van nodejs.org”, aldus Sysdig in een rapport dat maandag werd gepubliceerd.
Het cloudbeveiligingsbedrijf zei dat de activiteit aanzienlijke overlap vertoont met een langlopende campagne met de codenaam Contagious Interview, waarbij sinds februari 2025 is waargenomen dat gebruik wordt gemaakt van de EtherHiding-techniek om malware te verspreiden.
Contagious Interview is de naam die wordt gegeven aan een reeks aanvallen waarbij onder meer blockchain- en Web3-ontwikkelaars het doelwit zijn van nep-sollicitatiegesprekken, codeeropdrachten en video-evaluaties, wat leidt tot de inzet van malware. Deze inspanningen beginnen doorgaans met een list die slachtoffers lokt via platforms als LinkedIn, Upwork of Fiverr, waar de dreigingsactoren zich voordoen als recruiters die lucratieve vacatures aanbieden.
Volgens software supply chain-beveiligingsbedrijf Socket is het een van de meest productieve campagnes die het npm-ecosysteem exploiteren, wat hun vermogen benadrukt om zich aan te passen aan JavaScript en op cryptocurrency gerichte workflows.
De aanvalsketen begint met de exploitatie van CVE-2025-55182 (CVSS-score: 10,0), een beveiligingsprobleem met de hoogste ernst in RSC, om een Base64-gecodeerde shell-opdracht uit te voeren die een shell-script downloadt en uitvoert dat verantwoordelijk is voor de implementatie van het belangrijkste JavaScript-implantaat.
Het shellscript wordt opgehaald met behulp van een curl-opdracht, waarbij wget en python3 worden gebruikt als fallback. Het is ook ontworpen om de omgeving voor te bereiden door Node.js v20.10.0 te downloaden van nodejs.org, waarna het een gecodeerde blob en een versluierde JavaScript-dropper naar schijf schrijft. Zodra al deze stappen zijn voltooid, wordt het shell-script verwijderd om het forensische spoor te minimaliseren en wordt de dropper uitgevoerd.
Het primaire doel van de dropper is om de EtherRAT-payload te decoderen met een hardgecodeerde sleutel en deze te spawnen met behulp van het gedownloade binaire bestand Node.js. De malware valt op door het gebruik van EtherHiding om elke vijf minuten de C2-server-URL op te halen uit een slim contract van Ethereum, waardoor de operators de URL gemakkelijk kunnen bijwerken, zelfs als deze wordt verwijderd.
“Wat deze implementatie uniek maakt, is het gebruik van consensusstemming op negen openbare Ethereum Remote Procedure Call (RPC)-eindpunten”, aldus Sysdig. “EtherRAT ondervraagt alle negen eindpunten parallel, verzamelt antwoorden en selecteert de URL die door de meerderheid wordt geretourneerd.”
“Dit consensusmechanisme beschermt tegen verschillende aanvalsscenario’s: een enkel gecompromitteerd RPC-eindpunt kan bots niet omleiden naar een sinkhole, en onderzoekers kunnen de C2-resolutie niet vergiftigen door een frauduleus RPC-knooppunt te exploiteren.”
Het is vermeldenswaard dat een vergelijkbare implementatie eerder werd waargenomen in twee npm-pakketten genaamd colortoolsv2 en mimelib2 waarvan werd vastgesteld dat ze downloader-malware op ontwikkelaarssystemen afleverden.
Zodra EtherRAT contact heeft gemaakt met de C2-server, komt het in een polling-lus die elke 500 milliseconden wordt uitgevoerd, waarbij elk antwoord dat langer is dan 10 tekens wordt geïnterpreteerd als JavaScript-code die op de geïnfecteerde machine moet worden uitgevoerd. Doorzettingsvermogen wordt bereikt door vijf verschillende methoden te gebruiken:
- Systemd-gebruikersservice
- XDG automatische startinvoer
- Cron-banen
- .bashrc-injectie
- Profielinjectie
Door gebruik te maken van meerdere mechanismen kunnen de bedreigingsactoren ervoor zorgen dat de malware blijft werken, zelfs nadat het systeem opnieuw is opgestart, en blijven ze toegang krijgen tot de geïnfecteerde systemen. Een ander teken dat wijst op de verfijning van de malware is de mogelijkheid om zichzelf te updaten, die zichzelf overschrijft met de nieuwe code die wordt ontvangen van de C2-server nadat de eigen broncode naar een API-eindpunt is verzonden.
Vervolgens wordt een nieuw proces gestart met de bijgewerkte payload. Wat hier opvalt, is dat de C2 een functioneel identieke, maar anders versluierde versie retourneert, waardoor deze mogelijk de op statische handtekeningen gebaseerde detectie kan omzeilen.
Naast het gebruik van EtherHiding komen de links naar Contagious Interview voort uit overlappingen tussen het gecodeerde laadpatroon dat in EtherRAT wordt gebruikt en een bekende JavaScript-informatiesteler en downloader genaamd BeaverTail.
“EtherRAT vertegenwoordigt een significante evolutie in de exploitatie van React2Shell, die verder gaat dan opportunistische cryptomining en diefstal van inloggegevens naar aanhoudende, heimelijke toegang die is ontworpen voor langetermijnoperaties”, aldus Sysdig.
“Of dit nu gaat om Noord-Koreaanse actoren die zich richten op nieuwe exploitatievectoren of om geavanceerde technieken die door een andere actor worden geleend, het resultaat is hetzelfde: verdedigers worden geconfronteerd met een uitdagend nieuw implantaat dat weerstand biedt aan traditionele detectie- en verwijderingsmethoden.”
Besmettelijke interviewverschuivingen van npm naar VS-code
De onthulling komt op het moment dat OpenSourceMalware details onthulde van een nieuwe Contagious Interview-variant die slachtoffers aanspoort een kwaadaardige repository op GitHub, GitLab of Bitbucket te klonen als onderdeel van een programmeeropdracht, en het project te starten in Microsoft Visual Studio Code (VS Code).
Dit resulteert in de uitvoering van een VS Code task.json-bestand omdat het is geconfigureerd met runOptions.runOn: ‘folderOpen’, waardoor het automatisch wordt uitgevoerd zodra het project wordt geopend. Het bestand is ontworpen om een loader-script te downloaden met behulp van curl of wget, gebaseerd op het besturingssysteem van de getroffen host.
In het geval van Linux is de volgende fase een shellscript dat een ander shellscript downloadt en uitvoert met de naam ‘vscode-bootstrap.sh’, dat vervolgens nog twee bestanden ophaalt, ‘package.json’ en ‘env-setup.js’, waarvan de laatste dient als startpunt voor BeaverTail en InvisibleFerret.
OpenSourceMalware zei dat het 13 verschillende versies van deze campagne heeft geïdentificeerd, verspreid over 27 verschillende GitHub-gebruikers en 11 verschillende versies van BeaverTail. De vroegste repository (“github(.)com/MentarisHub121/TokenPresaleApp”) dateert van 22 april 2025 en de meest recente versie (“github(.)com/eferos93/test4”) is gemaakt op 1 december 2025.
“De Noord-Koreaanse bedreigingsactoren zijn massaal naar Vercel toegestroomd en gebruiken het nu bijna uitsluitend”, aldus het OpenSourceMalware-team. “We weten niet waarom, maar Contagious Interview is gestopt met het gebruik van Fly.io, Platform.sh, Render en andere hostingproviders.”