A new Remote Access Trojan (RAT), dubbed SleepyDuck, has been identified in a malicious extension on the Open VSX registry, a popular alternative to the VS Code Marketplace. The malware was delivered via a supply chain attack, where a legitimate-seeming extension named juan-bianco.solidity-vlang was updated to include malicious code. The RAT uses a novel and highly resilient command-and-control (C2) mechanism, leveraging an Ethereum smart contract to dynamically retrieve its C2 server address, making it difficult to takedown. The malware exfiltrates system information and awaits further commands, posing a significant threat to developers who installed the compromised extension.
This campaign represents a growing trend of targeting software developers through their development tools. The attacker employed a classic bait-and-switch tactic: publishing a benign extension to build trust and a user base (reportedly 14,000 downloads), and then pushing a malicious update (version 0.0.8) on November 1, 2025. The malware, SleepyDuck, is designed to activate when a developer opens a new code editor window or a Solidity (.sol) file, indicating a specific interest in developers working with smart contracts.
The most innovative aspect of SleepyDuck is its C2 infrastructure. Instead of relying on hardcoded domains or IPs, it queries a public Ethereum smart contract to get the current C2 address. This allows the attacker to easily update the C2 server if the current one is blocked or taken down, simply by sending a transaction to their smart contract.
T1195.002 - Compromise Software Supply Chain. Users voluntarily installed the extension from the Open VSX marketplace.T1127 - Trusted Developer Utilities Proxy Execution.0xDAfb81732db454DA238e9cFC9A9Fe5fb8e34c465 to retrieve the C2 server address. This is a sophisticated variant of T1102.002 - Bidirectional Communication, using a public blockchain as a dead drop resolver. The malware then communicates with the resolved C2 server, sleepyduck[.]xyz, likely over standard web protocols (T1071.001 - Web Protocols).T1082 - System Information Discovery and exfiltrates it to the C2 server.The use of a blockchain smart contract for C2 is a significant evolution in malware design. It creates a decentralized, censorship-resistant, and easily updatable pointer to the active C2 server, presenting a major challenge for defenders who rely on static domain or IP blocklists.
| Type | Value | Description |
|---|---|---|
| other | 0xDAfb81732db454DA238e9cFC9A9Fe5fb8e34c465 |
Ethereum smart contract address used for C2 resolution. |
| domain | sleepyduck[.]xyz |
Malicious C2 domain retrieved from the smart contract. |
| file_name | juan-bianco.solidity-vlang (version 0.0.8) |
The malicious Open VSX extension. |
| Type | Value | Description |
|---|---|---|
| network_traffic_pattern | Connections to Ethereum nodes | Monitor for unexpected processes making connections to public Ethereum gateways (e.g., Infura, Alchemy) from developer workstations. |
| domain | sleepyduck.xyz |
Block and alert on any DNS queries or outbound connections to this domain. |
| file_name | juan-bianco.solidity-vlang |
Search developer machines for the presence of this extension, specifically version 0.0.8. |
D3-OTF - Outbound Traffic Filtering.Implementing strict egress filtering to block outbound connections to unauthorized domains, including the dynamically resolved C2 server.
Mapped D3FEND Techniques:
Running developer environments inside containers or sandboxes to limit the malware's access to the host system.
Educating developers on the risks of third-party extensions and establishing policies for vetting and approving them.
To neutralize the SleepyDuck RAT, organizations must implement strict outbound traffic filtering on developer workstations. A default-deny policy should be established, blocking all egress network connections except those explicitly required for development and business operations. This is particularly effective against SleepyDuck's novel C2 mechanism. By blocking outbound connections to both the Ethereum blockchain gateways (used for C2 resolution) and the resolved C2 domain (sleepyduck.xyz), the malware is rendered inert. It cannot receive commands or exfiltrate data, effectively breaking the attack chain post-infection.
Organizations should maintain a strict inventory of approved IDE extensions for developers. Create a policy that only allows the installation of extensions from a pre-vetted allowlist of trusted publishers and tools. This can be enforced through IDE settings management or endpoint security policies. This preventative measure stops supply chain attacks like the SleepyDuck campaign at the source, by ensuring that trojanized extensions like juan-bianco.solidity-vlang can never be installed in the first place. This shifts the security posture from reactive detection to proactive prevention.
For vetting new or untrusted IDE extensions, security teams should use dynamic analysis in a sandboxed environment. Before an extension is approved for widespread use, it should be installed in an isolated virtual machine or container that mimics a developer's environment. The sandbox should have network and process monitoring enabled to observe the extension's behavior upon installation and activation. This process would quickly reveal suspicious activities, such as SleepyDuck's attempt to connect to an Ethereum node or an unknown C2 server, allowing the malicious extension to be identified and blocked before it enters the production environment.

Cybersecurity professional with over 10 years of specialized experience in security operations, threat intelligence, incident response, and security automation. Expertise spans SOAR/XSOAR orchestration, threat intelligence platforms, SIEM/UEBA analytics, and building cyber fusion centers. Background includes technical enablement, solution architecture for enterprise and government clients, and implementing security automation workflows across IR, TIP, and SOC use cases.
Help others stay informed about cybersecurity threats