{"id":12016,"date":"2026-04-10T10:04:25","date_gmt":"2026-04-10T10:04:25","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/04\/10\/trojanized-openvsx-extension-spreads-glassworm-across-vs-code-cursor-and-windsurf\/"},"modified":"2026-04-10T10:04:25","modified_gmt":"2026-04-10T10:04:25","slug":"trojanized-openvsx-extension-spreads-glassworm-across-vs-code-cursor-and-windsurf","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/04\/10\/trojanized-openvsx-extension-spreads-glassworm-across-vs-code-cursor-and-windsurf\/","title":{"rendered":"Trojanized OpenVSX Extension Spreads GlassWorm Across VS Code, Cursor, and Windsurf"},"content":{"rendered":"<p>    Trojanized OpenVSX Extension Spreads GlassWorm Across VS Code, Cursor, and Windsurf<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 fake developer extension published on the OpenVSX marketplace is silently spreading a known malware strain called GlassWorm to every code editor installed on a developer\u2019s machine. <\/p>\n<p>The malicious package disguises itself as a legitimate productivity tool and uses a compiled native binary to quietly infect VS Code, Cursor, Windsurf, and several other editors all at once.\u200b<\/p>\n<p>GlassWorm is not a new threat. It was first spotted in March 2025, hiding malicious payloads inside invisible Unicode characters embedded in npm packages. <\/p>\n<p>Over the past year, the campaign grew steadily, hitting hundreds of projects on GitHub, npm, and VS Code. <\/p>\n<p>Before this latest wave, its most damaging move was deploying a persistent <a href=\"https:\/\/cybersecuritynews.com\/cybersecurity-best-practices-to-prevent-remote-access-trojan-infections\/\" id=\"137764\" target=\"_blank\" rel=\"noreferrer noopener\">Remote Access Trojan<\/a> through a fake Chrome extension that logged keystrokes and stole session cookies from victims.\u200b<\/p>\n<p><a href=\"https:\/\/www.aikido.dev\/blog\/glassworm-zig-dropper-infects-every-ide-on-your-machine\" id=\"https:\/\/www.aikido.dev\/blog\/glassworm-zig-dropper-infects-every-ide-on-your-machine\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Aikido security analysts, who have been tracking the GlassWorm campaign<\/a> for over a year, identified this latest technique in April 2026. <\/p>\n<p>The attack was found hidden inside an OpenVSX extension called\u00a0<code>code-wakatime-activity-tracker<\/code>, published under the\u00a0<code>specstudio<\/code>\u00a0account. <\/p>\n<p>On the surface, the extension is nearly identical to the real WakaTime productivity tool \u2014 it shows the same command options, the same API key prompts, and the same status bar icons that developers are familiar with.\u200b<\/p>\n<p>What separates this attack from earlier <a href=\"https:\/\/cybersecuritynews.com\/self-propagating-glassworm-weaponizing-vs-code\/\" id=\"138314\" target=\"_blank\" rel=\"noreferrer noopener\">GlassWorm versions<\/a> is the use of Zig-compiled native binaries. On Windows, the extension ships a file called\u00a0<code>win.node<\/code>, a PE32+ DLL. <\/p>\n<p>On macOS, it includes\u00a0<code>mac.node<\/code>, a universal Mach-O binary that runs on both Intel and Apple Silicon hardware. These files load directly into Node.js\u2019s runtime and operate with full access to the operating system, outside the reach of standard sandbox protections.\u200b<\/p>\n<p>The attack does not stop at a single editor. Once the binary runs, it scans the machine for every IDE that supports VS Code\u2019s extension format \u2014 including VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium, and Positron \u2014 and silently installs a malicious extension into each one. <\/p>\n<p>A developer running Cursor with VS Code also installed would find both environments quietly compromised with no visible warning.\u200b<\/p>\n<h2 class=\"wp-block-heading\" id=\"how-the-multi-ide-infection-works\"><strong>How the Multi-IDE Infection Works<\/strong><\/h2>\n<p>The infection begins the moment a developer installs\u00a0<code>code-wakatime-activity-tracker<\/code>. The extension\u2019s\u00a0<code>activate()<\/code>\u00a0function, which is supposed to start up the WakaTime tool, has been quietly altered by the attacker. <\/p>\n<p>Before any legitimate WakaTime code gets a chance to run, the function loads either\u00a0<code>win.node<\/code>\u00a0or\u00a0<code>mac.node<\/code>\u00a0from the extension\u2019s bundled\u00a0<code>.\/bin\/<\/code>\u00a0directory and immediately calls\u00a0<code>install()<\/code>. That single call triggers everything that follows.\u200b<\/p>\n<p>The native binary then contacts a GitHub Releases page controlled by the attacker and downloads a malicious\u00a0<code>.vsix<\/code>\u00a0file named\u00a0<code>autoimport-2.7.9<\/code>. <\/p>\n<p>This package is designed to look like\u00a0<code>steoates.autoimport<\/code>, a popular VS Code extension used by millions of developers. Once downloaded, the file is silently force-installed into every IDE found on the machine using each editor\u2019s own command-line installer. <\/p>\n<p>After the installation completes, the downloaded file is deleted to remove any trace of it.\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\/AVvXsEgtPzQ9T7TB7YUD8v8uuTGtyAuqCez8u3tpr3Djz8-9lWBsRtzND2G0iDRmfn8qkF1pKb2EES01vSNjiRyxDUkNuSVZy_J-xeRuD-mkFng6xhGppUijEMXkc8GU3vzBWC76wwfKg1JUshL_pzmDYYty5MJOWlecwO4qOq9JTR4jOcEWc2XbUjCunDYa8jE\/s16000\/Second-Stage%2520Extension%2520%28Source%2520-%2520Aikido%29.webp?ssl=1\" alt=\"Second-Stage Extension (Source - Aikido)\"><figcaption class=\"wp-element-caption\">Second-Stage Extension (Source \u2013 Aikido)<\/figcaption><\/figure>\n<\/div>\n<p>The second-stage extension is the same GlassWorm dropper that Aikido has been analyzing throughout the campaign\u2019s history. It avoids executing on machines that use Russian system settings, pointing to a deliberate choice by its authors. <\/p>\n<p>Once active, it beacons to a <a href=\"https:\/\/cybersecuritynews.com\/chinese-threat-actors-hosted-18000-active-c2-servers\/\" id=\"139740\" target=\"_blank\" rel=\"noreferrer noopener\">command-and-control server<\/a> that operates through the Solana blockchain, making it more difficult for security teams to block or monitor. <\/p>\n<p>The malware then quietly exfiltrates data from the infected machine and installs a persistent RAT alongside a malicious Chrome extension.\u200b<\/p>\n<p>Developers should check their IDE extension lists immediately for\u00a0<code>specstudio\/code-wakatime-activity-tracker<\/code>\u00a0and\u00a0<code>floktokbok.autoimport<\/code>. <\/p>\n<p>If either appears in any installed editor, the machine should be treated as fully compromised. All credentials, API keys, and stored secrets accessible from that environment should be rotated right away. <\/p>\n<p>Any code repositories connected to the affected machine should also be reviewed for signs of tampering, as the attacker had full system access during the infection window.\u200b<\/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\/trojanized-openvsx-extension-spreads-glassworm\/\">Trojanized OpenVSX Extension Spreads GlassWorm Across VS Code, Cursor, and Windsurf<\/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\/trojanized-openvsx-extension-spreads-glassworm\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trojanized OpenVSX Extension Spreads GlassWorm Across VS Code, Cursor, and Windsurf A fake developer extension published on the OpenVSX marketplace is silently spreading a known malware strain called GlassWorm to every code editor installed on a developer\u2019s machine. The malicious package disguises itself as a legitimate productivity tool and uses a compiled native binary to [&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-12016","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\/12016"}],"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=12016"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/12016\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=12016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=12016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=12016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}