Malicious Claude Code Extension in Cursor: How to Check Your PC or Mac
Supply-Chain Attack · AI Coding Tools
For about 11 hours on October 29, Cursor’s extension marketplace served a tampered Claude Code extension that planted an attacker’s SSH key and survived being uninstalled. Here’s what happened, how to check your PC or Mac in a minute, and what to do if you find it.
An AI coding extension runs with your permissions, sees your code and can touch your SSH keys. On October 29, 2026, that trust was abused. A tampered copy of the Claude Code extension sat in Cursor’s marketplace for about eleven hours. Uninstalling it did not remove what it left behind.
Key takeaways
- Who’s at risk: anyone who installed or updated
Anthropic.claude-code2.1.312 or 2.1.313 from Cursor’s VS Code extension marketplace on Oct 29, 2026, between about 2:27 a.m. and 1:35 p.m. PT.1 - What it did: it collected host details, added an attacker SSH key labeled
svc-telemetry, installed startup persistence and tried to open a reverse SSH tunnel.1 - Uninstalling is not enough. The key and startup scripts stay behind and run on their own.1
- Not Anthropic’s build: Cursor says Anthropic did not develop this version. Anthropic says its official channels were not affected.1,2
01 / WHAT HAPPENEDEleven hours in a trusted marketplace
Cursor’s security notice says that between about 2:27 a.m. and 1:35 p.m. Pacific time on October 29, a maliciously modified Claude Code extension was available in the Cursor VS Code extension marketplace. On October 30, Cursor updated the notice to list two affected versions, 2.1.312 and 2.1.313, built for Apple-silicon Macs and 64-bit Windows.1 Cursor says up to 5,000 users were affected and that it is contacting them directly.1
Cursor removed the version and then shut down its whole marketplace as a precaution. It audited access and confirmed no other extensions were tampered with. It rotated its keys, rebuilt the marketplace and brought it back online. It also worked with the hosting provider to take the attacker’s server offline.1
Anthropic told The Register that a malicious actor used access to Cursor’s marketplace to publish the tampered copy, and that versions on its official channels are not affected.2 Early reports also named other registries. BleepingComputer later reported that Cursor was confirmed as the only source distributing the malicious extension.3 Cursor has not said publicly how the attacker got access to its marketplace.
02 / HOW IT WORKEDFive steps, no prompt needed
Researchers found that the attackers put a malicious JavaScript loader at the top of the extension’s extension.js file and left the rest of the code unchanged. It ran as soon as the editor loaded the extension. The user didn’t have to interact with Claude Code at all.3
The attack chain
- ReconnaissanceCollects hostname, username, OS and architecture, home folder, environment variable names, working folders, Git email and public IP, then sends them to the attacker.
- Attacker SSH keyAppends an attacker-controlled
ssh-ed25519key labeledsvc-telemetrytoauthorized_keys. - Enable SSHTries to turn on the local SSH service. This generally fails without administrator rights.
- Reverse tunnelTries to open a reverse SSH tunnel to the attacker’s server, retrying about every 60 seconds.
- PersistencemacOS: a LaunchAgent labeled
com.apple.sysmond. Windows: a scheduled taskSysMonthat tries to run as SYSTEM, withsysmon.cmdin the Startup folder as a fallback.
Cursor says the step that turns on SSH needs administrator rights, so on most Macs and Windows PCs it fails. That would stop the attacker from logging in through the tunnel. But the extension still adds the attacker’s key, installs persistence and sends host details. Uninstalling the extension may not be enough, because the standalone persistence scripts keep running.1
03 / CHECK YOUR MACHINEOne-minute checks for Mac and Windows
Cursor’s notice gives one primary test: look for the svc-telemetry key in your SSH authorized keys. If it’s there, the machine is impacted.1 The commands below are Cursor’s checks, followed by MAG212 CYBER’s extra checks for the persistence files listed in its indicators.
grep -qs svc-telemetry ~/.ssh/authorized_keys \ && echo "svc-telemetry key found" \ || echo "No key found; machine not impacted"
ls -la ~/Library/LaunchAgents/com.apple.sysmond.plist \
~/.config/.smt ~/.config/.smtk 2>/dev/null
ls -la "$TMPDIR"/.stk_* 2>/dev/null
launchctl list | grep -i sysmond
Any output from these means you need to respond (see Section 04). Repeat the checks for every user account on the Mac.
$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" }
Get-ScheduledTask -TaskName SysMon -ErrorAction SilentlyContinue Test-Path "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd" Test-Path "$env:USERPROFILE\.config\smt.cmd", "$env:USERPROFILE\.config\smtk" Get-ChildItem "$env:TEMP" -Force -Filter ".stk_*" -ErrorAction SilentlyContinue
The key check comes from Cursor’s notice. The persistence checks are MAG212 CYBER examples built from the file and task names in Cursor’s indicators.1 A scheduled task, any True or any file listed means you need to respond.
“No key found” proves only that the labeled key is not in those files right now. It does not rule out other user accounts, deleted traces or leftover persistence. Run all the checks, on every account. If you manage a fleet, search your endpoint security tools across all devices for the indicators in Section 05.
04 / RESPONDIf you find it
- 1 · Isolate the machineTake it off the network. On a work device, preserve evidence and contact your security team before changing anything.
- 2 · Remove the key, persistence and tunnelCursor publishes remediation scripts. On macOS, run
remediate-macos.shas the affected user, not root. On Windows, runremediate-windows.ps1from PowerShell opened as Administrator. The scripts exit with an error if anything remains.1 Download them only from Cursor’s official notice. - 3 · Rotate credentials from a trusted deviceRotate passwords, tokens, SSH keys and cloud credentials that were reachable from the affected machine. Cursor notes that the limited environment-variable collection doesn’t rule out later credential access through the backdoor.1
- 4 · Consider rebuildingCursor recommends assessing whether to rebuild the host.1 A cleanup script removes what’s known. A rebuild also removes what isn’t.
05 / FOR IT TEAMSIndicators of compromise
| Type | Indicator (from Cursor’s notice) |
|---|---|
| Attacker host | 134[.]209[.]82[.]225 |
| Beacon | HTTP POST to :8099/beacon |
| Reverse tunnel | tunnel@134[.]209[.]82[.]225, TCP 22 |
| SSH key comment | svc-telemetry |
| Key fingerprint | SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk |
| Processes | ssh -N -R ‘*:0:localhost:22’ · autossh -M 0 |
| macOS files | ~/Library/LaunchAgents/com.apple.sysmond.plist · ~/.config/.smt · ~/.config/.smtk · $TMPDIR/.stk_* |
| Windows | Task SysMon · Startup\sysmon.cmd · %USERPROFILE%\.config\smt.cmd · %USERPROFILE%\.config\smtk · %TEMP%\.stk_* |
Lookups to ifconfig.me or api.ipify.org are legitimate services. Cursor says access to them alone is not an indicator. Check the notice for the latest package and payload hashes.1
06 / PREVENTIONMake the next extension incident smaller
| Control | Why it helps |
|---|---|
| Inventory editor extensions | You can’t respond quickly to an incident in a tool you don’t know you run. |
| Pin versions on critical tools | A short delay on auto-updates gives marketplaces time to catch a bad release. |
| Never run your editor as admin | Lack of admin rights is what made the SSH step fail on most machines. |
| Alert on authorized_keys and startup changes | New SSH keys, LaunchAgents and scheduled tasks are high-signal events. |
| Keep long-lived secrets out of env vars | Short-lived, scoped credentials are worth less if a machine is exposed. |
AI coding extensions are now part of the software supply chain, and they run with the same rights as the developer. The lesson isn’t to stop using them. Treat extension updates like any other code you run: inventory them, limit their privileges and watch the places attackers use to persist.
REFERENCESSources
- Security notice: malicious version of Anthropic.claude-code identified in the Cursor VS Code Extension Marketplace — Cursor, Oct 29, 2026 (updated Oct 30)
- Anthropic: That Claude Code extension compromise… couldn’t be us — The Register
- Malicious Claude Code extension on Cursor planted SSH backdoors — BleepingComputer, Oct 30, 2026
Methodology. Facts were checked against Cursor’s security notice and the reporting above on November 3, 2026. The persistence checks are MAG212 CYBER examples built from Cursor’s published indicators and were not run against an infected host. No malware was executed for this article. Disclosure: this article was prepared with help from Claude, an AI assistant made by Anthropic, whose extension is the subject of this incident.
Get the next analysis first
Practical security research and defensive guidance, free in your inbox.
