{"id":2002,"date":"2026-09-04T07:26:28","date_gmt":"2026-09-04T00:26:28","guid":{"rendered":"https:\/\/vncybers.vn\/hieu-ve-node-js-runtime-bi-lam-dung-phat-tan-ma-doc\/"},"modified":"2026-09-04T07:26:28","modified_gmt":"2026-09-04T00:26:28","slug":"node-js-runtime-abused-malware-delivery","status":"publish","type":"post","link":"https:\/\/vncybers.vn\/en\/hieu-ve-node-js-runtime-bi-lam-dung-phat-tan-ma-doc\/","title":{"rendered":"Understand how the Node.js runtime is abused to distribute malicious code"},"content":{"rendered":"<p>Node.js is commonly seen as a legitimate platform for running server-side JavaScript applications, developer tools and many enterprise automation workflows. That legitimacy is exactly what makes it attractive to attackers: instead of introducing an unfamiliar malicious binary, they can use <code>node.exe<\/code> as a signed runtime to execute malicious JavaScript.<\/p>\n<p>The Hacker News, citing a new report from the Symantec Threat Hunter Team, said this technique has appeared in multiple attacks since February 2026 against government agencies, technology companies and hotels. The important point is not Node.js itself, but the way a trusted tool is turned into a wrapper for persistence, payload delivery and evasion of signature-based detection.<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/vncybers.vn\/wp-content\/uploads\/2026\/09\/nodejs-runtime-inline.jpg\" alt=\"M\u00e0n h\u00ecnh laptop hi\u1ec3n th\u1ecb m\u00e3 ngu\u1ed3n trong m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m\" style=\"max-width: 100%; height: auto;\" \/><\/p>\n<h2>Why can a legitimate tool become a risk?<\/h2>\n<p>In many enterprise environments, Node.js is familiar. Developer workstations, build systems, internal tools and automation pipelines may need Node.js to operate normally. As a result, the presence of <code>node.exe<\/code> is not automatically suspicious.<\/p>\n<p>Attackers exploit this gap. When malicious code lives in interpreted scripts rather than a new malicious executable, defenses that rely mainly on file signatures may struggle. If the payload is persisted through a Registry Run key, JavaScript code can run again whenever the user logs in while still appearing under a legitimate runtime.<\/p>\n<p>This is a variant of the broader trend of living off legitimate tools already present in an environment. Instead of relying only on PowerShell, WMI or remote administration tools, attackers are extending the approach into software development runtimes, where the boundary between legitimate and abnormal activity is often less clear.<\/p>\n<h2>The observed attack chain<\/h2>\n<p>According to the public reporting, in one intrusion against an Asian technology company between March 23 and July 25, 2026, attackers downloaded the official Node.js installer from <code>nodejs.org<\/code>. They then used the signed runtime to run a malicious implant, maintain long-term access and retrieve commands or additional tooling through a technique called EtherHiding.<\/p>\n<p>Before shifting to this approach, attempts to deploy AdaptixC2 and Cobalt Strike Beacon had been blocked. Initial access is believed to have come from ClickFix, a social-engineering technique that tricks users into performing fake repair or verification steps, causing them to run attacker-controlled commands themselves.<\/p>\n<p>Symantec also linked the abuse of Node.js to tools such as ModeloRAT, Mistic, C2Looper, AsukaStealer and EtherRAT. That suggests this is not a one-off trick by a single group, but an operating pattern that can be reused by multiple threat actors with different skill levels.<\/p>\n<h2>The hard part for defenders<\/h2>\n<p>The first challenge is distinguishing legitimate Node.js from abused Node.js. In an organization with software development teams, completely blocking <code>node.exe<\/code> is often unrealistic. But if it is allowed without control, the runtime can become a code-execution channel outside the visibility of traditional rules.<\/p>\n<p>The second challenge is that the attack chain does not necessarily unfold immediately. In one case involving a U.S. fintech organization, C2Looper deployment was observed more than two months after the initial access events. That time gap makes investigations harder, especially if endpoint, proxy and DNS logs are not retained long enough.<\/p>\n<p>The third challenge is that attackers can combine Node.js with other legitimate Microsoft tools, Windows command-line utilities and cloud or blockchain infrastructure. When each individual component looks normal, defensive value comes from behavioral correlation: who installed the runtime, where it was downloaded from, which scripts ran, which child processes appeared and where network traffic went.<\/p>\n<h2>Signals worth monitoring<\/h2>\n<p>Organizations should not treat Node.js as malicious, but they should place the runtime inside software asset governance. A server or workstation outside development groups that suddenly downloads and installs Node.js from the Internet deserves review. Similarly, <code>node.exe<\/code> running from a temporary directory, user profile or unusual path should be monitored.<\/p>\n<p>SOC teams can watch for <code>node.exe<\/code> launching PowerShell, <code>cmd.exe<\/code>, archive utilities, download tools or connections to newly registered domains. Registry Run keys used for persistence, encoded or dynamically loaded JavaScript, and traffic related to payload hiding in legitimate services also deserve attention.<\/p>\n<p>At the policy level, organizations should use role-based allowlisting rather than permitting software development runtimes everywhere. On machines without a development need, Node.js should be managed through centralized software distribution, with a standard version, standard path and alerts for installations outside the approved inventory.<\/p>\n<h2>Lessons for individuals and organizations<\/h2>\n<p>For individual users, ClickFix carries an important reminder: do not copy and run commands from a website simply because the page claims a browser repair, CAPTCHA verification or extension update is required. Any prompt asking users to open Run, PowerShell or Terminal and paste a command should be treated as high risk.<\/p>\n<p>For organizations, the lesson is to expand detection from malicious files to abuse of legitimate tools. A signed runtime does not automatically mean trusted activity. The right questions are where the runtime appeared, who installed it, which script it ran, what child processes it spawned and which infrastructure it contacted.<\/p>\n<p>Node.js remains an essential technology in modern software development. The risk lies in the control gap when a legitimate tool is installed and executed outside its intended purpose. As attackers increasingly hide inside trusted environments, effective defense must rely on context, asset governance and behavioral correlation instead of only looking for unfamiliar files.<\/p>\n<p style=\"text-align: right; margin-top: 40px;\"><em><strong>VNCyberS<\/strong> compiled from The Hacker News, Symantec Threat Hunter Team and Broadcom<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Node.js th\u01b0\u1eddng \u0111\u01b0\u1ee3c nh\u00ecn nh\u1eadn nh\u01b0 m\u1ed9t n\u1ec1n t\u1ea3ng h\u1ee3p ph\u00e1p \u0111\u1ec3 ch\u1ea1y \u1ee9ng d\u1ee5ng JavaScript ph\u00eda m\u00e1y ch\u1ee7, c\u00f4ng c\u1ee5 ph\u00e1t tri\u1ec3n v\u00e0 nhi\u1ec1u quy tr\u00ecnh t\u1ef1 \u0111\u1ed9ng h\u00f3a trong doanh nghi\u1ec7p. Ch\u00ednh s\u1ef1 h\u1ee3p ph\u00e1p \u0111\u00f3 \u0111ang khi\u1ebfn n\u00f3 tr\u1edf th\u00e0nh m\u1ed9t l\u1ef1a ch\u1ecdn h\u1ea5p d\u1eabn v\u1edbi k\u1ebb t\u1ea5n c\u00f4ng: thay v\u00ec \u0111\u01b0a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2001,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[5],"tags":[776,388,775,739,774,777,773,771,561,772,779,778],"class_list":["post-2002","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kien-thuc","tag-asukastealer","tag-broadcom","tag-c2looper","tag-clickfix","tag-etherhiding","tag-etherrat","tag-living-off-the-land","tag-node-exe","tag-node-js","tag-node-js-malware","tag-phong-thu-endpoint","tag-symantec-threat-hunter-team"],"_links":{"self":[{"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/posts\/2002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/comments?post=2002"}],"version-history":[{"count":0,"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/posts\/2002\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/media\/2001"}],"wp:attachment":[{"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/media?parent=2002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/categories?post=2002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vncybers.vn\/en\/wp-json\/wp\/v2\/tags?post=2002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}