Glassworm is a supply chain attack campaign that hides fully functional malware inside invisible Unicode characters. First discovered by Koi Security in October 2025, it has since spread to over 400 repositories across GitHub, npm, and the VS Code marketplace. It is the largest known Unicode steganography attack in history.
How Glassworm Works
The attack exploits a fundamental gap in how code editors display text. Certain Unicode characters — specifically from the Private Use Area and Variation Selectors Supplement ranges — render as zero-width whitespace in every major code editor, terminal, and GitHub code review interface.
A developer reviewing infected code sees ordinary, harmless-looking JavaScript. But hidden between the visible lines are thousands of invisible characters that encode a complete second-stage payload.
What actually executes: A hidden decoder extracts bytes from invisible characters between those lines and passes them to eval(), downloading a second-stage payload from a Solana blockchain wallet address.
The Kill Chain
Infection: A developer installs a package or extension containing invisible Unicode characters
Decoding: A small visible decoder function maps invisible characters back to ASCII bytes
Execution: The decoded payload runs via eval()
C2 lookup: The payload queries a Solana wallet for a command-and-control URL
Exfiltration: Credentials, tokens, cryptocurrency wallets, and secrets are stolen
Scale of the Attack
151+ GitHub repositories confirmed infected (many since deleted)
72 VS Code / Open VSX extensions compromised
35,800+ installations of infected extensions
Active across GitHub, npm, and VS Code marketplace simultaneously
Uses Solana blockchain for resilient C2 infrastructure
Which Unicode Characters Are Used?
Glassworm primarily targets these invisible ranges:
U+FE00–U+FE0F — Variation Selectors
U+E0100–U+E01EF — Variation Selectors Supplement
U+200B–U+200F — Zero-width spaces and directional marks
Traditional code review is useless against Glassworm because:
The malicious characters are literally invisible in every editor
GitHub's diff view does not highlight zero-width characters
git diff in a terminal renders them as empty space
AI code review tools (Copilot, Cursor) cannot see them either
The visible code is often AI-generated to look legitimate
How to Detect Glassworm
Vibe Check detects the exact Unicode character patterns used by Glassworm. Paste any code into the scanner and it will flag invisible characters, sequences, and steganographic payloads — instantly, in your browser, with nothing sent to any server.