Invisible malicious code attacks 151 GitHub repos and VS Code — Glassworm attack uses blockchain to steal tokens, credentials, and secrets
Attackers appear to be using LLMs to generate convincing cover commits alongside the injections.
Get Tom's Hardware's best news and in-depth reviews, straight to your inbox.
You are now subscribed
Your newsletter sign-up was successful
Researchers at Aikido Security reported on Friday that they had found at least 151 GitHub repositories compromised by a threat actor tracked as Glassworm, which hides malicious payloads in Unicode characters invisible to the human eye. The affected repositories were compromised between March 3 and March 9, according to the Aikido Security blog, and the campaign has since expanded to npm and the VS Code marketplace.
The technique exploits Unicode Private Use Area characters — specifically, ranges 0xFE00 through 0xFE0F and 0xE0100 through 0xE01EF — which render as zero-width whitespace in virtually every code editor and terminal, and consequently appear as blank space to a developer reviewing a pull request. Meanwhile, a small decoder extracts the hidden bytes and passes them to eval(), executing a full malicious payload.
In past Glassworm incidents, that payload fetched and executed a second-stage script that used the Solana blockchain as a command-and-control channel, capable of stealing tokens, credentials, and secrets.
Article continues belowAikido suggests that the 151 repos identified are likely a fraction of the total, since many had already been deleted before the research was published. Among the notable targets are repositories from Wasmer, Reworm, and anomalyco, the organization behind OpenCode and SST. The same decoder pattern also appeared in at least two npm packages and one VS Code extension uploaded on March 12.
Unfortunately, this most recent Glassworm campaign is harder to counter than previous iterations due to the sophistication of the malicious injections. Instead of showing up as obviously suspicious commits, they’re taking the form of version bumps and small refactors that are “stylistically consistent with each target project.” Aikido says it suspects the attackers are using large language models to generate this cover, since manually creating 151 bespoke code changes across different codebases wouldn’t be feasible otherwise.
Glassworm has been active since at least March 2025, when Aikido first found the invisible Unicode technique in malicious npm packages. By October, the same actor had moved into the Open VSX extension registry and GitHub repositories. An earlier investigation by Koi Security found the group used stolen npm, GitHub, and Git credentials to propagate the worm further, with decoded payloads deploying hidden VNC servers and SOCKS proxies for remote access. The Solana-based infrastructure makes takedown difficult, since blockchain transactions cannot be modified or deleted.
Aikido recommends scrutinizing package names and dependencies before incorporating them into projects, and using automated tooling that scans specifically for invisible Unicode characters, since visual code review doesn’t protect this class of injection.
Get Tom's Hardware's best news and in-depth reviews, straight to your inbox.
Follow Tom's Hardware on Google News, or add us as a preferred source, to get our latest news, analysis, & reviews in your feeds.

Luke James is a freelance writer and journalist. Although his background is in legal, he has a personal interest in all things tech, especially hardware and microelectronics, and anything regulatory.
-
bit_user Reply
Not sure why better tooling doesn't already exist to detect these. They ought to be automatically flagged in github's PR interface, for one thing.The article said:The technique exploits Unicode Private Use Area characters — specifically, ranges 0xFE00 through 0xFE0F and 0xE0100 through 0xE01EF — which render as zero-width whitespace in virtually every code editor and terminal
Is there any significant, legit use case for them? -
jp7189 One of the dangers of vibe coding is an agent running out and pulling down project and libraries that the user has no hope of knowing or understanding. That makes it much easier to slip malicious code in to network past perimeter defenses.Reply -
bit_user Reply
Yeah, I don't think vibe coding will ever be for me. I like to understand what I'm doing, too much. Early in my career, I learned that if I can't understand exactly how something works, it probably doesn't.jp7189 said:One of the dangers of vibe coding is an agent running out and pulling down project and libraries that the user has no hope of knowing or understanding. That makes it much easier to slip malicious code in to network past perimeter defenses.
You make a good point that, while one way these sorts of hacks can get in is by a faithless commit, another is from a programmer or agent just copy-pasting code from somewhere else.