GlassWorm Uses Open VSX Extension Dependencies for Transitive Malware Delivery

· Original article ↗

Summary

Socket reports GlassWorm-linked Open VSX extensions using later-added extensionPack and extensionDependencies entries to install malicious extensions transitively. The campaign also rotates infrastructure and obfuscates staged JavaScript loaders, making version-history

Key points

  • GlassWorm-linked extensions use extensionPack and extensionDependencies to install other extensions automatically, allowing previously benign-appearing packages to become transitive delivery vehicles after updates.
  • The article reports confirmed relationships involving otoboss.autoimport-extension and GlassWorm-linked packages, and identifies twilkbilk.color-highlight-css and crotoapp.vscode-xml-extension as live examples at the time of writing.
  • Open VSX had removed most identified transitively malicious extensions as of March 13, but the article says takedowns were ongoing and some examples remained live.
  • The loader retains staged JavaScript, Russian locale/timezone gating, Solana transaction memo dead drops, and in-memory follow-on execution; newer variants add RC4/base64/string-array obfuscation and move decryption material into HTTP response headers.
  • The campaign rotated its Solana wallet and added C2 IPs 45[.]32[.]151[.]157 and 70[.]34[.]242[.]255 while reusing 45[.]32[.]150[.]251; the article cites overlapping infrastructure as support for GlassWorm attribution.
  • The researchers recommend auditing extension histories and manifest changes, reviewing transitive install chains, and blocking or removing GlassWorm-linked packages and indicators.

Article Details

Attack Vectors
  • Abuse of Open VSX extensionPack and extensionDependencies manifest fields to make extensions automatically install separate GlassWorm-linked extensions, including through changes introduced in later updates.
  • Staged JavaScript loader retrieves and decodes follow-on code, then executes it in memory via eval and vm.Script.
  • Russian locale/timezone gating limits execution to selected environments.
  • Solana transaction memos are used as dead drops for follow-on payload retrieval.
  • RC4, base64, and string-array obfuscation conceal loader logic; decryption material is supplied through HTTP response headers.
Defensive Notes
  • Audit extension histories and version-to-version manifest diffs for newly added extensionPack or extensionDependencies relationships.
  • Review extension installation chains and transitive dependencies, not only the code of the initially installed extension.
  • Remove or block GlassWorm-linked extensions and the listed C2 IP addresses.
  • Hunt for staged extension.js loaders, Russian locale/timezone checks, Solana memo lookups, and in-memory follow-on execution.
  • Review developer workstations for exposed credentials, tokens, configuration data, and environment secrets.

Indicators of compromise

TypeIndicatorContext
IPV445[.]32[.]150[.]251C2 infrastructure reused by the GlassWorm campaign.
IPV445[.]32[.]151[.]157Additional C2 IP address identified for the GlassWorm campaign.
IPV470[.]34[.]242[.]255Additional C2 IP address identified for the GlassWorm campaign.

MITRE ATT&CK

Threat Actors

Malware

Products

Tools

Related Articles