{"id":99242,"date":"2024-11-25T14:00:44","date_gmt":"2024-11-25T12:00:44","guid":{"rendered":"https:\/\/staging.checkmarx.com\/?p=99242"},"modified":"2025-11-13T15:52:53","modified_gmt":"2025-11-13T13:52:53","slug":"npm-supply-chain-attack-combines-crypto-mining-and-data-theft","status":"publish","type":"zero-post","link":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/","title":{"rendered":"Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft"},"content":{"rendered":"<p>Through our continuous monitoring of software supply chain threats, the Checkmarx Research team identified a supply chain attack that has remained active for over a year. The package, @0xengine\/xmlrpc, began its life as a &#8220;legitimate&#8221; XML-RPC implementation in October 2023, but strategically transformed into a malicious tool in later versions and has remained active through November of 2024. This discovery serves as a stark reminder that a package&#8217;s longevity and consistent maintenance history do not guarantee its safety. Whether initially malicious packages or legitimate ones becoming compromised through updates, the software supply chain requires constant vigilance &#8211; both during initial vetting and throughout a package&#8217;s lifecycle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-1\">Key Findings<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A malicious NPM package masquerading as an XML-RPC implementation has maintained an unusually long presence on the NPM registry from October 2023 to November 2024, receiving 16 updates during this period.<\/li>\n\n\n\n<li>The package started as a &#8220;legitimate&#8221; XML-RPC implementation and strategically introduced malicious code in later versions.<\/li>\n\n\n\n<li>The malware steals sensitive data (SSH keys, bash history, etc..) every 12 hours while mining cryptocurrency on infected systems. Data is exfiltrated through Dropbox and file.io.<\/li>\n\n\n\n<li>The attack achieved distribution through multiple vectors: direct NPM installation and as a hidden dependency in a legitimate-looking repository.<\/li>\n\n\n\n<li>Evasion techniques include system monitoring detection and activity-based mining<\/li>\n\n\n\n<li>At the time of investigation, it appeared that up to 68 compromised systems were actively mining cryptocurrency through the attacker&#8217;s Monero wallet.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-2\">Package History and Evolution<\/h2>\n\n\n\n<p>The malicious package \u201c@0xengine\/xmlrpc\u201d first appeared on the NPM registry on October 2nd, 2023, presenting itself as a pure JavaScript XML-RPC server and client implementation for Node.js.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"665\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1024x665.png\" alt=\"malicious package \u201c@0xengine\/xmlrpc\u201d screenshot in NPM registry \" class=\"wp-image-99244\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1024x665.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-300x195.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-768x499.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1536x998.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-2048x1331.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>What makes this package particularly interesting is its strategic evolution from legitimate to malicious code. The initial release (version 1.3.2) and its immediate follow-up appeared to be legitimate implementations of XML-RPC functionality. However, starting from version 1.3.4, the package underwent a significant transformation with the introduction of malicious code in the form of heavily obfuscated code within the &#8220;validator.js&#8221; file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"617\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/obfuscated-code-1024x617.png\" alt=\"XML-RPC functionality code snippet \" class=\"wp-image-99245\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/obfuscated-code-1024x617.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/obfuscated-code-300x181.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/obfuscated-code-768x463.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/obfuscated-code-1536x925.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/obfuscated-code-2048x1234.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Part of the obfuscated code<\/figcaption><\/figure>\n\n\n\n<p>Over its year-long presence on NPM, the package has received 16 updates, with the latest version (1.3.18) published on October 4th, 2024. This consistent update pattern helped maintain an appearance of legitimate maintenance while concealing the malicious functionality.<\/p>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-3\">Distribution Strategy<\/h2>\n\n\n\n<p>Our research uncovered a calculated supply chain attack involving two distribution vectors. The first involves direct installation of <strong>@0xengine\/xmlrpc<\/strong> from NPM. The second, more sophisticated approach, involves a GitHub repository named &#8220;yawpp&#8221; (hxxps[:]\/\/github[.]com\/hpc20235\/yawpp), which presents itself as a WordPress posting tool.<\/p>\n\n\n\n<p>The yawpp repository appears legitimate, offering functionality for WordPress credential checking and content posting. It requires @0xengine\/xmlrpc as a dependency, claiming to use it for XML-RPC communication with WordPress sites. This dependency is automatically installed when users set up the yawpp tool through standard npm installation.<\/p>\n\n\n\n<p>This strategy is particularly effective as it exploits the trust developers place in package dependencies, potentially leading to inadvertent installation of the malicious package through what appears to be a legitimate project dependency.<\/p>\n\n\n\n<p>The combination of regular updates, seemingly legitimate functionality, and strategic dependency placement has contributed to the package&#8217;s unusual longevity in the NPM ecosystem, far exceeding the typical lifespan of malicious packages that are often detected and removed within days.<\/p>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-4\">Attack Flow<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"649\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Attack-Flow-1024x649.png\" alt=\"attack flow diagram \" class=\"wp-image-99246\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Attack-Flow-1024x649.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Attack-Flow-300x190.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Attack-Flow-768x486.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Attack-Flow-1536x973.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Attack-Flow-2048x1297.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The attack orchestrated through @0xengine\/xmlrpc operates through a sophisticated multi-stage approach that combines cryptocurrency mining with data exfiltration capabilities. The malicious functionality, concealed within validator.js, remains dormant until executed through one of two vectors:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Direct package users execute any command with the &#8216;&#8211;targets&#8217; or &#8216;-t&#8217; flag. This activation occurs when running the package&#8217;s validator functionality, which masquerades as an XML-RPC parameter validation feature.<\/li>\n\n\n\n<li>Users installing the &#8220;yawpp&#8221; WordPress tool from GitHub automatically receive the malicious package as a dependency. The malware activates when running either of yawpp&#8217;s main scripts (checker.js or poster.js), as both require the &#8216;&#8211;targets&#8217; parameter for normal operation.<\/li>\n<\/ul>\n\n\n\n<p>This implementation ensures the malware activates through legitimate-looking tool usage, making detection more difficult.<\/p>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-5\">Initial Compromise<\/h2>\n\n\n\n<p>Once triggered, the malware begins gathering system information:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"292\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/system-gather-1024x292.png\" alt=\"Deobfuscated version of the system information gathering code\" class=\"wp-image-99247\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/system-gather-1024x292.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/system-gather-300x86.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/system-gather-768x219.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/system-gather-1536x438.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/system-gather-2048x584.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Deobfuscated version of the system information gathering code<\/figcaption><\/figure>\n\n\n\n<p>Following the initial data collection phase, the malware deploys its cryptocurrency mining component with a particular focus on Linux systems. The deployment process involves downloading additional payloads from a Codeberg repository disguised as system authentication services. The mining operation utilizes XMRig to mine Monero cryptocurrency, directing all mining rewards to a predetermined wallet address while connecting to the mining pool.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"292\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/downloading-crypto-minor-1024x292.png\" alt=\"Deobfuscated configuration revealing the attacker's Codeberg repository URLs used to fetch mining components\" class=\"wp-image-99248\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/downloading-crypto-minor-1024x292.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/downloading-crypto-minor-300x86.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/downloading-crypto-minor-768x219.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/downloading-crypto-minor-1536x438.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/downloading-crypto-minor-2048x584.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Deobfuscated configuration revealing the attacker&#8217;s Codeberg repository URLs used to fetch mining components<\/em><\/figcaption><\/figure>\n\n\n\n<p>These downloaded components include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>XMRig: The actual cryptocurrency mining software<\/li>\n\n\n\n<li>xprintidle: Used to detect user activity<\/li>\n\n\n\n<li>Xsession.sh: The main script that orchestrates the mining operation<\/li>\n<\/ul>\n\n\n\n<p>The mining operation is configured with specific parameters targeting Monero:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"230\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/wallet-data-1024x230.png\" alt=\"Monero mining configuration found in the downloaded Xsession.sh script\" class=\"wp-image-99249\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/wallet-data-1024x230.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/wallet-data-300x68.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/wallet-data-768x173.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/wallet-data-1536x346.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/wallet-data-2048x461.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Monero mining configuration found in the downloaded Xsession.sh script<\/figcaption><\/figure>\n\n\n\n<p>At the time of our investigation, we observed 68 miners actively connected to this wallet address through the hashvault.pro mining pool, indicating a possible significant number of compromised systems actively mining cryptocurrency for the attacker.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"903\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Miners-1024x903.png\" alt=\"Monero mining Pool page screenshot \" class=\"wp-image-99250\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Miners-1024x903.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Miners-300x265.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Miners-768x677.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Miners-1536x1354.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Miners-2048x1806.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-6\">Sophisticated Evasion Mechanisms<\/h2>\n\n\n\n<p>The malware implements an advanced process monitoring system to avoid detection. It maintains a list of monitoring tools and continuously checks for their presence.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"445\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-monitoring-processes-1024x445.png\" alt=\"Deobfuscated version of the process monitoring evasion logic found in Xsession.sh\" class=\"wp-image-99251\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-monitoring-processes-1024x445.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-monitoring-processes-300x130.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-monitoring-processes-768x333.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-monitoring-processes-1536x667.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-monitoring-processes-2048x889.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Deobfuscated version of the process monitoring evasion logic found in Xsession.sh &#8211; checks for and terminates mining when system monitoring tools are detected<\/figcaption><\/figure>\n\n\n\n<p>The malware also carefully monitors user activity through the xprintidle utility. It only initiates mining operations after a specified period of inactivity (default: 1 minute) and immediately suspends operations when user activity is detected. This behavior is controlled by the INACTIVITY_IN_MINS parameter.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"230\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-inactivity-1024x230.png\" alt=\"INACTIVITY_IN_MINS parameter code\" class=\"wp-image-99252\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-inactivity-1024x230.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-inactivity-300x68.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-inactivity-768x173.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-inactivity-1536x346.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/checking-for-inactivity-2048x461.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-7\">Maintaining Persistence<\/h2>\n\n\n\n<p>To ensure long-term survival on infected systems, the malware establishes persistence through systemd, disguising itself as a legitimate session authentication service named &#8220;Xsession.auth&#8221;. This service is configured to automatically start with the system, ensuring the mining operation resumes after system reboots. The malware also implements a daily check-in mechanism, regularly sending system status updates and potentially receiving new commands or configurations.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Persistence-1024x387.png\" alt=\"Deobfuscated systemd service configuration from Xsession.sh used for maintaining persistence\" class=\"wp-image-99253\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Persistence-1024x387.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Persistence-300x113.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Persistence-768x290.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Persistence-1536x580.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/Persistence-2048x773.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Deobfuscated systemd service configuration from Xsession.sh used for maintaining persistence<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-8\">Data Exfiltration Pipeline<\/h2>\n\n\n\n<p>The malware implements a comprehensive data collection and exfiltration system that operates continuously. Every 12 hours, it performs a systematic collection of sensitive system information through a &#8220;daily_tasks&#8221; function found in Xsession.sh:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"406\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/daily-task-1024x406.png\" alt=\"&quot;daily_tasks&quot; function found in Xsession.sh\" class=\"wp-image-99254\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/daily-task-1024x406.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/daily-task-300x119.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/daily-task-768x305.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/daily-task-1536x609.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/daily-task-2048x812.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>During each collection cycle, the malware systematically gathers a wide range of sensitive data including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SSH keys and configurations from ~\/.ssh<\/li>\n\n\n\n<li>Command history from ~\/.bash_history<\/li>\n\n\n\n<li>System information and configurations<\/li>\n\n\n\n<li>Environment variables and user data<\/li>\n\n\n\n<li>Network and IP information through ipinfo.io<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"505\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/data-Collection-1024x505.png\" alt=\"Dropbox API code execution \" class=\"wp-image-99255\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/data-Collection-1024x505.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/data-Collection-300x148.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/data-Collection-768x379.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/data-Collection-1536x758.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/data-Collection-2048x1010.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The stolen data is exfiltrated through two channels. One, using the Dropbox API with hardcoded credentials.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"336\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/dropbox-1024x336.png\" alt=\"Consnt dropboxConfig code execution \" class=\"wp-image-99256\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/dropbox-1024x336.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/dropbox-300x99.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/dropbox-768x252.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/dropbox-1536x504.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/dropbox-2048x672.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Additionally, the malware employs file.io as a secondary exfiltration channel, using a bearer token for authentication and setting automatic file deletion after download to minimize detection risks.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"336\" src=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/file-io-1024x336.png\" alt=\"const token code execution\" class=\"wp-image-99257\" srcset=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/file-io-1024x336.png 1024w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/file-io-300x99.png 300w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/file-io-768x252.png 768w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/file-io-1536x504.png 1536w, https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/file-io-2048x672.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-9\">Conclusion<\/h2>\n\n\n\n<p>This year-long campaign serves as a stark reminder of the critical importance of thoroughly vetting open-source projects before incorporation into any software development process. Projects can be malicious from the start, maintaining a long-term presence while hiding their true nature, or legitimate projects can later become compromised and introduce malicious code through updates.<\/p>\n\n\n\n<p>This dual threat emphasizes why developers and organizations must remain vigilant not only during initial vetting but also in monitoring package updates, implementing robust security measures, and conducting regular audits of their dependencies to mitigate the risks associated with supply chain attacks.<\/p>\n\n\n\n<p>As part of the <a href=\"https:\/\/checkmarx.com\/solutions\/software-supply-chain-security\/\">Checkmarx Supply Chain Security solution<\/a>, our research team continuously monitors suspicious activities in the open-source software ecosystem. We track and flag &#8220;signals&#8221; that may indicate foul play, including suspicious entry points, and promptly alert our customers to help protect them from potential threats.<\/p>\n\n\n\n<p>Checkmarx One customers are protected from this attack.<\/p>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-10\">Packages<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>@0xengine\/xmlrpc<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading article-anchor\" id=\"article-anchor-11\">IOC<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>hxxps[:]\/\/codeberg[.]org\/k0rn66\/xmrdropper\/raw\/branch\/master\/xprintidle<\/li>\n\n\n\n<li>hxxps[:]\/\/codeberg[.]org\/k0rn66\/xmrdropper\/raw\/branch\/master\/xmrig<\/li>\n\n\n\n<li>hxxps[:]\/\/codeberg[.]org\/k0rn66\/xmrdropper\/raw\/branch\/master\/Xsession.sh<\/li>\n\n\n\n<li>Wallet Address: 45J3v3ooxT335ENFjJBB3s7WS7xGekEKiBW4Z6sRSTUa5Kbn8fbqwgC47SLUDdKsri7haj7PBi5Wvf3xLmrX9CEZ3MGEVJU<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Through our continuous monitoring of software supply chain threats, the Checkmarx Research team identified a supply chain attack that has remained active for over a year. The package, @0xengine\/xmlrpc, began its life as a &#8220;legitimate&#8221; XML-RPC implementation in October 2023, but strategically transformed into a malicious tool in later versions and has remained active through [&hellip;]<\/p>\n","protected":false},"author":66,"featured_media":0,"template":"","zero-category":[1067],"zero-tag":[1068],"class_list":["post-99242","zero-post","type-zero-post","status-publish","hentry","zero-category-blog","zero-tag-checkmarx-security-research-team"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft - Checkmarx<\/title>\n<meta name=\"description\" content=\"Investigation reveals NPM package strategically deploying cryptocurrency mining operations for over a year.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft - Checkmarx\" \/>\n<meta property=\"og:description\" content=\"Investigation reveals NPM package strategically deploying cryptocurrency mining operations for over a year.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/\" \/>\n<meta property=\"og:site_name\" content=\"Checkmarx\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Checkmarx.Source.Code.Analysis\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T13:52:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1024x665.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@checkmarx\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/\",\"url\":\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/\",\"name\":\"Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft - Checkmarx\",\"isPartOf\":{\"@id\":\"https:\/\/checkmarx.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1024x665.png\",\"datePublished\":\"2024-11-25T12:00:44+00:00\",\"dateModified\":\"2025-11-13T13:52:53+00:00\",\"description\":\"Investigation reveals NPM package strategically deploying cryptocurrency mining operations for over a year.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/#primaryimage\",\"url\":\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package.png\",\"contentUrl\":\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package.png\",\"width\":2706,\"height\":1758},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/checkmarx.com\/#website\",\"url\":\"https:\/\/checkmarx.com\/\",\"name\":\"Checkmarx\",\"description\":\"The world runs on code. We secure it.\",\"publisher\":{\"@id\":\"https:\/\/checkmarx.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/checkmarx.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/checkmarx.com\/#organization\",\"name\":\"Checkmarx\",\"url\":\"https:\/\/checkmarx.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/checkmarx.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/02\/logo-dark.svg\",\"contentUrl\":\"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/02\/logo-dark.svg\",\"width\":1,\"height\":1,\"caption\":\"Checkmarx\"},\"image\":{\"@id\":\"https:\/\/checkmarx.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Checkmarx.Source.Code.Analysis\",\"https:\/\/x.com\/checkmarx\",\"https:\/\/www.youtube.com\/user\/CheckmarxResearchLab\",\"https:\/\/www.linkedin.com\/company\/checkmarx\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft - Checkmarx","description":"Investigation reveals NPM package strategically deploying cryptocurrency mining operations for over a year.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/","og_locale":"en_US","og_type":"article","og_title":"Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft - Checkmarx","og_description":"Investigation reveals NPM package strategically deploying cryptocurrency mining operations for over a year.","og_url":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/","og_site_name":"Checkmarx","article_publisher":"https:\/\/www.facebook.com\/Checkmarx.Source.Code.Analysis","article_modified_time":"2025-11-13T13:52:53+00:00","og_image":[{"url":"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1024x665.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@checkmarx","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/","url":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/","name":"Dozens of Machines Infected: Year-Long NPM Supply Chain Attack Combines Crypto Mining and Data Theft - Checkmarx","isPartOf":{"@id":"https:\/\/checkmarx.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/#primaryimage"},"image":{"@id":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/#primaryimage"},"thumbnailUrl":"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package-1024x665.png","datePublished":"2024-11-25T12:00:44+00:00","dateModified":"2025-11-13T13:52:53+00:00","description":"Investigation reveals NPM package strategically deploying cryptocurrency mining operations for over a year.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/checkmarx.com\/blog\/dozens-of-machines-infected-year-long-npm-supply-chain-attack-combines-crypto-mining-and-data-theft\/#primaryimage","url":"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package.png","contentUrl":"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/11\/npm-package.png","width":2706,"height":1758},{"@type":"WebSite","@id":"https:\/\/checkmarx.com\/#website","url":"https:\/\/checkmarx.com\/","name":"Checkmarx","description":"The world runs on code. We secure it.","publisher":{"@id":"https:\/\/checkmarx.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/checkmarx.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/checkmarx.com\/#organization","name":"Checkmarx","url":"https:\/\/checkmarx.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/checkmarx.com\/#\/schema\/logo\/image\/","url":"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/02\/logo-dark.svg","contentUrl":"https:\/\/checkmarx.com\/wp-content\/uploads\/2024\/02\/logo-dark.svg","width":1,"height":1,"caption":"Checkmarx"},"image":{"@id":"https:\/\/checkmarx.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Checkmarx.Source.Code.Analysis","https:\/\/x.com\/checkmarx","https:\/\/www.youtube.com\/user\/CheckmarxResearchLab","https:\/\/www.linkedin.com\/company\/checkmarx"]}]}},"_links":{"self":[{"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/zero-post\/99242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/zero-post"}],"about":[{"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/types\/zero-post"}],"author":[{"embeddable":true,"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/users\/66"}],"wp:attachment":[{"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/media?parent=99242"}],"wp:term":[{"taxonomy":"zero-category","embeddable":true,"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/zero-category?post=99242"},{"taxonomy":"zero-tag","embeddable":true,"href":"https:\/\/checkmarx.com\/wp-json\/wp\/v2\/zero-tag?post=99242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}