What is Glassworm?

Published: April 26, 2026

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 you see in your editor:

const config = require('./config');
// Initialize settings
module.exports = config;

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

  1. Infection: A developer installs a package or extension containing invisible Unicode characters
  2. Decoding: A small visible decoder function maps invisible characters back to ASCII bytes
  3. Execution: The decoded payload runs via eval()
  4. C2 lookup: The payload queries a Solana wallet for a command-and-control URL
  5. Exfiltration: Credentials, tokens, cryptocurrency wallets, and secrets are stolen

Scale of the Attack

Which Unicode Characters Are Used?

Glassworm primarily targets these invisible ranges:

For a complete reference, see our Invisible Unicode Characters guide.

Why Code Review Doesn't Catch It

Traditional code review is useless against Glassworm because:

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.

Scan Your Code Now →

Other detection methods:

How to Protect Yourself

  1. Scan before you trust. Run any copied or AI-generated code through a Unicode steganography scanner
  2. Pin dependencies. Use lockfiles and verify package integrity with checksums
  3. Audit extensions. Review VS Code extension permissions and install counts before installing
  4. Strip invisible characters. Add pre-commit hooks that reject files containing suspicious Unicode ranges
  5. Monitor for anomalies. Unexpected network connections from dev tools are a red flag

Timeline