StepSecurity Finds Backdoor in IoliteLabs Solidity VS Code Extensions

· Original article ↗

Summary

StepSecurity says three dormant IoliteLabs Solidity VS Code extensions were updated with a startup backdoor delivering Windows and macOS payloads. They had about 27,500 combined installs; the current dropper has no Linux handler.

Key points

  • StepSecurity reports that three IoliteLabs Solidity extensions were updated to version 0.1.8 on March 25, 2026, after being dormant since 2018; their combined Marketplace install count was about 27,500.
  • The report says the public source repository had no corresponding update, which it identifies as a strong signal that the established publisher account was compromised.
  • The backdoor was injected into the bundled pako dependency and uses Unicode escapes, bracket notation, junk arithmetic, a reversed platform string, and dependency hiding. The onStartupFinished event triggers code on VS Code startup.
  • On Windows, the chain downloads a batch file from rraghh[.]com and a Chrome-impersonating MSI from oortt[.]com. The MSI installs a DLL using regsvr32 and creates persistence; export names suggest input monitoring, but the report says the DLL’s behavior could not be confirmed from those names alone.
  • On macOS, payloads for Intel and Apple Silicon are downloaded from cdn.rraghh[.]com. The scripts remove quarantine attributes and set up a LaunchAgent for login persistence.
  • The current dropper handles Windows and macOS, but the report found no Linux payload branch.
  • The article provides indicators and removal steps, including uninstalling the extensions, checking for persistence artifacts, auditing network logs, and rotating potentially exposed credentials.

Article Details

Attack Vectors
  • An attacker-controlled IoliteLabs publisher account was used to push malicious version 0.1.8 updates to three dormant VSCode extensions targeting Solidity developers.
  • The extensions execute injected JavaScript in a tampered pako dependency on VSCode startup. The code uses obfuscated strings and detached curl commands to retrieve platform-specific payloads.
  • On Windows, a batch dropper downloads a Chrome-impersonating MSI. The installer uses regsvr32 to load a DLL and creates a registry persistence key; its hook-related exports suggest input monitoring, but the DLL's behavior could not be confirmed.
  • On macOS, a shell script downloads and runs separate Intel and Apple Silicon binaries, installs a LaunchAgent for login persistence, and removes quarantine attributes before execution.
  • The article describes the macOS binaries' embedded modules as consistent with file archiving and multipart uploads, but does not confirm their actual collection or exfiltration behavior.
Defensive Notes
  • Uninstall the affected solidity-macos, solidity-windows, and solidity-linux extensions at version 0.1.8 and check machines where they were installed.
  • On macOS, check for and remove the listed LaunchAgent, hidden launcher, downloaded binaries, and PATH modifications. On Windows, check for the ChromeUpdate directory, registry key, batch file, and MSI.
  • Audit DNS and firewall logs for rraghh.com, cdn.rraghh.com, and oortt.com.
  • If an affected extension ran, treat relevant wallet keys, seed phrases, SSH keys, API keys, browser credentials, and development tokens as potentially compromised and rotate them.
  • Review bundled extension dependencies, not just the declared entry point, and scrutinize unexpected startup activation events.

Indicators of compromise

TypeIndicatorContext
DOMAINcdn[.]rraghh[.]comAttacker-controlled domain serving the macOS dropper and stage-2 binaries.
DOMAINoortt[.]comAttacker-controlled domain used to deliver the Windows MSI.
DOMAINrraghh[.]comAttacker-controlled domain serving the Windows stage-1 dropper.
SHA25638cb0e1209a721a565e71f9dc0593437723dc32c4d2fe2d23de141f4d306cceaSHA-256 of the malicious Intel macOS stage-2 binary.
SHA25640a6bbc8260bc17faa583dd3c3954a0e3c4b0abb923baaecd2ad7901311d5d82SHA-256 of the malicious Windows calc.bat dropper.
SHA2565886a9b659c05fb3e3077c80bb6a8be6acb1064683db542fae90e3bf9757f95fSHA-256 of the malicious macOS doc.sh dropper.
SHA2565f9c09c2c432a6b94f2200455065bcfd1237f8a01b913a7c9e37f164ff99a84cSHA-256 of the ntuser DLL extracted from the malicious MSI.
SHA2568e7213940a2f590af145226d22a96d416bcca4bc6cba3400a8a96fd3e7018080SHA-256 of the malicious Apple Silicon macOS stage-2 binary.
SHA256e0f206aac2c3fa733b0c466d2ebb86ba038cf1fe2edeee21e94a4d943a27f63bSHA-256 of the malicious solidity-macos VSIX version 0.1.8.
SHA256e903ae267bf7ed1d02b218c1dc7cf6d87257e87de9fbda411a13f9154716bfa3SHA-256 of the malicious Windows 7WhiteSmoke.msi installer.
SHA256fcd398abc51fd16e8bc93ef8d88a23d7dec28081b6dfce4b933020322a610508SHA-256 of the tampered pako/index.js file containing the injected code.
URLhxxps[:]//cdn[.]rraghh[.]com/gt/docMalicious Intel macOS binary download URL.
URLhxxps[:]//cdn[.]rraghh[.]com/gt/doc.shMalicious macOS shell dropper URL.
URLhxxps[:]//cdn[.]rraghh[.]com/gt/doc1Malicious Apple Silicon macOS binary download URL.
URLhxxps[:]//rraghh[.]com/gt/calc.batMalicious Windows batch dropper URL.

MITRE ATT&CK

T1027 · Obfuscated Files or InformationThe injected code uses Unicode escapes, bracket notation, XOR junk arithmetic, and reversed strings to obscure its behavior.T1036.004 · Masquerade Task or ServiceThe macOS persistence agent uses the label com.apple.system.updater to resemble an Apple system service.T1059.003 · Windows Command ShellThe Windows calc.bat dropper uses batch commands to reconstruct URLs, download an MSI, and install it.T1059.004 · Unix ShellThe macOS doc.sh dropper uses shell commands to install persistence and download and run binaries.T1059.007 · JavaScriptInjected JavaScript in pako uses child_process to launch platform-specific payload retrieval commands.T1105 · Ingress Tool TransferThe extension and platform-specific droppers use curl to download the Windows and macOS payloads.T1195.001 · Compromise Software Dependencies and Development ToolsThe attacker injected code into the bundled pako dependency in the VSCode extensions.T1195.002 · Compromise Software Supply ChainMalicious updates to established marketplace extensions were distributed using a compromised publisher account.T1218.010 · Regsvr32The Windows MSI runs regsvr32 /s /i to load and install the ntuser DLL.T1543.001 · Launch AgentThe macOS dropper creates and loads a LaunchAgent configured to run at login.T1546.004 · Unix Shell Configuration ModificationThe macOS script prepends ~/.local/bin to ~/.zshrc and ~/.bash_profile.T1553.001 · Gatekeeper BypassThe macOS dropper removes the downloaded binaries' quarantine attributes before execution to bypass Gatekeeper.

Vendors

Products

Tools

Related Articles