GlassWorm
GlassWorm is a self-propagating, credential-stealing malware family and software supply chain campaign targeting software developers since at least early 2025. It has been documented spreading through trojanized Visual Studio Code extensions on Open VSX and the Microsoft VS Code Marketplace, malicious npm and Python packages, compromised GitHub repositories, and counterfeit extensions impersonating legitimate tools such as WakaTime. The malware targets developer environments and VS Code-compatible editors including VS Code, Cursor, Windsurf, Positron, and VSCodium across Windows, macOS, and Linux.
Its objectives include theft of developer credentials and secrets, browser data, OpenVSX, GitHub and npm tokens, cloud and CI/CD access, and cryptocurrency wallet information. Reported capabilities include credential harvesting, system profiling, exfiltration of browser and wallet data, arbitrary code execution, and self-propagation using stolen credentials to publish additional malicious extensions or poison repositories and packages. Later variants deployed a JavaScript/WebSocket RAT referred to as GlassWormRAT, which was reported to steal browser data, execute arbitrary code, and install a malicious Chrome extension that captured keystrokes, clipboard contents, screenshots, and session data. Infected hosts were also reported to be repurposed as SOCKS proxies, hidden VNC servers, and remote execution nodes.
GlassWorm has used multiple infection and persistence mechanisms. Early reporting described invisible Unicode-based code injection in malicious packages and extensions. More recent activity used thin-loader or sleeper extensions that were later weaponized through updates, malicious dependencies, manifest abuse, external payload retrieval, or bundled native binaries. Aikido reported a Zig-compiled native dropper delivered via a fake OpenVSX extension that scanned for installed IDEs and silently installed a second-stage malicious extension across compatible editors. On macOS, GlassWorm has been reported to establish persistence via a LaunchAgent by writing a plist under /library/LaunchAgents, and artifacts associated with the campaign include /tmp/ijewf, ~/init.json, i.js, and /tmp/out.zip. The malware can also modify hardware wallet applications.
The campaign used unusually resilient command-and-control infrastructure. Reported C2 channels included Solana blockchain transaction memo fields, BitTorrent DHT, Google Calendar event titles, and conventional VPS-hosted servers. Specific infrastructure and indicators mentioned in reporting include Solana wallet BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC, funding wallet G2YxRa6wt1qePMwfJzdXZG62ej4qaTC7YURzuh2Lwd3t, C2 servers 45.32.151.157, 45.32.150.97, 217.69.11.57, 217.69.11.99, 217.69.0.159, 45.76.44.240, and 217.69.2.135:5000, exfiltration-related servers 208.85.20.124 and 208.76.223.59, payload mirrors 217.69.3.51 and 45.32.150.251, and post-takedown beaconing to CrowdStrike-controlled IP 164.92.88.210. Additional indicators mentioned include malicious or abused extensions and packages such as quartz.quartz-markdown-editor, oorzc.ssh-tools, oorzc.i18n-tools-plus, oorzc.mind-map, oorzc.scss-to-css-compile, specstudio/code-wakatime-activity-tracker, and floktokbok.autoimport.
Researchers first documented GlassWorm spreading across Open VSX in October 2025, and later reporting described campaigns affecting hundreds of repositories and extensions, including poisoning more than 300 GitHub repositories using stolen developer credentials. CrowdStrike, Google, and the Shadowserver Foundation later conducted a coordinated disruption of all known GlassWorm C2 channels. Multiple reports assess the operators as likely Russian-speaking or Russia-linked cybercriminals based on Russian-language comments or artifacts and malware logic that avoids execution on Russian or CIS systems.
Hunt this family in your stack
Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.
Groups observed using it
3 distinct threat actors attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.
A dangerous malware campaign known as Glassworm has been spreading through the tools that software developers trust most every day.
The GlassWorm malware campaign is being used to fuel an ongoing attack that leverages the stolen GitHub tokens to inject malware into hundreds of Python repositories.
The GlassWorm malware campaign is being used to fuel an ongoing attack that leverages the stolen GitHub tokens to inject malware into hundreds of Python repositories.
Techniques & procedures
29 distinct techniques documented for this family, organized by ATT&CK tactic.
Initial Access
4 techniquesGlassWorm's goal is to infect software developers with infostealers to obtain a target organization's secrets and credentials, which an attacker can then further weaponize to publish poisoned versions of projects maintained by that victim.
Attackers have already started combining self-propagation capabilities, which historically defines a 'worm,' with malicious tools to attack developers and software supply chains.
This self-replicating worm initially targeted VS Code extensions on the OpenVSX marketplace before moving on to npm and Python packages, and later poisoned more than 300 GitHub repos using stolen credentials harvested in earlier Glassworm infections.
This is the core social engineering pattern behind the latest GlassWorm cluster: cloned listings create enough visual trust to attract installs before any malware is introduced.
Execution
5 techniquesThe latest wave of malicious extensions, however, include a capability to automatically fetch and execute malicious payloads at a later date... the common pattern throughout GlassWorm's latest activity "is that the extension itself acts as a thin loader."
File i.js JavaScript payload file written to script directory during execution
The next month, researchers discovered the Glassworm attack, which utilizes VS Code extensions to compromise developer machines.
A developer installs what looks like a trusted extension or package, and the malware activates in the background.
Persistence
3 techniquesGlassWorm's goal is to infect software developers with infostealers to obtain a target organization's secrets and credentials, which an attacker can then further weaponize to publish poisoned versions of projects maintained by that victim.
Bundlore can persist via a LaunchAgent. Calisto adds a .plist file to the /Library/LaunchAgents folder to maintain persistence. CoinTicker creates user launch agents named .espl.plist and com.apple.[random string].plist to establish persistence.
The content repeatedly describes malware and threat actors establishing persistence by adding values under HKCU/HKLM\Software\Microsoft\Windows\CurrentVersion\Run or RunOnce, and by placing executables, scripts, .lnk files, or batch files in the Windows Startup folder.
Privilege Escalation
3 techniquesGlassWorm's goal is to infect software developers with infostealers to obtain a target organization's secrets and credentials, which an attacker can then further weaponize to publish poisoned versions of projects maintained by that victim.
Bundlore can persist via a LaunchAgent. Calisto adds a .plist file to the /Library/LaunchAgents folder to maintain persistence. CoinTicker creates user launch agents named .espl.plist and com.apple.[random string].plist to establish persistence.
The content repeatedly describes malware and threat actors establishing persistence by adding values under HKCU/HKLM\Software\Microsoft\Windows\CurrentVersion\Run or RunOnce, and by placing executables, scripts, .lnk files, or batch files in the Windows Startup folder.
Stealth
7 techniquesThe compromised packages shared several notable traits for stealthy payload delivery, including an unconventional Unicode-based obfuscation technique that remained invisible within IDEs.
The campaign we analyzed, however, uses a different and under-observed class of characters (variation selectors) that remain largely invisible to common tooling.
The injection preserves the original commit author and date, making it look like nothing in the project history has changed.
GlassWorm's goal is to infect software developers with infostealers to obtain a target organization's secrets and credentials, which an attacker can then further weaponize to publish poisoned versions of projects maintained by that victim.
The next month, researchers discovered the Glassworm attack, which utilizes VS Code extensions to compromise developer machines.
Credential Access
4 techniquesOnce on a developer’s machine, Glassworm steals GitHub tokens from multiple sources, including VS Code storage, the git credentials file, and local environment variables.
Server 208.85.20[.]124 -- documented in the original GlassWorm reporting as a credential theft endpoint -- is still live... browse stolen credentials... Browser credential dumper
Glassworm ... is a self-propagating, credential-stealing worm ... later poisoned more than 300 GitHub repos using stolen credentials harvested in earlier Glassworm infections.
A malicious Chrome extension is also installed to capture browser session data.
Discovery
2 techniquesGlassworm steals GitHub tokens from multiple sources, including VS Code storage, the git credentials file, and local environment variables.
Collection
2 techniquesThe content repeatedly describes threat actors and malware collecting, stealing, identifying, copying, or staging files, documents, credentials, logs, databases, and other information from compromised hosts or local systems.
The content repeatedly describes adversaries and malware storing collected data, command output, credentials, archives, or files in local temporary folders, working directories, hidden directories, registry locations, recycle bins, or specific files prior to exfiltration.
Command and Control
6 techniquesThe malware uses the Solana blockchain as its command-and-control channel. Instead of connecting to a server that could be taken offline, it reads instructions from transaction memos attached to a specific Solana wallet.
The third deploys a persistent backdoor using WebSockets.
Glassworm used invisible Unicode-based code injection, blockchain-based C2 infrastructure, and Google Calendar as a backup command server to turn infected developers’ machines into criminal proxy nodes.
It also used Google Calendar event titles as dead-drop locations for Base64-encoded C2 paths.
The endpoint security giant’s Counter Adversary Operations team and partners hit all four Glassworm command-and-control channels simultaneously ... severing the operators from their infected machines and their ability to deliver new malicious payloads.
These included the Solana blockchain, with C2 server addresses encoded in the memo fields of blockchain transactions, ensuring the C2 couldn’t be taken offline through conventional means.
Exfiltration
1 technique[STAGE 2: ENCRYPTED PAYLOAD] AES-CBC decrypt using header-delivered keys -> credential stealer / RAT
IOCs tracked for this family
71 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.
IPs, domains, and DNS infrastructure linked to this family.
File hashes (MD5, SHA-1, SHA-256) from samples and reports.
Other indicator types observed in public reporting.
Recent activity
89 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A worm-like attack that uses VS Code extensions to compromise developer machines.
Named malware associated here with supply chain campaigns and a Russian-language system avoidance check.
Многофункциональная малварь и ботнет, нацеленная на разработчиков. Распространялась через вредоносные расширения Visual Studio Code, npm- и Python-пакеты и компрометированные GitHub-репозитории. Похищает учетные данные разработчиков, данные криптокошельков и обеспечивает доступ к цепочкам поставок, используя отказоустойчивую многоуровневую C2-инфраструктуру через Solana, BitTorrent DHT, Google Calendar и VPS.
GlassWorm is a software supply chain malware campaign targeting developers via trojanized VS Code extensions and compromised npm and Python packages. It delivers a data-theft framework with credential harvesting, cryptocurrency wallet exfiltration, system profiling, and infrastructure abuse capabilities, and uses multiple resilient C2 channels including Solana, BitTorrent DHT, Google Calendar, and VPS-hosted servers.
The version that knows your environment.
Match every observed IP, domain, and hash against your live telemetry.
Named campaigns wielding this family, with evidence pinned to each claim.
CVEs this family uses for access and lateral movement.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Every documented technique, ranked by evidence weight.
Reddit, Mastodon, and CTI community discussion around this family.