Supply Chain / Developer Tools

Tampered Claude Code Build Hit Up to 5,000 Cursor Users With an SSH Backdoor

For about 11 hours, a modified build under the real extension ID sat in Cursor's marketplace. It planted an SSH key, installed persistence and reported which hosts hold credentials. Uninstalling it removes none of that.

RedEye Security research desk · October 30, 2026
A neatly wrapped parcel tied with string, with one small red key tucked under the knot
TL;DR
  • What: A modified anthropic.claude-code version 2.1.313 was available in Cursor's VS Code extension marketplace from about 2:27 a.m. to 1:35 p.m. PT on October 29, 2026. Cursor says Anthropic did not develop it.
  • Impact: On load it adds an attacker SSH key labeled svc-telemetry, installs persistence, attempts a reverse SSH tunnel and reports host details, including the names of credential-like environment variables.
  • Fix / mitigation: Anthropic published 2.1.314. Removing the extension does not remove the key or the persistence, so Cursor published cleanup scripts and tells affected customers to rotate reachable credentials from a trusted system.
  • Who's at risk: Up to 5,000 Cursor users who installed the version during the window, including through auto-update. Cursor says it will contact them directly.

Cursor disclosed on October 29 that a maliciously modified build of Anthropic's Claude Code extension was served from its VS Code extension marketplace for about 11 hours. The build identified itself as anthropic.claude-code version 2.1.313, the extension's real ID rather than a lookalike. Cursor puts exposure at no more than 5,000 users and says the version "was not developed by Anthropic."

The Hacker News carried statements from Jenn Gile, co-founder of OpenSourceMalware, and security researcher Paul McCarty. Help Net Security reported the analysis by macOS security firm Phorion, and StepSecurity published a registry timeline and additional hashes. None of the notices cites a CVE: this is a poisoned release rather than a flaw in the extension's code. Gile noted that while the version was pulled quickly, anyone with auto-update on could have received it.

Supply Chain Compromiseanthropic.claude-code 2.1.313, Cursor marketplace
5,000
Users at most, per Cursor
~11 hrs
Live on October 29
~60 sec
Tunnel retry interval
2.1.314
Clean release

What the Build Did

The change was small and sat at the front of the bundle. Gile described a 66-line loader inserted before the legitimate code in the main JavaScript file. StepSecurity measured the malicious extension.js at 3,692,922 bytes, about 7 KB larger than the clean 2.1.312. Phorion CEO Calum Hall told Help Net Security the injected function runs when Node loads the file, before the extension's activate step, and needs no user interaction.

From there, the sources describe the same sequence:

No follow-on payload has been reported. Cursor says it worked with the hosting provider to take the attacker's server offline, which stops the tunnel and the beacon.

The Admin Rights Caveat, and Its Limit

Cursor says that turning on the SSH service requires admin rights the extension lacks on most macOS and Windows hosts, so on those hosts "the step fails and the attacker could not have logged in through the tunnel." The key, the persistence and the beacon still land, and Cursor says to remediate regardless.

Phorion draws the line differently. Hall called the macOS failure a bug rather than a defense: on a Mac with Remote Login already on, or one where the user turns it on later, the backdoor is ready to use. "The goal of this payload is long-term interactive access," he told Help Net Security. StepSecurity adds that interactive access was most likely where the editor ran elevated. Developer machines are a population where Remote Login and elevated sessions are both ordinary, so "most hosts" should not be read as "this host."

Uninstalling is not cleanup

Cursor and Phorion both warn that removing the extension leaves the planted key and the standalone scripts in place. Updating to 2.1.314 does not address them either.

Cursor's Marketplace or Open VSX? The Sources Disagree

This is the open question that changes who should be looking. Cursor's notice speaks only to its own marketplace. Phorion reported spotting the version on Open VSX, the Eclipse Foundation registry that VS Code forks rely on, and StepSecurity's timeline has it published to Open VSX and reaching Cursor through a mirror sync. Against that, The Hacker News corrected its story to say the incident traces to a compromise of Cursor's marketplace rather than Open VSX, and Ax Sharma of Manifold Security disputes that the Open VSX version was compromised.

We checked what can be checked from outside. On October 30, the Open VSX API returned not found for 2.1.313 and returned 2.1.312 and 2.1.314, with 2.1.314 published at 01:07 UTC that day. That does not settle it, because a purged version and a version that never existed look the same from there. Anthropic's public changelog moves from 2.1.312 straight to 2.1.314, with no 2.1.313 entry. Phorion reported no malicious version on Microsoft's Visual Studio Marketplace.

Indicators of Compromise

From Cursor's notice unless marked, defanged as published there. Cursor notes that lookups to ifconfig[.]me and api[.]ipify[.]org are legitimate services and not indicators on their own.

TypeIndicator
Attacker host134[.]209[.]82[.]225, reverse SSH as tunnel@ on TCP 22
Beaconhxxp://134[.]209[.]82[.]225:8099/beacon (HTTP POST); also attempted on 127[.]0[.]0[.]1:8099
SSH key commentsvc-telemetry
Planted key fingerprintSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk
Tunnel key fingerprintSHA256:KOAU57+ZG6u3MG4WwzPzPX2O5YEe9qdOC1Bl+6MVyDQ
VSIX, darwin-arm64 (SHA-256)432ccdee3801f99e52b8fe31f69ea9870118e96ea7ef9ecabed1479621b5ab62
VSIX, win32-x64 (SHA-256)3de1722901165769893bef57c72594e9a54459faa23f3091b136b79966edd081
extension.js (SHA-256, StepSecurity)ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15
macOS files~/Library/LaunchAgents/com.apple.sysmond.plist, ~/.config/.smt, ~/.config/.smtk, $TMPDIR/.stk_<10 hex>
Windows files%USERPROFILE%\.config\smt.cmd, %USERPROFILE%\.config\smtk, %TEMP%\.stk_<10 hex>, Startup\sysmon.cmd
Windows taskScheduled task SysMon, which attempts to run as SYSTEM
Processssh -N -R '*:0:localhost:22' and autossh -M 0, with StrictHostKeyChecking=no and UserKnownHostsFile=/dev/null

What Cursor Did, and What It Tells Customers

Cursor removed the version, shut down its marketplace as a precaution, audited access and reports finding no other tampered extensions, rotated keys, then rebuilt the marketplace and brought it back online. It says it has no evidence that other versions of the extension or the official distribution are affected.

Its notice tells affected customers to search endpoint, network and extension telemetry for the indicators above, isolate hosts showing execution, remove the key, persistence and tunnel processes, assess whether to rebuild, and rotate credentials and sessions reachable from those hosts using a trusted system. Cursor stresses that collecting only variable names does not rule out later credential access over the backdoor. Its notice carries the check steps and the macOS and Windows cleanup scripts. Phorion also suggests reviewing SSH logs for localhost logins that used the svc-telemetry key.

What Is Still Unknown

RedEye Assessment

Three points are worth carrying past this incident. First, checking the publisher would not have helped. This was the real extension ID, delivered as a routine update, and an allowlist of approved extensions would have passed it. Sharma made the same point: "Checking the publisher name doesn't help when the publisher is real." Controls that do apply here are version pinning, a delay on new releases, and knowing which registry each editor in the fleet pulls from.

Second, read the reconnaissance as a target list. Names of environment variables, a Git email and a working directory tell an operator which developer machines lead to cloud accounts and source control. The server is offline, but taking it down does not remove a planted key from a host, so a machine that received this build stays in an unknown state until someone looks. Until the Open VSX question is resolved, we would include every Open VSX based editor in that look rather than Cursor alone.

Third, the behavior is loud even though the package was quiet. An editor process writing to authorized_keys, spawning ssh -R or autossh, and dropping a LaunchAgent under a com.apple name is not normal for a coding extension. In Sharma's words, "a coding extension planting SSH keys should be caught in seconds." Whether that is true in a given organization depends on whether developer endpoints send that telemetry anywhere, and many are exempted from the controls applied to the rest of the fleet.

RedEye Security can assess whether your developer endpoints would surface a build like this one and review what those machines can reach. Contact our team to schedule an assessment.

Sources

Questions about your exposure?

RedEye Security provides assessments for organizations that need to understand their real risk.

Talk to us