GlassWorm Campaign Links Malicious GitHub Repositories, npm Packages and VS Code Extensions

· Original article ↗

Summary

OpenSourceMalware links GlassWorm activity across GitHub, npm, VS Code and Python through shared Solana and server infrastructure, describing its obfuscation, Node.js infostealer and indicators. The Python campaign was still active on March 14, 2026.

Key points

  • The analysis connects reports from Aikido, Socket and Step Security through a shared Solana address and overlapping IP infrastructure; the authors assess the activity as one coordinated campaign.
  • The reports cover more than 433 repositories, packages and extensions across GitHub, npm, VS Code and Python; the article says the Python campaign remained active on March 14, 2026.
  • JavaScript payloads in npm, GitHub and VS Code use invisible Unicode characters; Python payloads use base64, zlib and XOR obfuscation.
  • The article describes Python GitHub account takeovers followed by force-pushes that append malicious code while preserving the original commit message and author.
  • Across platforms, the payload queries Solana for command-and-control links, downloads Node.js and runs a JavaScript infostealer targeting browser cryptocurrency wallets, credentials, SSH keys and session tokens.
  • The malware reportedly avoids Russian-language systems. The authors describe the campaign as probably Russian in origin, while distinguishing it from DPRK-linked campaigns they track.
  • The article recommends checking repositories for its listed indicators, reviewing Git history and installed extensions, and checking for unexpected persistence files and Node.js installations.

Article Details

Attack Vectors
  • Compromised GitHub repositories were force-pushed with malicious Python code after attackers took over developer accounts.
  • Malicious npm packages and VSCode/Open-VSX extensions delivered JavaScript obfuscated with invisible Unicode variation selectors.
  • Python payloads used a base64, zlib, and XOR deobfuscation chain before executing the decoded code.
  • The payloads queried a Solana address for C2 updates, then downloaded a Node.js-based infostealer from IP-hosted URLs.
  • The infostealer targeted browser cryptocurrency wallet extensions, stored credentials, SSH keys, and session tokens.
Defensive Notes
  • Search Python repositories for the marker variable lzcdrtfxyqiplpd and code for the Unicode decoder fingerprint or invisible variation-selector characters.
  • Review Git history and reflogs for force-push tampering and commits with committer email or identity shown as "null".
  • Audit VSCode extensions installed from October 2025 through March 2026 and remove suspicious extensions.
  • Check for unexpected ~/init.json persistence and unexpected Node.js installations.
  • Treat the Python campaign as ongoing according to the article's March 14, 2026 reporting.

Indicators of compromise

TypeIndicatorContext
IPV4140[.]82[.]60[.]183IP identified in the article's npm-campaign infrastructure list.
IPV4149[.]28[.]24[.]100IP identified in the article's npm-campaign infrastructure list.
IPV4155[.]138[.]237[.]76IP identified in the article's npm-campaign infrastructure list.
IPV4207[.]246[.]77[.]75IP identified in the article's npm-campaign infrastructure list.
IPV4217[.]69[.]0[.]159Shared campaign infrastructure; the article gives a specific C2 payload URL on this IP.
IPV4217[.]69[.]10[.]135IP identified in the article's npm-campaign infrastructure list.
IPV4217[.]69[.]11[.]57IP listed as Python-campaign infrastructure by Step Security.
IPV4217[.]69[.]11[.]99IP listed as Python-campaign infrastructure by Step Security.
IPV445[.]32[.]150[.]251IP referenced in Socket's report on the malicious VSCode extensions.
IPV445[.]32[.]150[.]97IP listed as Python-campaign infrastructure by Step Security.
IPV445[.]32[.]151[.]157Shared C2 server referenced across the npm, Python, and VSCode campaign reports.
IPV445[.]76[.]44[.]240IP listed as Python-campaign infrastructure by Step Security.
IPV466[.]42[.]56[.]190IP identified in the article's npm-campaign infrastructure list.
IPV470[.]34[.]242[.]255IP referenced in Socket's report on the malicious VSCode extensions.
IPV495[.]179[.]189[.]100IP identified in the article's npm-campaign infrastructure list.
URLhxxp[:]//217[.]69[.]0[.]159/dq1IMEteQ4AbO3daeYGXZw==Specific C2 payload URL published in a Solana transaction memo for malware to fetch.

MITRE ATT&CK

Malware

Products

Related Articles