{"id":11626,"date":"2026-03-26T10:03:46","date_gmt":"2026-03-26T10:03:46","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/03\/26\/fake-npm-install-messages-hide-rat-malware-in-new-open-source-supply-chain-campaign\/"},"modified":"2026-03-26T10:03:46","modified_gmt":"2026-03-26T10:03:46","slug":"fake-npm-install-messages-hide-rat-malware-in-new-open-source-supply-chain-campaign","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/03\/26\/fake-npm-install-messages-hide-rat-malware-in-new-open-source-supply-chain-campaign\/","title":{"rendered":"Fake npm Install Messages Hide RAT Malware in New Open Source Supply Chain Campaign"},"content":{"rendered":"<p>    Fake npm Install Messages Hide RAT Malware in New Open Source Supply Chain Campaign<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>A new and carefully crafted software supply chain campaign is targeting developers through the npm package registry, using fake installation messages to hide malicious activity. <\/p>\n<p>The campaign, which security researchers have named the \u201cGhost campaign,\u201d began in early February 2026 and relies on a set of npm packages built to deceive developers into surrendering their system credentials while secretly deploying a remote access trojan (RAT) on their machines.<\/p>\n<p>The attack starts the moment a developer installs one of the rogue packages. Rather than triggering any suspicion, the package generates what looks like a normal npm installation \u2014 printing log messages, showing a progress bar, and inserting random delays to make the process feel realistic. <\/p>\n<p>None of the packages it claims to download actually exist, and the names shown on screen are randomly pulled from a hardcoded list. This layer of deception makes it hard for even an experienced developer to notice that something is wrong.<a href=\"https:\/\/www.reversinglabs.com\/blog\/npm-fake-install-logs-rat\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/p>\n<p><a href=\"https:\/\/www.reversinglabs.com\/blog\/npm-fake-install-logs-rat\" id=\"https:\/\/www.reversinglabs.com\/blog\/npm-fake-install-logs-rat\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">ReversingLabs analysts identified the malicious activity<\/a> in early February 2026, tracing it back to seven packages all published by an npm user operating under the handle \u201cmikilanjillo.\u201d <\/p>\n<p>The packages flagged include react-performance-suite, react-state-optimizer-core, react-fast-utilsa, ai-fast-auto-trader, pkgnewfefame1, carbon-mac-copy-cloner, and coinbase-desktop-sdk. <\/p>\n<p>Researchers noted that the use of fake installation logs to mask malicious behavior was a novel technique, representing a clear shift in how threat actors work to stay undetected inside open-source ecosystems.<\/p>\n<p>The final stage of the attack drops a RAT designed to steal <a href=\"https:\/\/cybersecuritynews.com\/cryptocore-cryptocurrency-scam-draining-wallets\/\" id=\"74531\" target=\"_blank\" rel=\"noreferrer noopener\">cryptocurrency wallets<\/a>, harvest sensitive data, and receive remote commands from an attacker-controlled server. <\/p>\n<p>Payload URLs and decryption keys are fetched from a Telegram channel, or in the case of the coinbase-desktop-sdk package, from a web3 post on teletype.in made to look like blockchain documentation. <\/p>\n<p>Once the malware is running, it operates silently in the background, giving attackers persistent and largely invisible access to the compromised system.<\/p>\n<p>The scope of this campaign stretches beyond the seven packages first identified. In March 2026, JFrog documented a related cluster it called GhostClaw, which shares both techniques and infrastructure similarities with what ReversingLabs found. <\/p>\n<p>Analysis from Jamf Threat Labs further showed that the campaign spreads through GitHub repositories posing as legitimate developer tools such as trading bots and SDKs. <\/p>\n<p>These repositories are seeded with clean code and left inactive for long periods to build user trust before malicious components are introduced.<\/p>\n<h2 class=\"wp-block-heading\" id=\"infection-mechanism-fake-logs-and-sudo-phishing\"><strong>Infection Mechanism: Fake Logs and Sudo Phishing<\/strong><\/h2>\n<p>The most deceptive element of this campaign is how the packages trick developers into giving up their sudo password. <\/p>\n<p>During the fake installation, the package outputs an error stating that it cannot install certain dependencies due to missing write permissions to\u00a0<code>\/usr\/local\/lib\/node_modules<\/code>\u00a0\u2014 the standard global package directory on Linux and <a href=\"https:\/\/cybersecuritynews.com\/unpatched-macos-vulnerability-let-hackers-take-over-the-apple-systems-remotely\/\" id=\"7661\" target=\"_blank\" rel=\"noreferrer noopener\">macOS systems<\/a>. <\/p>\n<p>The developer is then prompted to enter their root password to resolve the issue and allow the installation to finish.\u00a0<\/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\/AVvXsEhUaXVejckDyjXHY99UFx43oWOd8hGGx6WU8QeVTlEXQpJf5N-0Nr-1rhzAqZLcja5zqhNCdeDNN1jDXLGtIRUYY5i3lkqX8Rn67fjl9dwSsu1gmKph99Qm_NCAebT-do_t9AgWvWAbiXp1jCSFtC_Wezrwx4ssDZr_1heF-TSj2ffYMSNXsVE1oXh77UQ\/s16000\/Fake%2520npm%2520install%2520logs%2520%28Source%2520-%2520ReversingLabs%29.webp?ssl=1\" alt=\"Fake npm install logs (Source - ReversingLabs)\"><figcaption class=\"wp-element-caption\">Fake npm install logs (Source \u2013 ReversingLabs)<\/figcaption><\/figure>\n<\/div>\n<p>This works because permission errors during npm installs are common, and the request for a password feels entirely expected in that context.<\/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\/AVvXsEhBTDx8G_uGZ9BXWv_47gWXUBz97W0R5AyEDBXqap15njO-_Eoi3hKequxwqe6NWBObHK0_6FS_opG5Srv9DU23jBRU3o9L1TKiCUbjqBufHuu5keIdM03gsuaoKmyeFrhWfROFmxcS8pw9SKoeUvTu79SpzivB1jrVSweT0quqQIftKeNQGwnzaxRektY\/s16000\/sudo%2520password%2520prompt%2520%28Source%2520-%2520ReversingLabs%29.webp?ssl=1\" alt=\"sudo password prompt (Source - ReversingLabs)\"><figcaption class=\"wp-element-caption\">sudo password prompt (Source \u2013 ReversingLabs)<\/figcaption><\/figure>\n<\/div>\n<p>As soon as the password is entered and confirmed, the malware\u2019s downloader runs silently while fake log output keeps scrolling to mask the activity.<a href=\"https:\/\/www.reversinglabs.com\/blog\/npm-fake-install-logs-rat\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/p>\n<p>The downloader then contacts a Telegram channel to pull the final payload URL and its decryption key.\u00a0<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg-vB1LMOFvPX5WvFjqDyhIQ9HxspzPRk8ESQUc0yptdqBUQXLI15ohu-QXjm0EhjSImb0m7p3FnIewkcunnQJdf7Ew7H5gcNvHMQhikjPKlWqLfPwwEaGfQJn1EXjF0gNIBdJ_zLtvxkpIE2er3tc2fpBMeKgcf6YqtWIMLgUXe0wuS33vVdmaX8SoBWU\/s16000\/Telegram%2520channel%2520from%2520which%2520key%2520and%2520final%2520stage%2520URL%2520are%2520downloaded%2520%28Source%2520-%2520ReversingLabs%29.webp?ssl=1\" alt=\"Telegram channel from which key and final stage URL are downloaded (Source - ReversingLabs)\"><figcaption class=\"wp-element-caption\">Telegram channel from which key and final stage URL are downloaded (Source \u2013 ReversingLabs)<\/figcaption><\/figure>\n<p>In one instance, these details are hidden inside a blockchain-styled post on teletype.in.<\/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\/AVvXsEiN2PrZPNxpLolt40fsy9fGtSHRbnV_Uj2Rp4KO69rUenNvP_bb9DOrLA1UTHhV3tdhdG6_rvgWbaXrDqTrSuXG5IaztXvybPCLw1YQw9DVic8EbmfWj-SwinP_SQ8n4zXhi3AsbG1TTXxH-jDo8HFsX4LvBgmVqdFtvVsXKOLvozmv39v8erc5kCiGIzo\/s16000\/Web3%2520contract%2520containing%2520final%2520stage%2520URL%2520and%2520a%2520key%2520%28Source%2520-%2520ReversingLabs%29.webp?ssl=1\" alt=\"Web3 contract containing final stage URL and a key (Source - ReversingLabs)\"><figcaption class=\"wp-element-caption\">Web3 contract containing final stage URL and a key (Source \u2013 ReversingLabs)<\/figcaption><\/figure>\n<\/div>\n<p>The final RAT payload is then decrypted, written to disk, and executed using the stolen sudo password.<a href=\"https:\/\/www.reversinglabs.com\/blog\/npm-fake-install-logs-rat\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/p>\n<p>Developers should never enter their sudo or root password when prompted by an npm package during installation, as no <a href=\"https:\/\/cybersecuritynews.com\/new-supply-chain-attack-targets-legitimate-npm-package\/\" id=\"105161\" target=\"_blank\" rel=\"noreferrer noopener\">legitimate package<\/a> requires system-level access at that stage. <\/p>\n<p>Package authors and repository history should be verified before installation, and automated security scanning tools should be used to catch suspicious scripts. <\/p>\n<p>Organizations should enforce strict dependency review workflows and treat any password prompts during software installs as a major warning sign.<\/p>\n<p>IoCs:-<\/p>\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\">Package Name<\/th>\n<th class=\"has-text-align-left\" data-align=\"left\">Version<\/th>\n<th class=\"has-text-align-left\" data-align=\"left\">SHA1<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">react-performance-suite<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">2.0.0<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">bdffc2f98ff422db9f9ddc190401cfcb686e3c32<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">react-performance-suite<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">2.0.1<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">5928e3121f12f3c5d690bc7968b28b2f67835ef5<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">react-state-optimizer-core<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">1.0.0<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">cbe7c87293de7ab5853e2aef3f638d54c45f5c9f<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">react-state-optimizer-core<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">3.0.3<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">fe6ee1104c4b02be39819822ed959039ea313e67<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">react-fast-utilsa<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">2.0.1<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">e6cfaef4b50d2a4ddd8453bf5a91e81a092d6e09<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">ai-fast-auto-trader<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">2.2.1<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">963b79f59fb2c070a06b9a2af9db2b5512c1ed74<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">ai-fast-auto-trader<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">2.2.6<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">d22eb34facf13b5c1e820d9e6358eb4cd3797eaa<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">pkgnewfefame1<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">3.2.1<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">2a8c625660ad6bb7d7c953a147c84c0fcc75794b<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">carbon-mac-copy-cloner<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">1.1.0<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">63783f6e59d20e2c664123b349f22dd53d1293d4<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">coinbase-desktop-sdk<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">1.5.14<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">cb9208d756dc4d4674801611d8d5f5ba79e76366<\/td>\n<\/tr>\n<tr>\n<td class=\"has-text-align-left\" data-align=\"left\">coinbase-desktop-sdk<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">1.5.19<\/td>\n<td class=\"has-text-align-left\" data-align=\"left\">d5ade32ac52140e6c25f50780dc4ff4d466faddb<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p><a href=\"https:\/\/www.infosecurity-magazine.com\/news\/npm-ghost-campaign-fake-install\/\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/p>\n<p class=\"has-text-align-center has-background\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 92%,rgb(169,184,195) 100%)\"><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 nofollow\">Google News<\/a>,\u00a0<a href=\"https:\/\/www.linkedin.com\/company\/cybersecurity-news\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LinkedIn<\/a>,\u00a0and\u00a0<a href=\"https:\/\/x.com\/cyber_press_org\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">X<\/a>\u00a0to Get More Instant Updates<\/strong>,\u00a0<strong>Set CSN as a Preferred Source in\u00a0<a href=\"https:\/\/www.google.com\/preferences\/source?q=cybersecuritynews.com\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Google<\/a>.<\/strong><\/p>\n<p>The post <a href=\"https:\/\/cybersecuritynews.com\/fake-npm-install-messages-hide-rat-malware\/\">Fake npm Install Messages Hide RAT Malware in New Open Source Supply Chain Campaign<\/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\/fake-npm-install-messages-hide-rat-malware\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fake npm Install Messages Hide RAT Malware in New Open Source Supply Chain Campaign A new and carefully crafted software supply chain campaign is targeting developers through the npm package registry, using fake installation messages to hide malicious activity. The campaign, which security researchers have named the \u201cGhost campaign,\u201d began in early February 2026 and [&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-11626","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\/11626"}],"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=11626"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/11626\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=11626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=11626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=11626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}