Cybersecurity-onderzoekers luiden de noodklok over wat in nieuw gepubliceerde versies van node-ipc wordt beschreven als ‘kwaadwillige activiteit’.
Volgens Socket en StepSecurity is bevestigd dat drie verschillende versies van het npm-pakket schadelijk zijn:
“Eerste analyses geven aan dat [email protected], [email protected] en [email protected] versluierd stealer/backdoor-gedrag bevatten”, aldus Socket.
“De malware lijkt vingerafdrukken te maken op de hostomgeving, lokale bestanden op te sommen en te lezen, verzamelde gegevens te comprimeren en in stukken te verdelen, de lading in een cryptografische envelop te verpakken en te proberen te exfiltreren via een netwerkeindpunt dat is geselecteerd via DNS/adreslogica.”
StepSecurity zei dat de zwaar versluierde payload wordt geactiveerd wanneer het pakket tijdens runtime nodig is, en probeert een brede reeks ontwikkelaars- en cloudgeheimen naar een externe command-and-control (C2)-server te exfiltreren.
Dit omvat 90 categorieën inloggegevens, waaronder Amazon Web Services, Google Cloud, Microsoft Azure, SSH-sleutels, Kubernetes-tokens, GitHub CLI-configuraties, Claude AI- en Kiro IDE-instellingen, Terraform-status, databasewachtwoorden, shell-geschiedenis en meer. De verzamelde gegevens worden vervolgens gecomprimeerd in een GZIP-archief en verzonden naar het domein “sh.azurestaticprovider(.)net”.
De drie versies zijn gepubliceerd door een account met de naam ‘atiertant’, dat geen verband houdt met de oorspronkelijke auteur van het pakket, ‘riaevangelist’. Hoewel “atiertant” in de lijst met beheerders voorkomt, heeft het account geen eerdere publicatiegeschiedenis in verband met het node-ipc-pakket. De vorige update van het pakket was in augustus 2024.
Het feit dat het slapende pakket met hoge downloadsnelheden na een periode van 21 maanden werd gecompromitteerd, geeft aan dat ofwel de ‘atiertant’-referenties opnieuw zijn gecompromitteerd, ofwel dat het account specifiek is toegevoegd als beheerder om de kwaadaardige versies te publiceren.

Wat opvalt aan de activiteit is dat deze niet afhankelijk is van npm-levenscyclushaken zoals preinstall-, install- of postinstall-scripts, maar dat de kwaadaardige payload wordt toegevoegd als een Instant Invoked Function Expression (IIFE) aan het einde van “node-ipc.cjs”. Dit zorgt er op zijn beurt voor dat de malware onvoorwaardelijk wordt geactiveerd bij elke vereiste (‘node-ipc’).
De eigenaardigheid houdt daar niet op, want de payload voert een SHA-256-vingerafdrukcontrole uit en vergelijkt deze met een hardgecodeerde hash die is samengesteld uit acht versluierde tabelfragmenten die in de code zijn ingebed, voordat hij verder gaat met systeemopsomming en uitgebreide verzameling van inloggegevens.
“Dit betekent dat 12.0.1 volledig inert is op elke machine waarvan het primaire modulepad niet naar de doelwaarde hasht”, zegt StepSecurity-onderzoeker Sai Likhith. “De aanvaller weet precies welk project of welke ontwikkelaar het doelwit is en heeft de hash van hun toegangspunt vooraf berekend voordat ze worden gepubliceerd. De 9.x-versies hebben deze poort niet en zullen de volledige payload uitvoeren op elk systeem dat ze laadt.”
De malware bevat ook een tweede exfiltratiekanaal naast het versturen van een HTTPS POST naar het nep-Azure-domein dat de gecomprimeerde gestolen gegevens bevat. Dit omvat het coderen van delen van het archief als een DNS TXT-record nadat de DNS-resolver van het systeem is overschreven met Google Public DNS om lokale DNS-gebaseerde beveiligingscontroles te omzeilen.
“Het lost eerst sh.azurestaticprovider.net op met behulp van 1.1.1.1 (primair) of 8.8.8.8 (fallback) om het C2 IP-adres te verkrijgen”, aldus StepSecurity. “Vervolgens richt het de oplosser rechtstreeks opnieuw op het C2 IP-adres voor alle exfiltratiequery’s.”
“De direct-to-C2 DNS-sink is een opmerkelijke anti-detectietechniek. Omdat de exfiltratiequery’s nooit openbare DNS-resolvers raken, is er geen waarneembare bt.node.js-activiteit in openbare DNS-logboeken. Organisaties die uitsluitend afhankelijk zijn van DNS-logboekregistratie via bedrijfsresolvers zouden dit verkeer niet zien.”
Dit is niet de eerste keer dat het npm-pakket kwaadaardige functionaliteit bevat. In maart 2022 introduceerde de beheerder van het pakket opzettelijk destructieve mogelijkheden in versies 10.1.1 en 10.1.2 door bestanden op systemen in Rusland of Wit-Rusland te overschrijven als een vorm van protest na de Russische militaire invasie van Oekraïne.
Twee daaropvolgende versies – 11.0.0 en 11.1.0 – bevatten de ‘peacenotwar’-afhankelijkheid, die door dezelfde beheerder ook werd gepubliceerd als een ‘geweldloos protest tegen de Russische agressie’.
“Het laatste incident lijkt te gaan om een verdachte herpublicatie of herintroductie van kwaadaardige code in versies van een bekend pakket, in plaats van een typosquatting-poging”, aldus Socket.
Gebruikers wordt geadviseerd om de gecompromitteerde node-IPC-versies te verwijderen en een bekende schone versie (9.2.1 en 12.0.0) opnieuw te installeren, om compromissen te sluiten en inloggegevens en geheimen te roteren, de npm-publicatieactiviteit te controleren voor alle pakketten die toegankelijk zijn met de geroteerde tokens, en de workflow-uitvoeringslogboeken te controleren op verdachte activiteiten, cloudlogboeken te controleren om te controleren of er ongeautoriseerde acties zijn uitgevoerd door IAM-identiteiten waarvan de inloggegevens beschikbaar waren tijdens de gecompromitteerde periode, en uitgaand verkeer naar het C2-domein te blokkeren.