GlassWorm is a worm that propagated through supply chain attacks by compromising repository credentials from victim environments and having malicious payloads added to those compromised accounts for distribution to victims across the various development ecosystems.[1][2][3] GlassWorm has numerous variants, including Rust binaries, encrypted JavaScript and a variant leveraging invisible Unicode characters that made reverse engineering difficult.[4][1][5] GlassWorm has employed a unique command and control (C2) methodology using Solana blockchain.[6][1] GlassWorm was first reported in October 2025.[6][1][3]
| Domain | ID | Name | Use | |
|---|---|---|---|---|
| Enterprise | T1071 | .001 | Application Layer Protocol: Web Protocols |
GlassWorm has used HTTP for C2 and extracts data from the HTTP response headers.[1] |
| Enterprise | T1560 | .001 | Archive Collected Data: Archive via Utility |
GlassWorm has archived collected files within a zip file prior to exfiltration to include |
| Enterprise | T1547 | .001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
GlassWorm has set registry run keys for persistence in both |
| Enterprise | T1217 | Browser Information Discovery |
GlassWorm has searched browser data for cookies, history, login databases, and cryptocurrency wallets.[3] |
|
| Enterprise | T1059 | .002 | Command and Scripting Interpreter: AppleScript |
GlassWorm has utilized AppleScript to include |
| .007 | Command and Scripting Interpreter: JavaScript |
GlassWorm has leveraged JavaScript to execute its malicious code to include its hidden Unicode characters using the |
||
| Enterprise | T1554 | Compromise Host Software Binary | ||
| Enterprise | T1543 | .001 | Create or Modify System Process: Launch Agent |
GlassWorm has established persistence on macOS via a LaunchAgent by writing a plist under |
| Enterprise | T1555 | .001 | Credentials from Password Stores: Keychain |
GlassWorm has collected keys stored within |
| .003 | Credentials from Password Stores: Credentials from Web Browsers |
GlassWorm has gathered credentials stored in Mozilla FireFox and Chromium-based Browsers.[4][3] |
||
| Enterprise | T1602 | .002 | Data from Configuration Repository: Network Device Configuration Dump |
GlassWorm has gathered data pertaining to VPN configurations.[4][3] GlassWorm has also targeted locally stored data on macOS located in |
| Enterprise | T1213 | .003 | Data from Information Repositories: Code Repositories |
GlassWorm has gathered code repository authentication materials for NPM and GitHub.[4][1][3] GlassWorm has collected details pertaining to the npm configuration data for |
| .006 | Data from Information Repositories: Databases |
GlassWorm has collected data from macOS devices through the gathering of Apple Notes related files by targeting |
||
| Enterprise | T1005 | Data from Local System |
GlassWorm has collected local data from a compromised host to include desktop cryptocurrency wallet data, and documents from within Desktop, Documents, and Downloads.[3] |
|
| Enterprise | T1565 | .002 | Data Manipulation: Transmitted Data Manipulation |
GlassWorm can intercept and modify transaction details associated with hardware wallet applications before signing.[4] |
| Enterprise | T1074 | .001 | Data Staged: Local Data Staging |
GlassWorm has staged collected data in a working directory within a temp folder to include |
| Enterprise | T1678 | Delay Execution |
GlassWorm has used a timeout function set to |
|
| Enterprise | T1140 | Deobfuscate/Decode Files or Information |
GlassWorm has decoded its Base64 instructions.[1] GlassWorm has also decrypted its AES protected payloads.[4][1][3] |
|
| Enterprise | T1480 | Execution Guardrails |
GlassWorm has utilized logic to avoid executing on Russian based devices.[3] |
|
| Enterprise | T1008 | Fallback Channels | ||
| Enterprise | T1657 | Financial Theft |
GlassWorm has the ability to steal credentials for cryptocurrency wallets.[4][1][3] |
|
| Enterprise | T1564 | .003 | Hide Artifacts: Hidden Window |
GlassWorm has leveraged Hidden Virtual Network Computing (HVNC) to remain undetected and conduct execution of collection and communication actions.[1] |
| Enterprise | T1105 | Ingress Tool Transfer |
GlassWorm has downloaded additional payloads from C2.[4][6][3][5] |
|
| Enterprise | T1036 | Masquerading |
GlassWorm has masqueraded as legitimate VSCode extensions.[2][5] GlassWorm has also impersonated Github projects.[2] |
|
| Enterprise | T1571 | Non-Standard Port |
GlassWorm has distributed C2 using BitTorrent’s Distributed Hash Table (DHT) network to harness a decentralized command capability.[1] |
|
| Enterprise | T1027 | .013 | Obfuscated Files or Information: Encrypted/Encoded File |
GlassWorm has leveraged AES-256-CBC encryption to obfuscate its malicious JavaScript payload.[4][1][3][5] GlassWorm has also utilized Base64 encoding to obfuscate the C2 details stored in the Solana memo field.[4][1][5] |
| .018 | Obfuscated Files or Information: Invisible Unicode |
GlassWorm has utilized invisible Unicode Private Use Area (PUA) characters to obfuscate its malicious code so that it does not render in code editors.[4][1][2] |
||
| Enterprise | T1090 | .001 | Proxy: Internal Proxy |
GlassWorm has leveraged peer-to-peer software to facilitate communications within the victim network to include the software WebRTC.[1] GlassWorm has also established a SOCKS proxy to interact with victim devices that also acted as a proxy node for follow-on behaviors.[1] |
| Enterprise | T1518 | Software Discovery |
GlassWorm has searched for existing wallet applications to include Ledger Live and Trezor Suite.[4] |
|
| Enterprise | T1539 | Steal Web Session Cookie |
GlassWorm has harvested Safari cookies stored within |
|
| Enterprise | T1195 | .001 | Supply Chain Compromise: Compromise Software Dependencies and Development Tools |
GlassWorm has spread through Visual Studio extensions.[1][2][3] GlassWorm has also spread through JavaScript projects hosted on Github.[2] |
| Enterprise | T1082 | System Information Discovery |
GlassWorm has the ability to check the OS of the victim host.[3][5] GlassWorm has checked whether the OS platform value includes |
|
| Enterprise | T1614 | System Location Discovery |
GlassWorm has leveraged geofencing logic to detect whether it is operating in a Russian associated time zone to determine whether it continues to execute.[3] |
|
| .001 | System Language Discovery |
GlassWorm has identified the system language settings by checking for |
||
| Enterprise | T1124 | System Time Discovery |
GlassWorm has the ability to check the system’s time zone on the victim device.[3] |
|
| Enterprise | T1102 | .001 | Web Service: Dead Drop Resolver |
GlassWorm has leveraged blockchain-based C2 infrastructure to include Solana blockchain that contains additional C2 details within the memo field.[4][6][1][2][3][5] GlassWorm has also leveraged Google Calendar to host encoded data.[1][3][5] |