- De kwaadaardige npm-pakketten colortoolsv2 en mimelib2 haalden C2-URL's op uit een Ethereum smart contract om detectie te omzeilen.
- Dankzij on-chain indirection kunnen operators eindpunten roteren zonder pakketten opnieuw te publiceren. Colortoolsv2 is op 7 juli verwijderd, vóór de overstap naar mimelib2.
- Bij een gecoördineerde GitHub-push werden neppe trading-bot-repositories, opgeblazen sterren en gescripte commits gebruikt om de schadelijke afhankelijkheden te maskeren.
- IoC's omvatten pakketversies, SHA1-hashes en het contract 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, plus richtlijnen voor verdedigers.
Dreigingsactoren hebben een nieuwe truc bedacht: ze leiden kwaadaardige infrastructuur via een Ethereum smart contract om command-and-control (C2) pointers te verbergen Gebruikt door npm-pakketten. Volgens ReversingLabs hebben twee pakketten – colortoolsv2 en mimelib2 – in stilte contact gezocht met de blockchain om URL's op te halen voor payloads in de tweede fase, waarmee routinecontroles die zoeken naar hardgecodeerde domeinen werden omzeild.
In plaats van een bug in Ethereum zelf uit te buiten, maakt het plan gebruik van het netwerk als een openbare, veerkrachtige indirecte laagNadat colortoolsv2 op 7 juli op npm werd geblokkeerd, schakelden de operators snel over op mimelib2 met vrijwel identieke logica, waarbij ze voor de volgende stap naar hetzelfde on-chain contract bleven verwijzen.
Van npm-installatie naar on-chain lookup: hoe de omweg werkte

Binnen colortoolsv2 fungeerde een minimale loader (index.js) als een dispatcher die een extern commando aangeroepen en zijn doel opgehaald uit een slim contract in plaats van een lokaal script of statische configuratie. Etherscan toont het contract op 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, waarvan de leesfuncties een URL retourneerden die gebruikt werd om de C2-service te bereiken.
Deze on-chain pointer maakte het blokkeren ingewikkeld: verdedigers konden niet simpelweg vertrouwen op het vinden of op een zwarte lijst zetten van een hardgecodeerd domein in het pakket, omdat de actief eindpunt leefde achter een contract dat door de operators werd beheerdBij roterende bestemmingen hoefde alleen de contractopslag te worden bijgewerkt, het npm-artefact hoefde niet opnieuw te worden gepubliceerd. Al het resulterende blockchainverkeer werd als legitiem gemengd.
Wanneer het tijdens de installatie of runtime werd uitgevoerd, haalde de loader een second-stage component (SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21), die de vervolgactiviteit afhandelde. Door het gedrag van colortoolsv2 na te bootsen, hergebruikte mimelib2 hetzelfde contract voor hetzelfde doel met vrijwel identieke codepaden.
ReversingLabs beschreef de aanpak als ongebruikelijk in het npm-ecosysteem: kwaadaardige URL's werden gehost via de status van een slim contract, niet op traditionele webservices die we vaak zagen in eerdere supply chain-campagnes (bijvoorbeeld cloudopslag of gists).
GitHub rookgordijn: nep-handelsbot-repositories als dekmantel

De npm-pakketten verschenen niet geïsoleerd. Operators zetten een netwerk van GitHub-projecten op, gepresenteerd als crypto-handelshulpprogramma's.repositories zoals solana-trading-bot-v2— en koppelde ze vervolgens aan de kwaadaardige afhankelijkheden. Voor de doorsnee-observator leken deze repositories "levend", met duizenden commits, meerdere beheerders, sterren en watchers.
Bij nadere beschouwing bleek dat een groot deel van de activiteit gescript en oppervlakkig was, inclusief het herhaaldelijke verloop van licentiebestanden en nieuw aangemaakte accounts met beperkte inhoud (sommige zijn rond 10 juli aangemaakt met README-bestanden die zo minimaal waren als "Hello"). Gebruikersnamen die in commitgeschiedenissen voorkwamen, waaronder slunfuedrac, cnaovalles en pasttimerles, kwamen herhaaldelijk voor in de gefaseerde projecten.
Commits lieten precies zien waar de pakketten in de codebase waren opgenomen:colortoolsv2 en later mimelib2 toevoegen als afhankelijkheden in bot.ts, en bijbehorende imports die verschijnen in src/index.ts. Het gefabriceerde sociale bewijs maakte de afhankelijkheidsinvoeging veel minder duidelijk tijdens een oppervlakkige beoordeling.
In feite versterkte de GitHub-façade de vertrouwenssignalen, terwijl de Het echte beslissingspunt voor de volgende zet van de malware bevond zich op EthereumDoor social engineering (GitHub) te scheiden van controle (smart contract), zorgden de beheerders ervoor dat de campagne moeilijker te ontdekken en te verstoren was.
IoC's en concrete stappen voor verdedigers

ReversingLabs publiceerde een gedetailleerde inventaris van artefacten die aan deze activiteit gekoppeld zijn, samen met de belangrijkste on-chain referentie die de tweede fase aanstuurde. De volgende items kunnen worden gebruikt om: jagen, blokkeren en valideren van blootstellingen in build-pipelines en ontwikkelaarswerkstations:
- npm packages: colortoolsv2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215), 1.0.1 (1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b), 1.0.2 (db86351f938a55756061e9b1f4469ff2699e9e27)
- npm packages: mimelib2 1.0.0 (bda31e9022f5994385c26bd8a451acf0cd0b36da), 1.0.1 (c5488b605cf3e9e9ef35da407ea848cf0326fdea)
- Second stage: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
- Smart contract gebruikt voor C2-indirectie: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b
Aanvullende context uit de takedown-fase: colortoolsv2 is op 7 juli uit npm verwijderd, waarna de operators overschakelden naar mimelib2 met dezelfde on-chain referentie en vrijwel identiek loadergedrag.
Aanbevolen acties voor engineering- en beveiligingsteams zijn onder meer: vlag on-chain lookups uitgevoerd door installatiescripts; blokkeren of waarschuwen bij uitvoering van child_process in pakketlevenscyclus-hooks; netwerkuitgang weigeren tijdens npm-installatie in CI; allowlists afdwingen voor registers en beheerders; transitieve versies vergrendelen; en controleren op verzoeken die gekoppeld zijn aan het bovenstaande contractadres.
Beschouw populariteitscijfers van repositories in bredere zin als signalen die niets met beveiliging te maken hebben. Vertrouwen moet voortkomen uit code, artefacten en netwerkindicatoren, niet het aantal sterren, het commit-volume of de aanwezigheid van veel 'beheerders'. Onafhankelijke verificatie – statische analyse, sandbox-uitvoering en SBOM-gestuurde herkomstcontroles – blijft essentieel.
Wat in deze campagne opvalt, is niet een fout in Ethereum, npm of GitHub afzonderlijk, maar de manier waarop openbare infrastructuur kan worden verweven in een heimelijke leveringsketen. het verplaatsen van C2-ontdekking naar een slim contract en het witwassen van geloofwaardigheid via GitHub, de acteurs hebben de traditionele detectie uit zijn voegen gerukt. Zorgvuldige afhankelijkheidshygiëne en gelaagde controles vormen het tegenwicht.
