↓ Skip to main content
Security alert title card: Trojanized Claude Code extension 2.1.313, Cursor Marketplace, 29 Oct 2026, with the command grep svc-telemetry ~/.ssh/authorized_keys and the note SSH backdoor, up to 5,000 users, what to do

Malicious Claude Code Extension 2.1.313 in Cursor: How It Worked and What To Do

·1398 words·7 mins
Table of Contents

I use Claude Code every day, so when Cursor posted a security notice about a malicious Claude Code extension in its marketplace, I dropped everything and read it twice. If you use Cursor (or anything that pulls extensions from Open VSX), take five minutes and check your machine. It’s one command.

Warning

If you installed or auto-updated to Anthropic.claude-code 2.1.313 in Cursor on 29 October 2026 (between about 2:27am and 1:35pm PT), treat that machine as compromised until you’ve checked it. Uninstalling the extension is not enough.

Quick answer: what happened?
#

On 29 October 2026, a trojanized build of Anthropic’s Claude Code VS Code extension, version 2.1.313, was served by the Cursor extension marketplace for roughly 11 hours. On load, it planted an attacker SSH key, installed persistence, tried to open a reverse SSH tunnel and beaconed host details to 134.209.82.225. Cursor says at most 5,000 users were affected. Anthropic did not build that version.1

DetailValue
Packageanthropic.claude-code 2.1.313 (darwin-arm64 and win32-x64 builds)
Exposure window29 Oct 2026, ~2:27am to 1:35pm PT (09:27 to 20:35 UTC)
Affected usersAt most 5,000, per Cursor
PayloadSSH key implant, persistence, reverse SSH tunnel, HTTP recon beacon
Attacker server134.209.82.225 (now offline)
Clean versions2.1.312 and 2.1.314
Tell-tale signSSH key with the comment svc-telemetry in authorized_keys

How the attack worked
#

The scary part is how ordinary it looked. The package carried the real Anthropic publisher identity, not a typosquat. StepSecurity found the malicious build was the official extension in every way except extension.js, which had a small loader (about 7 KB) inserted in front of the legitimate code.2 OpenSourceMalware described it as a 66-line loader.3

No prompt, no click, no install script. Just loading the extension was enough to run the payload, and anyone with auto-update on could have pulled it silently.3

flowchart TD
  A[Cursor auto-updates Claude Code to 2.1.313] --> B[extension.js loader runs]
  B --> C[Collect host info]
  B --> D[Add svc-telemetry key to authorized_keys]
  B --> E[Install persistence]
  B --> F[Reverse SSH tunnel to 134.209.82.225]
  C --> G[POST to :8099/beacon]
  E --> F

Step by step, according to Cursor’s notice:1

  1. Recon. It collected hostname, username, OS, architecture, home directory, working directories, your global Git email, public IP, and the names of environment variables. Researchers say it grabbed up to 40 names containing words like KEY, TOKEN, SECRET, PASS, AWS or GCP. The values were not in the beacon, but the names alone tell an attacker which clouds and CI systems you use.3
  2. SSH key implant. It appended an attacker-controlled ssh-ed25519 key labeled svc-telemetry (a name picked to look boring) to your ~/.ssh/authorized_keys.
  3. Enable SSH and tunnel out. It tried to turn on the local SSH server and open a reverse tunnel (ssh -N -R '*:0:localhost:22') so the attacker could reach your machine from outside, past your NAT and firewall.
  4. Persistence. A LaunchAgent called com.apple.sysmond on macOS; on Windows a scheduled task called SysMon that tries to run as SYSTEM, with a Startup-folder fallback. Background scripts retry the tunnel about every 60 seconds. StepSecurity also saw a cron @reboot entry in its analysis.2
  5. Beacon. It POSTed host details and backdoor status over plain HTTP to port 8099.

The (small) good news
#

Turning on the SSH server needs admin rights. On most macOS and Windows machines Cursor doesn’t run as admin, so that step failed and, per Cursor, the attacker could not have logged in through the tunnel. Bugs in the malicious code made it fail too. But the key was still added, the persistence was still installed and your host details were still sent. And the attacker server has since been taken offline with help from the hosting provider.1

Who got affected?
#

  • Cursor users who installed or updated to 2.1.313 from the Cursor marketplace during the window. Cursor says that’s at most 5,000 people and it will contact them directly.1
  • The known malicious builds were macOS on Apple silicon (darwin-arm64) and Windows x64.
  • Cursor says it has no evidence other versions, other extensions or the official distribution were affected, and its audit found no other tampered extensions.1
Note

Reports differ on where the bad build first came from. StepSecurity’s early write-up said it was published to Open VSX and mirrored into Cursor.2 The Hacker News later corrected its story to say the incident was traced to a compromise of the Cursor marketplace.3 Either way, both registries now serve 2.1.312 and 2.1.314 and no longer serve 2.1.313. If you use VSCodium, Windsurf or another Open VSX client, run the check anyway. It costs nothing.

What to do next
#

1. Check if you’re impacted
#

On macOS (or Linux):

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

On Windows (PowerShell):

$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }

These are Cursor’s official checks.1 Also check which Claude Code version you have in the Extensions panel, and update to 2.1.314 or later.

2. If the key is there
#

Follow Cursor’s steps, in order:1

  1. Isolate the machine from the network.
  2. Run Cursor’s remediation script. On macOS, download remediate-macos.sh and run bash remediate-macos.sh as your normal user, not root. On Windows, download remediate-windows.ps1 and run it from an Administrator PowerShell with powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1. The scripts remove the extension, the persistence, the tunnel processes and the key, and exit non-zero if anything is left.
  3. Consider rebuilding the machine. A backdoor that might have been reachable is a good reason for a clean install.
  4. Rotate credentials and sessions reachable from that machine (cloud keys, Git tokens, API keys, SSH keys), and do it from a different, trusted machine.
  5. If you run a team, search your endpoint and network telemetry for the indicators below.

3. Lessons I’m taking from this
#

  • Auto-update is a supply chain. A trusted name on a package is not a guarantee. For critical tooling, consider pinning extension versions or delaying updates by a day or two.
  • Watch your authorized_keys. It’s one small file and almost nobody looks at it. A simple file-integrity alert would have caught this.
  • Keep secrets out of plain environment variables where you can. Even the names leaked here.
  • Don’t run your editor as admin. That alone is what broke the tunnel for most people.

Indicators of compromise
#

Network, SSH and package hashes
  • Attacker IP: 134.209.82.225 (reverse SSH as tunnel@ on TCP 22; beacon http://134.209.82.225:8099/beacon)
  • Local beacon attempt: 127.0.0.1:8099/beacon
  • Implanted key fingerprint: SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk, comment svc-telemetry
  • Tunnel key fingerprint: SHA256:KOAU57+ZG6u3MG4WwzPzPX2O5YEe9qdOC1Bl+6MVyDQ
  • VSIX SHA-256 (darwin-arm64): 432ccdee3801f99e52b8fe31f69ea9870118e96ea7ef9ecabed1479621b5ab62
  • VSIX SHA-256 (win32-x64): 3de1722901165769893bef57c72594e9a54459faa23f3091b136b79966edd081
  • extension.js contains both 134.209.82.225 and svc-telemetry
  • Lookups to ifconfig.me or api.ipify.org alone are not indicators; they’re legitimate services.
Files, persistence and processes
  • macOS: ~/.config/.smt, ~/.config/.smtk, $TMPDIR/.stk_<10 hex>, ~/Library/LaunchAgents/com.apple.sysmond.plist
  • Windows: %USERPROFILE%\.config\smt.cmd, %USERPROFILE%\.config\smtk, %TEMP%\.stk_<10 hex>, scheduled task SysMon, Startup\sysmon.cmd
  • Commands: ssh -N -R '*:0:localhost:22', autossh -M 0, schtasks /create /tn SysMon, systemsetup -setremotelogin on, Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Full list is in Cursor’s notice and StepSecurity’s analysis.12

What Cursor did
#

Cursor pulled the version as soon as it was detected, then shut the whole marketplace down as a precaution. It audited access, rotated its keys, rebuilt the marketplace and brought it back online, and worked with the hosting provider to take the attacker’s server down.1 Questions go to security@cursor.com.

FAQ
#

Is the official Claude Code extension safe now? Version 2.1.313 has been removed, and Anthropic published 2.1.314 to Open VSX and the Microsoft marketplace.3 Update and run the check above.

I uninstalled the extension. Am I fine? Not necessarily. The payload drops standalone scripts that keep running after the extension is gone. Run the check and the remediation script.1

Were my secrets stolen? The beacon sent environment variable names, not values.3 But if the tunnel worked on your machine (for example, Cursor running as admin), assume anything on it was reachable and rotate.

Does this affect the Claude Code CLI? The reports are about the VS Code extension package anthropic.claude-code 2.1.313 only.

Stay safe, and go grep your authorized_keys.