{"id":11458,"date":"2026-03-19T10:03:42","date_gmt":"2026-03-19T10:03:42","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/03\/19\/waterplum-deploys-new-stoatwaffle-malware-in-vscode-based-supply-chain-campaign\/"},"modified":"2026-03-19T10:03:42","modified_gmt":"2026-03-19T10:03:42","slug":"waterplum-deploys-new-stoatwaffle-malware-in-vscode-based-supply-chain-campaign","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/03\/19\/waterplum-deploys-new-stoatwaffle-malware-in-vscode-based-supply-chain-campaign\/","title":{"rendered":"WaterPlum Deploys New \u2018StoatWaffle\u2019 Malware in VSCode-Based Supply Chain Campaign"},"content":{"rendered":"<p>    WaterPlum Deploys New \u2018StoatWaffle\u2019 Malware in VSCode-Based 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 North Korea-linked hacking group known as WaterPlum has introduced a dangerous new malware called StoatWaffle, deploying it through compromised Visual Studio Code (VSCode) repositories disguised as legitimate blockchain development projects to silently infiltrate developer machines.\u200b<\/p>\n<p>WaterPlum has been running a campaign known as \u201cContagious Interview\u201d for some time, drawing victims in through fake job interview setups and tricking them into running harmful code on their systems. <\/p>\n<p>The group is divided into several teams, and Team 8 \u2014 also tracked under the names Moralis and Modilus \u2014 is responsible for this latest wave. Team 8 previously depended on a <a href=\"https:\/\/cybersecuritynews.com\/ottercookie-malware-upgraded-with-new-features\/\" id=\"105003\" target=\"_blank\" rel=\"noreferrer noopener\">malware family called OtterCookie<\/a> as its main tool. <\/p>\n<p>Starting around December 2025, the team shifted gears and began deploying StoatWaffle instead, signaling a clear and deliberate upgrade in its attack toolkit.\u200b<\/p>\n<p><a href=\"https:\/\/jp.security.ntt\/insights_resources\/tech_blog\/stoatwaffle_malware_en\/\" id=\"https:\/\/jp.security.ntt\/insights_resources\/tech_blog\/stoatwaffle_malware_en\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">NTT Security analysts identified StoatWaffle<\/a> while investigating Team 8\u2019s latest activities, noting that the malware marks a meaningful shift in WaterPlum\u2019s operational approach. <\/p>\n<p>Their report, published on March 17, 2026, describes StoatWaffle as a fully modular, Node.js-based framework that operates in stages \u2014 consisting of a loader, a credential-stealing module, and a remote access trojan (RAT) component \u2014 each working together to give attackers deep access to compromised systems.\u200b<\/p>\n<p>The attack starts with a carefully crafted repository shared among developers. Team 8 builds what appears to be a genuine blockchain project and places it where developers are likely to discover it. <\/p>\n<p>Hidden inside the project is a\u00a0<code>.vscode<\/code>\u00a0folder containing a\u00a0<code>tasks.json<\/code>\u00a0file configured with a\u00a0<code>runOn: folderOpen<\/code>\u00a0setting. <\/p>\n<p>As soon as a developer opens the folder in VSCode and grants it trust, the editor automatically executes a pre-set task \u2014 requiring no further action from the victim.\u200b<\/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\/AVvXsEj8DSQC1FZGPp96xLvcAaVRZ2vTmb4wx82j5wI1n3tEROvy-WOhOMIq0-PNb7EhWdPwWOmxW66OKfvTcMl5GgiCFS19ySrhDukXmCdS7RbrOjOczcXOOT-KlloYdwuFSj3FZ3DX2B8Tv7klFh-t5VpwskGodkeaa0ppA8nGDWmgRUspOIsrG2lKLd0JCUc\/s16000\/Attack%2520flow%2520%28Source%2520-%2520NTT%2520Security%29.webp?ssl=1\" alt=\"Attack flow (Source - NTT Security)\"><figcaption class=\"wp-element-caption\">Attack flow (Source \u2013 NTT Security)<\/figcaption><\/figure>\n<\/div>\n<p>What makes this threat particularly serious is that most developers would not expect that simply opening a VSCode project folder could silently trigger a full malware infection running in the background \u2014 no scripts to run manually, no prompts to accept.\u200b<\/p>\n<h2 class=\"wp-block-heading\" id=\"stoatwaffles-infection-chain\"><strong>StoatWaffle\u2019s Infection Chain<\/strong><\/h2>\n<p>When the malicious task executes, it reaches out to a Vercel-hosted web application and downloads a batch script called\u00a0<code>vscode-bootstrap.cmd<\/code>. This script first checks whether Node.js is installed on the machine. <\/p>\n<p>If it is not, the script quietly downloads and installs it from the official Node.js website \u2014 removing a key technical barrier without drawing any attention. It then fetches a JavaScript file called\u00a0<code>env.npl<\/code>, which acts as the first-stage downloader in StoatWaffle\u2019s infection chain.\u200b<\/p>\n<p>The\u00a0<code>env.npl<\/code>\u00a0file connects to a C2 server at\u00a0<code>147[.]124.202.208<\/code>\u00a0on port 3000 and polls the\u00a0<code>\/api\/errorMessage<\/code>\u00a0endpoint every five seconds. <\/p>\n<p>When the server responds with an error status, the loader runs the <a href=\"https:\/\/cybersecuritynews.com\/safari-xss-flaw-leverages-javascript-error-handling\/\" id=\"109601\" target=\"_blank\" rel=\"noreferrer noopener\">JavaScript code<\/a> embedded in that response, pulling down the second-stage payload. <\/p>\n<p>Roughly five minutes into this polling cycle, the second downloader arrives and begins its own loop against the\u00a0<code>\/api\/handleErrors<\/code>\u00a0endpoint on the same server, silently spawning hidden child processes to stay out of sight.\u200b<\/p>\n<p>Once the second downloader is active, StoatWaffle deploys both its Stealer and RAT modules at the same time. <\/p>\n<p>The Stealer targets saved browser credentials and <a href=\"https:\/\/cybersecuritynews.com\/samourai-wallet-cryptocurrency-mixing-founders-jailed\/\" id=\"133910\" target=\"_blank\" rel=\"noreferrer noopener\">cryptocurrency wallet<\/a> extension data across Chromium-based and Firefox browsers; on macOS, it also collects the Keychain database. <\/p>\n<p>The RAT module awaits commands from the C2 server and can list files, <a href=\"https:\/\/cybersecuritynews.com\/pgadmin-vulnerability-shell-commands\/\" id=\"136107\" target=\"_blank\" rel=\"noreferrer noopener\">run shell commands<\/a>, upload directories, and search for files matching a keyword \u2014 giving the attacker wide and persistent control over the infected host.\u200b<\/p>\n<p>Developers should avoid trusting unfamiliar or unverified VSCode repositories, particularly those related to blockchain or cryptocurrency work. <\/p>\n<p>VSCode workspace trust settings should be reviewed carefully, and policies restricting\u00a0<code>runOn: folderOpen<\/code>\u00a0behavior should be enforced. Security teams are advised to block these indicators of compromise:\u00a0<code>185[.]163.125.196<\/code>,\u00a0<code>147[.]124.202.208<\/code>,\u00a0<code>163[.]245.194.216<\/code>,\u00a0<code>66[.]235.168.136<\/code>, and\u00a0<code>87[.]236.177.9<\/code>. <\/p>\n<p>Watching for unexpected Node.js installations or hidden child processes spawned from VSCode can also serve as an early warning of compromise.<\/p>\n<p class=\"has-text-align-center has-background\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 91%,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\/waterplum-deploys-new-stoatwaffle-malware\/\">WaterPlum Deploys New \u2018StoatWaffle\u2019 Malware in VSCode-Based 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\/waterplum-deploys-new-stoatwaffle-malware\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WaterPlum Deploys New \u2018StoatWaffle\u2019 Malware in VSCode-Based Supply Chain Campaign A North Korea-linked hacking group known as WaterPlum has introduced a dangerous new malware called StoatWaffle, deploying it through compromised Visual Studio Code (VSCode) repositories disguised as legitimate blockchain development projects to silently infiltrate developer machines.\u200b WaterPlum has been running a campaign known as \u201cContagious [&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-11458","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\/11458"}],"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=11458"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/11458\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=11458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=11458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=11458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}