{"id":13590,"date":"2026-06-13T10:03:58","date_gmt":"2026-06-13T10:03:58","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/06\/13\/malicious-npm-campaign-steals-ssh-keys-api-tokens-cloud-credentials-and-wallet-secrets\/"},"modified":"2026-06-13T10:03:58","modified_gmt":"2026-06-13T10:03:58","slug":"malicious-npm-campaign-steals-ssh-keys-api-tokens-cloud-credentials-and-wallet-secrets","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/06\/13\/malicious-npm-campaign-steals-ssh-keys-api-tokens-cloud-credentials-and-wallet-secrets\/","title":{"rendered":"Malicious npm Campaign Steals SSH Keys, API Tokens, Cloud Credentials, and Wallet Secrets"},"content":{"rendered":"<p>    Malicious npm Campaign Steals SSH Keys, API Tokens, Cloud Credentials, and Wallet Secrets<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p class=\"wp-block-paragraph\">A fresh wave of supply chain attacks is putting blockchain developers, Web3 teams, and cloud engineers at serious risk. <\/p>\n<p class=\"wp-block-paragraph\">Researchers have uncovered a coordinated campaign involving multiple malicious packages on the npm registry, each designed to quietly steal sensitive secrets the moment a developer installs them. <\/p>\n<p class=\"wp-block-paragraph\">From SSH private keys to cloud credentials, wallet phrases to API tokens, this campaign leaves almost no secret untouched.<\/p>\n<p class=\"wp-block-paragraph\">What makes this effort particularly alarming is its scale. One package at the center of the investigation, moralis-sdk, had accumulated more than 2.7 million downloads by the time researchers flagged it. <\/p>\n<p class=\"wp-block-paragraph\">That reach means the <a href=\"https:\/\/cybersecuritynews.com\/hackers-leveraging-emoji-code\/\" id=\"143104\" target=\"_blank\" rel=\"noreferrer noopener\">malicious code may have already touched thousands of developer workstations<\/a>, CI\/CD pipelines, and cloud environments without anyone realizing it.<\/p>\n<p class=\"wp-block-paragraph\">Analysts at\u00a0Cyfirma\u00a0identified the campaign after spotting two suspicious packages, ethers-jss and coinbase-wallet-utils, both built to impersonate legitimate Ethereum development tools. <\/p>\n<p class=\"wp-block-paragraph\">Through deeper investigation, they linked eleven highly suspicious npm packages to the same operation, as the <a href=\"https:\/\/www.cyfirma.com\/research\/new-npm-supply-chain-campaign-identified-a-multi-stage-cryptocurrency-malware-with-more-than-2-7-million-downloads\/\" id=\"https:\/\/www.cyfirma.com\/research\/new-npm-supply-chain-campaign-identified-a-multi-stage-cryptocurrency-malware-with-more-than-2-7-million-downloads\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">researchers at Cyfirma said in a report<\/a> shared with Cyber Security News (CSN).<\/p>\n<p class=\"wp-block-paragraph\">The packages were not all built the same way. Cyfirma\u2019s research revealed four distinct operational clusters, each targeting developers through a different method. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhH6ans6HgxSJ_Lao_3BWbpfw3tItt0BgwPwXGZH7MlL7QJg0ithyPWOG-w4YSC5DEPRilWwjWu9dpFSHtzpigOh-FIAWQT3gzyNcSpHsTjSs0kviZL34sPvw7-gpUgDwiydhF1U5pSgTJ2NEjcGOXuQ5EbZndBJzp8NVBs1YE9x6VhALQmIrL37HWdEcc\/s16000\/System%2520Reconnaissance%2520%26%2520Data%2520Exfiltration%2520%28Source%2520-%2520Cyfirma%29.webp?ssl=1\" alt=\"System Reconnaissance &amp; Data Exfiltration (Source - Cyfirma)\"><figcaption class=\"wp-element-caption\">System Reconnaissance &amp; Data Exfiltration (Source \u2013 Cyfirma)<\/figcaption><\/figure>\n<\/div>\n<p class=\"wp-block-paragraph\">Some abused npm lifecycle hooks to auto-execute malicious code during install, while others relied on obfuscated loaders and Ethereum smart contracts to retrieve command-and-control addresses without hard-coding anything obvious.<\/p>\n<p class=\"wp-block-paragraph\">Together, these packages recorded more than 2.72 million combined downloads, making this one of the more impactful npm supply chain campaigns seen recently. <\/p>\n<p class=\"wp-block-paragraph\">Active download activity during the investigation confirmed that several packages were still reaching new victims even after discovery.<\/p>\n<h2 id=\"h-malicious-npm-campaign\" class=\"wp-block-heading\"><strong>Malicious npm Campaign<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">The infection method was deceptively simple. Each package used npm lifecycle scripts, either preinstall or postinstall hooks, to trigger malicious code the moment a developer ran an install command. No extra steps were needed on the victim\u2019s side.<\/p>\n<p class=\"wp-block-paragraph\">The ethers-jss package acted as a malicious wrapper around the real ethers library. Once installed, it intercepted wallet creation and recovery functions to capture private keys and mnemonic phrases, sending them to an attacker-controlled server on GitHub Codespaces. <\/p>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/cybersecuritynews.com\/hackers-publish-malicious-python-package\/\" id=\"152054\" target=\"_blank\" rel=\"noreferrer noopener\">It also included a Python script named docker_hunter.py<\/a>, which performed OSINT-style lookups on Docker Hub repositories tied to blockchain tools.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhE6aSIhGgpk3TiWlqws105KM2aqEICEGYVQQ9upguRwnC8LgWxpTnYhXpUAMQtuHAWrjIbk7h8VxTwQGasNfsze8fciklb7tTj7i2ng0V7n_dWrQfkechQT7pWmSKuEe47qymsZAp4QF8bOJ4uNYrXTR0XLAU6Wfmk3dMeb2PGfimZKQlql72P2WlLpAU\/s16000\/Command-and-Control%2520%28C2%29%2520Configuration%2520%28Source%2520-%2520Cyfirma%29.webp?ssl=1\" alt=\"Command-and-Control (C2) Configuration (Source - Cyfirma)\"><figcaption class=\"wp-element-caption\">Command-and-Control (C2) Configuration (Source \u2013 Cyfirma)<\/figcaption><\/figure>\n<\/div>\n<p class=\"wp-block-paragraph\">The coinbase-wallet-utils package focused on reconnaissance, collecting the victim\u2019s hostname, username, environment variables, and working directory, then exfiltrating everything silently using curl. <\/p>\n<p class=\"wp-block-paragraph\">A separate cluster of five packages published by the npm user ethcompat went further, encrypting stolen credentials with AES-256-GCM and embedding them inside Ethereum blockchain transactions sent to an attacker-controlled wallet, turning the victim\u2019s own wallet into the exfiltration channel.<\/p>\n<p class=\"wp-block-paragraph\">The moralis-sdk package was particularly crafty. It started as a clean copy of the legitimate Moralis SDK in October 2025, then was weaponized through an update that added a heavily obfuscated postinstall.js file. <\/p>\n<p class=\"wp-block-paragraph\">That file used a YouTube page as a remote activation switch and only delivered its payload if a hidden marker was found, giving the attacker remote control over when the malware activated.<\/p>\n<h2 id=\"h-blockchain-infrastructure-and-attribution-clues\" class=\"wp-block-heading\"><strong>Blockchain Infrastructure and Attribution Clues<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Three typosquatting packages, ganach, solidty, and stelar-sdk, added another layer of innovation. Instead of hard-coding a server address, these packages queried an Ethereum smart contract to retrieve infrastructure details dynamically. <\/p>\n<p class=\"wp-block-paragraph\">The malware then downloaded platform-specific binaries for Windows, Linux, or macOS depending on the victim\u2019s system.<\/p>\n<p class=\"wp-block-paragraph\">Researchers also found several attribution hints. The accounts used to publish the packages had randomly generated names, a common tactic to avoid being traced. <\/p>\n<p class=\"wp-block-paragraph\">Deobfuscated code contained Russian-language comments and variable names, pointing to a financially motivated actor with experience in cryptocurrency-related cybercrime, though no specific group was formally named.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjYK6WhsOD1CeJt3bluNhuLHd5NggQVzJh6TaiMNuKEHBnkAcqzNodO-3746Jz1kzZycHcNAquC1m-N-Aa02YjsLq5TNWMQtQhA1FN5sgrtwhP248BY8m0L0LFtvnKeaZhL48DPDDHwGEDLsmZRqkezqlTrKdVSuNCiNamyFs8iInSNiLJ1QkaRQK65i8Q\/s16000\/Cryptocurrency%2520Wallet%2520Hijacking%2520Logic%2520%28Source%2520-%2520Cyfirma%29.webp?ssl=1\" alt=\"Cryptocurrency Wallet Hijacking Logic (Source - Cyfirma)\"><figcaption class=\"wp-element-caption\">Cryptocurrency Wallet Hijacking Logic (Source \u2013 Cyfirma)<\/figcaption><\/figure>\n<\/div>\n<p class=\"wp-block-paragraph\">Cyfirma recommends running installs with the flag npm install \u2013ignore-scripts to block automatic script execution. <\/p>\n<p class=\"wp-block-paragraph\">Organizations should also deploy <a href=\"https:\/\/cybersecuritynews.com\/analyzing-malwares-network-traffic\/\" id=\"83517\" target=\"_blank\" rel=\"noreferrer noopener\">Software Composition Analysis tools<\/a>, avoid storing private keys or seed phrases in plaintext, and rotate any exposed credentials immediately. <\/p>\n<p class=\"wp-block-paragraph\">Developers in Web3 environments should verify publisher identity, download history, and repository ownership before adding any unfamiliar package to their project.<\/p>\n<h2 id=\"h-indicators-of-compromise-iocs\" class=\"wp-block-heading\"><strong>Indicators of Compromise (IoCs):-<\/strong><\/h2>\n<figure class=\"wp-block-table\">\n<table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th class=\"has-text-align-left\" data-align=\"left\">#<\/th>\n<th class=\"has-text-align-left\" data-align=\"left\">Type<\/th>\n<th class=\"has-text-align-left\" data-align=\"left\">Indicator<\/th>\n<th class=\"has-text-align-left\" data-align=\"left\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>SHA1<\/td>\n<td>53b91117db931d3acbbfd15aa8400bb6691e023d<\/td>\n<td>ethers-jss package archive<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>SHA256<\/td>\n<td>d94a2444268b339dfda2615f7800322fb318e0a484414bb17016cfcd5eb07c44<\/td>\n<td>ethers-jss package archive<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>SHA1<\/td>\n<td>63154cd9c79f9d14eb9be6c4efc2a778d31646ec<\/td>\n<td>coinbase-wallet-utils package archive<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>SHA256<\/td>\n<td>6585ca0d3e26c20ced638f46f4a89eea924d411b8753d3fcf434663593c7cf0b<\/td>\n<td>coinbase-wallet-utils package archive<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>SHA1<\/td>\n<td>74d3d5ab6d0fa4c6a5860598231728a6a893ecf7<\/td>\n<td>moralis-sdk v1.0.1 package archive<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>SHA256<\/td>\n<td>17bad5ae5b2ac262f5f18854853869840245c344105aa38c7f550ef51d2e5f26<\/td>\n<td>moralis-sdk v1.0.1 package archive<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>SHA1<\/td>\n<td>fcc8a542aad41e758cf6c18571048890be53808e<\/td>\n<td>ganach package archive<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>SHA256<\/td>\n<td>7269c00a6164fd01dd516e0a72b2bd84c82e78feb552e06964e4992ff0479dda<\/td>\n<td>ganach package archive<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>SHA1<\/td>\n<td>70842cfc27b116d0db2fd7aa33d53a3faf510993<\/td>\n<td>solidty package archive<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>SHA256<\/td>\n<td>e848d73a68e4e8aea00a6257552b5872907dfaf7cce3d94636d7e59d286edeab<\/td>\n<td>solidty package archive<\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>SHA1<\/td>\n<td>e1bdcd1a7157f7d047a88ab4573723fe1e861951<\/td>\n<td>stelar-sdk package archive<\/td>\n<\/tr>\n<tr>\n<td>12<\/td>\n<td>SHA256<\/td>\n<td>2fa5b0475c3b70a3ba14c6a3938baf441a08b11841493b85e087d1d5e01eba49<\/td>\n<td>stelar-sdk package archive<\/td>\n<\/tr>\n<tr>\n<td>13<\/td>\n<td>SHA256<\/td>\n<td>d6abc7003b580472d808b338adef0b28eacc698cd4692f76cb2a91718ab78d88<\/td>\n<td>hardhat-deploy-utils package archive<\/td>\n<\/tr>\n<tr>\n<td>14<\/td>\n<td>SHA256<\/td>\n<td>bab96257018df49ace8fe8adfadc74cf8327fcf9a9dc8a3a7c9ac8e18881df5f<\/td>\n<td>web3-deploy-helper package archive<\/td>\n<\/tr>\n<tr>\n<td>15<\/td>\n<td>SHA256<\/td>\n<td>d7ec660a2a29c1aabcbe9bff1ef29be9a9fab8c7fe7c40df4772dd2b5bdf9666<\/td>\n<td>defi-sdk-core package archive<\/td>\n<\/tr>\n<tr>\n<td>16<\/td>\n<td>SHA256<\/td>\n<td>5c50f79038b31aa8a3a68b24d8b783dfbd2e15fff7586c5609e544a717ef7d05<\/td>\n<td>ethers-compat package archive<\/td>\n<\/tr>\n<tr>\n<td>17<\/td>\n<td>SHA256<\/td>\n<td>feabf10c8a9ba2775bb0f7f9d0b20203112b7df8e6d333a44d5a11eae0e38e86<\/td>\n<td>ethereum-dev-utils package archive<\/td>\n<\/tr>\n<tr>\n<td>18<\/td>\n<td>URL<\/td>\n<td>pastefy.app\/RhPBKGli\/raw<\/td>\n<td>Base64-encoded PowerShell payload hosting location<\/td>\n<\/tr>\n<tr>\n<td>19<\/td>\n<td>IP:Port<\/td>\n<td>193[.]233[.]201[.]21:3001<\/td>\n<td>Remote payload distribution server retrieved via blockchain mechanism<\/td>\n<\/tr>\n<tr>\n<td>20<\/td>\n<td>Ethereum Smart Contract<\/td>\n<td>0xa1b40044EBc2794f207D45143Bd82a1B86156c6b<\/td>\n<td>Used by malware to retrieve dynamic infrastructure information<\/td>\n<\/tr>\n<tr>\n<td>21<\/td>\n<td>Ethereum Wallet Address<\/td>\n<td>0x52221c293a21D8CA7AFD01Ac6bFAC7175D590A84<\/td>\n<td>Queried by the smart contract lookup mechanism to obtain C2 configuration<\/td>\n<\/tr>\n<tr>\n<td>22<\/td>\n<td>Ethereum Wallet Address<\/td>\n<td>0xCBbecC5E5Eb88582e6305cF6ab688f03e02Ce16f<\/td>\n<td>Attacker-controlled wallet used to receive exfiltrated credential transactions<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong>\u00a0<em>IP addresses and domains are intentionally defanged (e.g.,\u00a0<\/em><code><em>[.]<\/em><\/code><em>) to prevent accidental resolution or hyperlinking. Re-fang only within controlled threat intelligence platforms such as MISP, VirusTotal, or your SIEM<\/em>.<\/p>\n<p class=\"has-text-align-center has-background wp-block-paragraph\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 90%,rgb(169,184,195) 100%)\"><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Follow us on\u00a0<a href=\"https:\/\/news.google.com\/publications\/CAAqMggKIixDQklTR3dnTWFoY0tGV041WW1WeWMyVmpkWEpwZEhsdVpYZHpMbU52YlNnQVAB?hl=en-IN&amp;gl=IN&amp;ceid=IN:en\" target=\"_blank\" rel=\"noreferrer noopener\">Google News<\/a>,\u00a0<a href=\"https:\/\/www.linkedin.com\/company\/cybersecurity-news\/\" target=\"_blank\" rel=\"noreferrer noopener\">LinkedIn<\/a>,\u00a0and\u00a0<a href=\"https:\/\/x.com\/cyber_press_org\" target=\"_blank\" rel=\"noreferrer noopener\">X<\/a>\u00a0to Get More Instant Updates<\/strong>,\u00a0<strong>Set CSN as a Preferred Source in<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong> <strong><strong><a href=\"https:\/\/www.google.com\/preferences\/source?q=cybersecuritynews.com\" target=\"_blank\" rel=\"noreferrer noopener\">Google<\/a><\/strong><\/strong>.<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p>The post <a href=\"https:\/\/cybersecuritynews.com\/malicious-npm-campaign-steals-ssh-keys-api-tokens\/\">Malicious npm Campaign Steals SSH Keys, API Tokens, Cloud Credentials, and Wallet Secrets<\/a> appeared first on <a href=\"https:\/\/cybersecuritynews.com\/\">Cyber Security News<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Tushar Subhra Dutta<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/cybersecuritynews.com\/malicious-npm-campaign-steals-ssh-keys-api-tokens\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Malicious npm Campaign Steals SSH Keys, API Tokens, Cloud Credentials, and Wallet Secrets A fresh wave of supply chain attacks is putting blockchain developers, Web3 teams, and cloud engineers at serious risk. Researchers have uncovered a coordinated campaign involving multiple malicious packages on the npm registry, each designed to quietly steal sensitive secrets the moment [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,63,649],"tags":[130],"class_list":["post-13590","post","type-post","status-publish","format-standard","hentry","category-cyber-security","category-cyber-security-news","category-threats","tag-cyber-security-news"],"_links":{"self":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/13590"}],"collection":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/comments?post=13590"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/13590\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=13590"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=13590"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=13590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}