{"id":1192,"date":"2026-06-05T19:18:12","date_gmt":"2026-06-05T19:18:12","guid":{"rendered":"https:\/\/thedigitalfortress.us\/?p=1192"},"modified":"2026-06-05T19:18:12","modified_gmt":"2026-06-05T19:18:12","slug":"ironworm-and-new-miasma-worm-variant-hit-npm-in-supply-chain-attacks","status":"publish","type":"post","link":"https:\/\/thedigitalfortress.us\/?p=1192","title":{"rendered":"IronWorm and New Miasma Worm Variant Hit npm in Supply Chain Attacks"},"content":{"rendered":"<div id=\"articlebody\">\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjFimSGBOnvlCj_r6fiLdzK6V8DLTIQYjROKxHgQH8QxyRVIL3NDpQe9lBISjqCSjcZNl6VPhHVFtdJ8gPe2FfNjR9kGND1GSZmgx9T_32_Aii5nf_fMLkmBxwkKrJKbmZpcAG8xyj868aHfZ9RePlwlPDfMbI4uDlOCknlGH62Ifdf-nak6qmy4u-9i7X3\/s1700-e365\/npm-worm.jpg\" style=\"display: block;  text-align: center; clear: left; float: left;\"><\/a><\/div>\n<p>Multiple software supply chain attacks have hit the npm ecosystem, with threat actors using both malicious and poisoned versions of over 50 legitimate packages to distribute a Rust-based information stealer and a self-spreading worm, respectively.<\/p>\n<p>According to <a href=\"https:\/\/research.jfrog.com\/post\/iron-worm-shai-hulud-rustier-cousin\/\">JFrog<\/a>, the information stealer \u00abscrapes every secret it can find on a developer&#8217;s machine, hides behind an eBPF kernel rootkit, and answers to its operator over Tor.\u00bb<\/p>\n<p>The stealer also uses the stolen credentials as a propagation mechanism, drawing similarities to the infamous Shai-Hulud worm. The new malware has been codenamed <b>IronWorm<\/b> by the software supply chain security company. By publishing itself to the npm registry in the form of trojanized packages, the approach results in a self-replicating attack.<\/p>\n<p>The malicious activity has been traced back to a compromised npm account named \u00ab<a href=\"https:\/\/www.npmjs.com\/~asteroiddao\">asteroiddao<\/a>,\u00bb which has been found to publish package versions containing the Rust ELF binary that&#8217;s executed via a preinstall hook.<\/p>\n<p>The malware targets 86 environment variables, various files that may contain credentials associated with OpenAI Codex, Anthropic, Claude, Google Gemini, Cursor, Amazon Web Services (AWS), Docker, Kubernetes, and npm, vault configurations, and Exodus cryptocurrency wallet files.<\/p>\n<p>An unusual quirk worth mentioning here is that the stealer includes logic for the wallet data-stealing component to skip the threat actor&#8217;s own wallet. As of writing, the <a href=\"https:\/\/etherscan.io\/address\/0x7e28D9889f414B06c19a22A9Bd316f0AC279a4d6\">cryptocurrency wallet<\/a> is empty, and no transactions have been recorded.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/ai-cant-stop-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Cybersecurity\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjPEV6-530TOlxG6PjrmdlY623wpBwduZ7t1HV6flcmO5R4q4AmfixDUzW0CrhlvMVNWbhvOIso-UDNTka4W_W9Chrdj_dglwBZwi7DuePM2IMIl-hfUYVIqBXgfpr_2619K8Gptb4LzwJ6gUbi7lWl2M8AFQJsHEaw63Q7tZ6708YGruiHrr0Y2W9YYxLQ\/s728-e100\/ThreatLocker-d.png\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>JFrog described IronWorm as \u00aba supply chain weapon built to find secrets, modify projects, and inject malicious code to self-propagate across GitHub.\u00bb The malicious commits, which span nine GitHub organizations, have been introduced under the author name \u00abclaude\u00bb (\u00abclaude@users.noreply.github.com\u00bb) in an attempt to mimic Anthropic&#8217;s artificial intelligence (AI) chatbot.<\/p>\n<p><a name=\"more\"\/><\/p>\n<p>\u00abThe malicious npm package was published by asteroiddao; asteroiddao corresponds to the asteroid-dao GitHub organization; and ocrybit is a member of that organization, as well as related Arweave organizations,\u00bb the company explained.<\/p>\n<p>\u00abThe malware stole ocrybit&#8217;s credentials and used them to push commits across repositories it could access. Those commits planted malware into other packages, which could then be published and infect the next developer. And then it vanished.\u00bb<\/p>\n<p>What&#8217;s more, the malicious payload is equipped to swap existing GitHub Actions workflows for one that&#8217;s capable of harvesting the secrets, writing it to a harmless-looking file, and uploading it as a build artifact, thereby eliminating the need for an external command-and-control (C2) server.<\/p>\n<p>The malware&#8217;s capabilities don&#8217;t end there. In CI environments, it abuses npm&#8217;s Trusted Publishing flow to obtain short-lived tokens to push poisoned versions containing the malware to the registry.<\/p>\n<p>It also incorporates an eBPF payload that functions as a kernel-level rootkit to hide processes and thwart analysis. However, on systems where kernel lockdown is enabled, the process-hiding tricks fail, and the supposed processes and sockets become visible again.<\/p>\n<h3>Miasma Worm Surfaces Again<\/h3>\n<p>The disclosure comes as <a href=\"https:\/\/www.endorlabs.com\/learn\/malicious-payload-in-ai-sdk-ollama-npm-package\">Endor Labs<\/a> and <a href=\"https:\/\/www.stepsecurity.io\/blog\/binding-gyp-npm-supply-chain-attack-spreads-like-worm\">StepSecurity<\/a> shed light on a distinct supply chain attack campaign that has compromised 57 npm packages across more than 286 malicious versions to serve a new variant of the Miasma worm, which previously infected 32 packages across more than 90 versions under the @redhat-cloud-services npm namespace within 72 seconds earlier this week.<\/p>\n<p>Some of the affected packages are listed below &#8211;<\/p>\n<ul>\n<li>ai-sdk-ollama<\/li>\n<li>autotel<\/li>\n<li>awaitly<\/li>\n<li>effect-analyzer<\/li>\n<li>eslint-plugin-awaitly<\/li>\n<li>executable-stories-cypress<\/li>\n<li>http-uploader-dev<\/li>\n<li>mountly<\/li>\n<li>node-env-resolver<\/li>\n<li>node-env-resolver-aws<\/li>\n<\/ul>\n<p>The data stolen via the malware is exfiltrated to a now-inaccessible GitHub account \u00ab<a href=\"https:\/\/github.com\/liuende501\">liuende501<\/a>,\u00bb which acted as an exfiltration point. As many as 236 repositories were staged in the account. It&#8217;s presently not known if GitHub removed the account or if the threat actor themselves deleted it.<\/p>\n<p>\u00abThis wave uses a technique we are calling &#8216;Phantom Gyp&#8217;: instead of the preinstall or postinstall lifecycle scripts that security tools typically monitor, the attacker abuses a 157-byte binding.gyp file to trigger code execution during npm install, bypassing most install-script security checks entirely,\u00bb StepSecurity researcher Sai Likhith said.<\/p>\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgEVTEn7yrCQwrZdOghWj24HQ6yzk_u6TeVRJEbGouzcTkqjvu_raIVSGdk00s4qp39ScQCtNijRvYFe4t5d-aWvS0vN6GRoBrlPBemyGkxBMCzcvJmBxh6guowPj8l9_6zIcCmvEhbqa5jZbdKIPHLLPyM8gYseFVtyUgPT4HU2e7RxxTufLjbattTrp42\/s1700-e365\/cloud.png\" style=\"clear: left; display: block; float: left;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgEVTEn7yrCQwrZdOghWj24HQ6yzk_u6TeVRJEbGouzcTkqjvu_raIVSGdk00s4qp39ScQCtNijRvYFe4t5d-aWvS0vN6GRoBrlPBemyGkxBMCzcvJmBxh6guowPj8l9_6zIcCmvEhbqa5jZbdKIPHLLPyM8gYseFVtyUgPT4HU2e7RxxTufLjbattTrp42\/s1700-e365\/cloud.png\" alt=\"\" border=\"0\" data-original-height=\"1988\" data-original-width=\"1914\"\/><\/a><\/div>\n<p>Like in the case of <a href=\"https:\/\/orca.security\/resources\/blog\/red-hat-npm-supply-chain-attack\/\">Miasma<\/a>, the attack chain is engineered to download and install the Bun JavaScript runtime, using it to load a comprehensive credential harvester that&#8217;s tailored to extract secrets from AWS, Google Cloud, Microsoft Azure, HashiCorp Vault, Docker, Kubernetes, GitHub Actions, npm, RubyGems, PyPI, SSH, password managers, and AI assistants.<\/p>\n<p>\u00abThe most novel and concerning capability of this variant is its targeting of AI coding assistant configurations,\u00bb the company said. \u00abThe malware injects persistent backdoor files into project repositories that execute whenever a developer opens the project in their AI-assisted IDE.\u00bb<\/p>\n<p>Developers who have installed an affected version are advised to rotate credentials, turn off install scripts and native rebuilds by default, and ensure packages are pinned with integrity hashes.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/vpn-threat-report-m\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Cybersecurity\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhFlTC7RrRZGiFAgASS0noWSL0qsQGFVp8-Hvuw9yp3X3VKRuTcb5SsPX09wJzrdIM6pu1_5lS4EeZp7Sx4iYBpNJkrGnpr08yyaS1HQ5_5TxaCsP6O0OtHNuOkesn6CbNjao1GPulCJk-uljYMSfMZfBYNrngpe669t7jlRn1FqiEnXhsFD1WVkpaYIVgh\/s728-e100\/ai-d.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>In an update shared this week, Red Hat <a href=\"https:\/\/access.redhat.com\/security\/vulnerabilities\/RHSB-2026-006\">revealed<\/a> that the root cause behind the Miasma supply chain incident was likely a compromised GitHub account that was used to push unauthorized commits to repositories in the RedHatInsights GitHub organization.<\/p>\n<p>\u00abThe payload operated across Linux, macOS, and Windows by dynamically downloading the correct Bun runtime for each platform, although Linux CI\/CD runners appeared to be the primary target,\u00bb Microsoft <a href=\"https:\/\/www.microsoft.com\/en-us\/security\/blog\/2026\/06\/02\/preinstall-persistence-inside-red-hat-npm-miasma-credential-stealing-campaign\/\">said<\/a> of the campaign.<\/p>\n<p>\u00abOn developer systems, the malware stole Secure Shell (SSH) keys, command-line interface (CLI) credentials, browser and wallet data, while in CI\/CD environments it scraped GitHub Actions runner memory for secrets, escalated privileges using passwordless sudo, and republished poisoned packages with forged Supply-chain Levels for Software Artifacts (SLSA) provenance to continue downstream propagation.\u00bb<\/p>\n<p>The Miasma payload is assessed to be a derivative of the Shai-Hulud worm put to use by <a href=\"https:\/\/www.tenable.com\/blog\/mini-shai-hulud-frequently-asked-questions\">TeamPCP<\/a> in recent campaigns, introducing largely \u00abcosmetic\u00bb changes while keeping the underlying functionality similar. Despite the overlap in tradecraft, the attribution for the latest set of attacks remains unclear, given that TeamPCP has publicly released the Shai-Hulud code.<\/p>\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiHYc5nLGTefQeUXuQRs_bHp8p2DB4kZ5I7R5BJ4VEcTLb-1y-fE9AvvhyYnIdsg7_dIssGX97IYJlu2NN_1ZmrX04yE2gDVwLHr9fg3D28Ucvn-QDtbsLnPjyl05YH9HgEfhlhyTAz1fMHC6N6oEo1VpXpPlnk-x7GCJNja1qhwQ3VgMLbHZ7H-rv5oiFx\/s1700-e365\/0x-npm.jpg\" style=\"clear: left; display: block; float: left;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiHYc5nLGTefQeUXuQRs_bHp8p2DB4kZ5I7R5BJ4VEcTLb-1y-fE9AvvhyYnIdsg7_dIssGX97IYJlu2NN_1ZmrX04yE2gDVwLHr9fg3D28Ucvn-QDtbsLnPjyl05YH9HgEfhlhyTAz1fMHC6N6oEo1VpXpPlnk-x7GCJNja1qhwQ3VgMLbHZ7H-rv5oiFx\/s1700-e365\/0x-npm.jpg\" alt=\"\" border=\"0\" data-original-height=\"1894\" data-original-width=\"2048\"\/><\/a><\/div>\n<p>OX Security has since uncovered additional stages in the Miasma attack chain, including searches for GitHub commits containing the string \u00abfiredalazer\u00bb (replacing the previously flagged \u00abFIRESCALE\u00bb dead drop) to retrieve another payload, a JavaScript file (\u00abindex.js\u00bb) that contains an alternative version of the Shai-Hulud worm, effectively transforming the infection into a perpetual loop.<\/p>\n<p>In this case, the stolen data is exfiltrated to public GitHub repositories, each carrying the description \u00abMiasma: The Spreading Blight\u00bb or \u00abMiasma &#8211; The Spreading Blight.\u00bb It&#8217;s important to note here that the previous version reads \u00abMiasma: The Spreading Blight,\u00bb which does not have a space between Miasma and the \u00ab:\u00bb symbol. There are <a href=\"https:\/\/github.com\/search?q=%22Miasma+%3A+The+Spreading+Blight%22&amp;type=repositories\">currently 82 such repositories<\/a> created on user accounts \u00ab0tabek16\u00bb and \u00abwindy629.\u00bb<\/p>\n<p>\u00abThe threat actor can dynamically change the &#8216;firedalazer&#8217; commits in GitHub, making new versions of the malware, more adaptive and more sophisticated,\u00bb security researchers Moshe Siman Tov Bustan and Nir Zadok <a href=\"https:\/\/www.ox.security\/blog\/six-stages-deep-and-an-endless-loop-shai-hulud-is-getting-sophisticated\/\">said<\/a>.<\/p>\n<p>\u00abThis turns GitHub into something more dangerous than a dead drop. It&#8217;s an adaptive C2 &#8211; one that piggybacks on a trusted, widely whitelisted platform, making network-level detection nearly useless. Most security tools aren&#8217;t configured to treat GitHub traffic as suspicious. The threat actor knows this.\u00bb<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Multiple software supply chain attacks have hit the npm ecosystem, with threat actors using both malicious and poisoned versions of over 50 legitimate packages to distribute a Rust-based information stealer&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1193,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[24,219,434,1935,1856,39,218,664,821],"class_list":["post-1192","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-attacks","tag-chain","tag-hit","tag-ironworm","tag-miasma","tag-npm","tag-supply","tag-variant","tag-worm"],"_links":{"self":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts\/1192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1192"}],"version-history":[{"count":0,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts\/1192\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/media\/1193"}],"wp:attachment":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}