Skip to main content
$500k Lost to a Malicious IDE ExtensionIncident
4 min readFor Security Engineers

$500k Lost to a Malicious IDE Extension

A developer installed what seemed to be a legitimate Solidity language extension for Cursor IDE. Within hours, their cryptocurrency wallet was drained of $500,000. The malware spread through the Open VSX Registry, an unofficial extension marketplace, reaching over 50,000 downloads before its removal on July 2nd.

This was not a sophisticated supply chain attack or a zero-day exploit. It was a malicious extension in an unvetted registry, installed by developers who assumed their IDE's extension ecosystem was safe.

What Happened

The attack targeted users of Cursor IDE, a VS Code fork popular among blockchain developers. The malicious code posed as a "Solidity Language" extension—a tool essential for writing smart contracts. Once installed, the extension executed code that stole private keys and drained accessible cryptocurrency wallets.

The extension was hosted on the Open VSX Registry, not the official Visual Studio Code Marketplace. Cursor IDE, like several VS Code alternatives, defaults to Open VSX for extensions. Many developers are unaware they're installing from a different—and less moderated—source.

Timeline

Pre-incident: The malicious extension was published to the Open VSX Registry. The exact publication date hasn't been disclosed, but the extension accumulated over 50,000 downloads before detection.

Discovery: The compromise was identified after the victim reported the $500,000 theft. Security researchers traced the loss back to the IDE extension.

July 2: Open VSX Registry removed the malicious extension.

Post-removal: The total number of compromised wallets remains unknown. With 50,000+ downloads, the actual victim count could be substantial.

Which Controls Failed

No extension vetting process. The Open VSX Registry accepted the malicious extension without apparent code review or publisher verification. Unlike the official VS Code Marketplace, which requires publisher verification and performs automated security scans, Open VSX operates with minimal gatekeeping.

No runtime permission model. The extension ran with full access to the developer's filesystem and environment variables—where cryptocurrency wallet keys are often stored. There was no prompt asking if the extension should access sensitive directories.

No network egress monitoring. The extension made outbound connections to exfiltrate stolen credentials. The developer's workstation lacked monitoring to flag unusual network activity from an IDE process.

Missing code signing verification. Developers had no way to verify the extension's publisher identity or confirm the code hadn't been tampered with since publication.

No principle of least privilege. The developer's cryptocurrency wallet keys were accessible to any process running under their user account. No hardware wallet, no separate signing machine, no additional authentication required.

What Standards Require

ISO/IEC 27001:2022 Annex A.8.23 requires organizations to filter web content and control what software can be downloaded. Installing extensions from unvetted registries violates this control. Your acceptable use policy should explicitly list approved extension sources.

NIST 800-53 Rev 5 Control CM-7 (Least Functionality) requires you to restrict software to only what's necessary and review it for security. Each IDE extension is software. Treat it accordingly: require justification, review permissions, document approval.

PCI DSS v4.0.1 Requirement 6.3.2 mandates that custom software development follows secure coding practices. Your IDE is part of your development environment. If an extension can inject malicious code or exfiltrate data, it can compromise the software you're building—and the cardholder data it processes.

SOC 2 Type II CC6.1 (Logical and Physical Access Controls) requires you to restrict logical access to assets. IDE extensions have logical access to your source code, credentials, and environment variables. You need controls around what gets installed and what permissions it receives.

Lessons and Action Items

1. Whitelist approved extension sources. Configure your IDE to only install from the official VS Code Marketplace. If you must use Open VSX or another registry, require security review before installation. Document the approved sources in your secure development policy.

2. Implement extension approval workflow. Require developers to request extensions through a ticket system. Security reviews the extension's:

  • Publisher verification status
  • Permission requirements
  • Source code (if available)
  • Community reports and issue history
  • Download count and age (brand-new extensions with few downloads are higher risk)

3. Audit installed extensions quarterly. Run code --list-extensions across your developer fleet. Compare against your approved list. Remove anything unauthorized. Automate this with your endpoint management tool.

4. Isolate high-value credentials. Never store cryptocurrency keys, production API tokens, or signing certificates on your development workstation. Use hardware wallets for crypto assets. Use credential vaults with short-lived tokens for cloud access. Require MFA for any financial transaction.

5. Monitor process network activity. Deploy EDR that alerts on unusual network connections from development tools. An IDE extension shouldn't be making HTTPS requests to unfamiliar domains. Configure your EDR to flag this behavior.

6. Segment your development environment. Don't write smart contracts on the same machine where you hold cryptocurrency. Don't commit code from the same workstation where you have production access. Use separate machines or VMs with different privilege levels.

7. Review extension permissions before installation. Even from the official marketplace, check what the extension requests. Does a syntax highlighter need network access? Does a theme need to read your clipboard? If the permissions don't match the functionality, reject it.

8. Train developers on registry differences. Many developers don't realize Cursor IDE uses a different extension source than VS Code. Make this explicit in onboarding. Explain why it matters and what the risks are.

The $500,000 loss came from a single installation decision. Your team makes dozens of these decisions every week. Treat IDE extensions as the privileged code they are—because they run with your credentials, in your environment, with access to everything you're building.

Topics:Incident

You Might Also Like