
Socket: GlassWASM
Socket's Threat Research team found two trojanized Open VSX extensions (ExarGD.vsblack, noellee-doc/flint-debug) that impersonate legitimate, verified VS Code Marketplace publishers to exploit a cross-registry trust gap. The extensions ship a TinyGo-compiled WebAssembly payload whose strings are ChaCha20-encrypted and only decrypted in memory at runtime; once running, it polls the Solana blockchain for SPL Memo instructions sent to an attacker wallet to resolve a rotating C2 host (dodod[.]lat) and then executes OS-specific download-and-execute commands via Node's child_process. Socket attributes the campaign with medium confidence to the GlassWorm developer and names this WASM-stager variant "GlassWASM," providing full hashes, wallet/memo IOCs, and detection guidance.
What it is
Detailed IOC and detection breakdown for GlassWASM, the WASM malware in two trojanized Open VSX extensions. The single carrier file is snqpkebiwrxmoivl.wasm (SHA-256 558b4f1d9a263c13756ab0126c09dd080c85ba405b29488e1c4e6aa68b554f1f, 824,552 bytes, WebAssembly MVP v1, TinyGo→js/wasm). Both extensions were uploaded by one Open VSX account, zaitoona43 (GitHub UID 291961103, account only 3 days old at publication): ExarGD/vsblack@0.0.1 (2026-06-09) and noellee-doc/flint-debug@0.1.1 (2026-06-10). Open VSX has since removed both.
How it works
The malicious clones reproduce the originals' exact publisher ID, name, version, description, README, and repo links, then append two things: the ChaCha20-obfuscated WASM payload and an onStartupFinished activation hook that auto-runs it. A renamed TinyGo loader instantiates the module via go.run(). At runtime the module polls the Solana mainnet JSON-RPC API for transactions to an attacker-controlled wallet, reads instructions from the on-chain SPL Memo field, and builds an OS-specific download-and-execute command through Node's child_process. No server to sinkhole — operators rotate infrastructure by posting a new transaction.
Preconditions / Affected
Matters for users of Open VSX-backed editors — VSCodium, Gitpod, Cursor, Windsurf, and other VS Code forks that default to Open VSX rather than the VS Code Marketplace. The genuine Marketplace listings (noellee-doc.flint-debug v0.1.1 from June 2020; ExarGD.vsblack v0.0.1 from July 2019) are clean; the Marketplace verifies publisher ownership, so the impersonation only works on Open VSX. Both originals are long-dormant projects unlikely to be monitored by their authors.
What to do
- Remove
ExarGD/vsblack@0.0.1andnoellee-doc/flint-debug@0.1.1if installed from Open VSX; block publisherzaitoona43. - Hunt for the file hashes (SHA-1
8ebac142e34a20c297d3ccaca7ee5d9ddd24fed4, MD54e143876eeaf5e767a9971f603b0f13c). - Signature/YARA on the TinyGo js/wasm fingerprint rather than strings (all consequential strings are ChaCha20-encrypted, name/debug section stripped): import table shows the
gojsbridge andwasi_snapshot_preview1.*imports; export table shows TinyGo's asyncify goroutine scheduler. - Flag extensions whose payload reaches Solana JSON-RPC or invokes
child_processfrom anonStartupFinishedhook.
The blog states it documents (though not all values are in this excerpt) the live RPC endpoint, watched wallet address, memo program IDs, and verbatim shell/PowerShell payload templates — pull those from the source for detection.
Caveats
Attribution to the GlassWorm developer is medium confidence, based on tradecraft/target overlap and shared artifacts; the WASM/TinyGo stager is described as a new pivot. IOCs are as of publication — the C2 design lets operators rotate second-stage infrastructure at will.
Organisations named here
- 6ExrZayPZzMMSnszc42cH81DpuKT8FhCX9H6Sesn6rpz
- dodod.lat
- SPL Memo
Technologies named here
- ExarGD.vsblack
- wasm-objdump
- noellee-doc/flint-debug
- wasm2c
- TinyGo
- Open VSX Registry
- Visual Studio Code
- wasm_exec.js
- Node.js
- Open VSX
- VS Code
- WebAssembly
- Solana
Techniques named here
- Trojanized/impersonated software extension distribution
- Auto-execution via activation hook
- Binary/WebAssembly obfuscation as evasion
- Runtime string decryption
- Blockchain-based C2 dead-drop
- Cross-platform download-and-execute via child_process
- WASM-to-JS bridging for I/O delegation
Threat actors named here
- GlassWorm
- GlassWASM
- zaitoona43
Related in Supply Chain


