Meerdere aanvallen op de toeleveringsketen van software hebben het npm-ecosysteem getroffen, waarbij bedreigingsactoren zowel kwaadaardige als vergiftigde versies van meer dan 50 legitieme pakketten gebruiken om respectievelijk een op Rust gebaseerde informatiedief en een zichzelf verspreidende worm te verspreiden.
Volgens JFrog schraapt de informatiedief “elk geheim dat hij op de machine van een ontwikkelaar kan vinden, verschuilt zich achter een eBPF-kernel-rootkit en antwoordt via Tor aan de operator.”
De dief gebruikt de gestolen inloggegevens ook als verspreidingsmechanisme, waardoor overeenkomsten ontstaan met de beruchte Shai-Hulud-worm. De nieuwe malware heeft de codenaam gekregen IJzerWorm door het software supply chain-beveiligingsbedrijf. Door zichzelf in de vorm van getrojaniseerde pakketten naar het npm-register te publiceren, resulteert deze aanpak in een zichzelf replicerende aanval.
De kwaadaardige activiteit is terug te voeren op een gecompromitteerd npm-account met de naam “asteroiddao”, waarvan is vastgesteld dat het pakketversies publiceert die het Rust ELF-binaire bestand bevatten dat wordt uitgevoerd via een pre-install hook.
De malware richt zich op 86 omgevingsvariabelen, verschillende bestanden die inloggegevens kunnen bevatten die verband houden met OpenAI Codex, Anthropic, Claude, Google Gemini, Cursor, Amazon Web Services (AWS), Docker, Kubernetes en npm, kluisconfiguraties en Exodus-portemonneebestanden voor cryptocurrency.
Een ongebruikelijke eigenaardigheid die het vermelden waard is, is dat de dief logica bevat voor de component voor het stelen van portemonneegegevens om de eigen portemonnee van de bedreigingsacteur over te slaan. Op het moment van schrijven is de cryptocurrency-portemonnee leeg en zijn er geen transacties geregistreerd.
JFrog omschreef IronWorm als “een supply chain-wapen dat is gebouwd om geheimen te vinden, projecten aan te passen en kwaadaardige code te injecteren om zichzelf over GitHub te verspreiden.” De kwaadaardige commits, die negen GitHub-organisaties omvatten, zijn geïntroduceerd onder de auteursnaam “claude” (“[email protected]”) in een poging de kunstmatige intelligentie (AI) chatbot van Anthropic na te bootsen.
“Het kwaadaardige npm-pakket is gepubliceerd door asteroiddao; asteroiddao komt overeen met de asteroid-dao GitHub-organisatie; en ocrybit is lid van die organisatie, evenals van gerelateerde Arweave-organisaties”, legt het bedrijf uit.
“De malware stal de inloggegevens van ocrybit en gebruikte deze om commits naar repository’s te pushen waartoe het toegang had. Die commits plaatsten malware in andere pakketten, die vervolgens konden worden gepubliceerd en de volgende ontwikkelaar konden infecteren. En toen verdween het.”
Bovendien is de kwaadaardige payload uitgerust om bestaande GitHub Actions-workflows te vervangen door een workflow die in staat is de geheimen te verzamelen, naar een onschadelijk ogend bestand te schrijven en het als een build-artefact te uploaden, waardoor de noodzaak voor een externe command-and-control (C2)-server wordt geëlimineerd.
De mogelijkheden van de malware houden daar niet op. In CI-omgevingen maakt het misbruik van de Trusted Publishing-stroom van npm om kortstondige tokens te verkrijgen om vergiftigde versies met de malware naar het register te pushen.
Het bevat ook een eBPF-payload die functioneert als een rootkit op kernelniveau om processen te verbergen en analyses te dwarsbomen. Op systemen waarop kernelvergrendeling is ingeschakeld, mislukken de trucs voor het verbergen van processen en worden de veronderstelde processen en sockets weer zichtbaar.
Miasma-worm komt weer boven
De onthulling komt op het moment dat Endor Labs en StepSecurity licht werpen op een afzonderlijke supply chain-aanvalscampagne die 57 npm-pakketten in meer dan 286 kwaadaardige versies heeft aangetast om een nieuwe variant van de Miasma-worm te bedienen, die eerder deze week binnen 72 seconden 32 pakketten in meer dan 90 versies onder de naamruimte @redhat-cloud-services npm infecteerde.
Enkele van de getroffen pakketten worden hieronder vermeld:
- ai-sdk-ollama
- autotel
- wachtend
- effect-analyzer
- eslint-plugin-wachtend
- uitvoerbare verhalen-cipres
- http-uploader-dev
- bergachtig
- knooppunt-env-resolver
- node-env-resolver-aws
De via de malware gestolen gegevens worden geëxfiltreerd naar een nu ontoegankelijk GitHub-account ‘liuende501’, dat fungeerde als exfiltratiepunt. Er waren maar liefst 236 repositories in het account aanwezig. Het is momenteel niet bekend of GitHub het account heeft verwijderd of dat de bedreigingsacteur het zelf heeft verwijderd.
“Deze golf maakt gebruik van een techniek die we ‘Phantom Gyp’ noemen: in plaats van de preinstall of postinstall levenscyclusscripts die beveiligingstools doorgaans monitoren, misbruikt de aanvaller een 157-byte binding.gyp-bestand om code-uitvoering te activeren tijdens npm-installatie, waarbij de meeste install-script-beveiligingscontroles volledig worden omzeild, “zei StepSecurity-onderzoeker Sai Likhith.

Net als in het geval van Miasma is de aanvalsketen ontworpen om de Bun JavaScript-runtime te downloaden en te installeren, en deze te gebruiken om een uitgebreide credential harvester te laden die is toegesneden op het extraheren van geheimen uit AWS, Google Cloud, Microsoft Azure, HashiCorp Vault, Docker, Kubernetes, GitHub Actions, npm, RubyGems, PyPI, SSH, wachtwoordmanagers en AI-assistenten.
“De meest nieuwe en zorgwekkende mogelijkheid van deze variant is dat deze zich richt op AI-coderingsassistentconfiguraties”, aldus het bedrijf. “De malware injecteert persistente backdoor-bestanden in projectopslagplaatsen die worden uitgevoerd wanneer een ontwikkelaar het project opent in zijn AI-ondersteunde IDE.”
Ontwikkelaars die een getroffen versie hebben geïnstalleerd, wordt geadviseerd om inloggegevens te rouleren, installatiescripts en systeemeigen herbouwingen standaard uit te schakelen en ervoor te zorgen dat pakketten worden vastgezet met integriteitshashes.
In een update die deze week werd gedeeld, onthulde Red Hat dat de hoofdoorzaak achter het Miasma supply chain-incident waarschijnlijk een gecompromitteerd GitHub-account was dat werd gebruikt om ongeautoriseerde commits naar repositories in de RedHatInsights GitHub-organisatie te pushen.
“De payload werkte op Linux, macOS en Windows door dynamisch de juiste Bun-runtime voor elk platform te downloaden, hoewel Linux CI/CD-runners het primaire doelwit leken te zijn”, zei Microsoft over de campagne.
“Op ontwikkelaarssystemen stal de malware Secure Shell (SSH)-sleutels, opdrachtregelinterface (CLI), browser- en portemonneegegevens, terwijl het in CI/CD-omgevingen het runner-geheugen van GitHub Actions op zoek ging naar geheimen, privileges escaleerde met behulp van wachtwoordloze sudo, en vergiftigde pakketten met vervalste Supply-chain Levels for Software Artifacts (SLSA)-herkomst opnieuw publiceerde om de voortplanting stroomafwaarts voort te zetten.”
Er wordt aangenomen dat de Miasma-payload een afgeleide is van de Shai-Hulud-worm die door TeamPCP in recente campagnes is gebruikt, waarbij grotendeels “cosmetische” veranderingen worden geïntroduceerd terwijl de onderliggende functionaliteit vergelijkbaar blijft. Ondanks de overlap in vakmanschap blijft de toeschrijving voor de nieuwste reeks aanvallen onduidelijk, aangezien TeamPCP de Shai-Hulud-code publiekelijk heeft vrijgegeven.

OX Security heeft sindsdien extra fasen in de Miasma-aanvalsketen blootgelegd, waaronder zoekopdrachten naar GitHub-commits die de string “firedalazer” bevatten (ter vervanging van de eerder gemarkeerde “FIRESCALE” dead drop) om een andere payload op te halen, een JavaScript-bestand (“index.js”) dat een alternatieve versie van de Shai-Hulud-worm bevat, waardoor de infectie effectief in een eeuwigdurende lus wordt omgezet.
In dit geval worden de gestolen gegevens geëxfiltreerd naar openbare GitHub-opslagplaatsen, die elk de beschrijving “Miasma: The Spreading Blight” of “Miasma – The Spreading Blight” dragen. Het is belangrijk op te merken dat in de vorige versie ‘Miasma: The Spreading Blight’ staat, waarbij er geen spatie staat tussen Miasma en het : -symbool. Er zijn momenteel 82 van dergelijke repository’s gemaakt op gebruikersaccounts “0tabek16” en “windy629”.
“De bedreigingsacteur kan de ‘firedalazer’-commits in GitHub dynamisch veranderen, waardoor nieuwe versies van de malware adaptiever en geavanceerder worden”, aldus beveiligingsonderzoekers Moshe Siman Tov Bustan en Nir Zadok.
“Dit maakt GitHub tot iets gevaarlijkers dan een dode druppel. Het is een adaptieve C2 – een die meelift op een vertrouwd platform dat op de witte lijst staat, waardoor detectie op netwerkniveau vrijwel nutteloos wordt. De meeste beveiligingstools zijn niet geconfigureerd om GitHub-verkeer als verdacht te behandelen. De bedreigingsacteur weet dit.”