MAG212 CYBER ORIGINAL ARTICLE

Malicious Claude Code Extension in Cursor: How to Check Your PC or Mac

November 3, 2026 · El Mostafa Ouchen

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.

BackdoorCursorClaude Code extensionmacOSWindows
Package
Anthropic.claude-code
VS Code extension
Versions
2.1.312 · 2.1.313
macOS arm64 · Windows x64
Exposure
≤ 5,000
users, per Cursor
Check for
svc-telemetry
in authorized_keys

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-code 2.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
Watch: the full 7-minute video walkthrough on the MAG212 CYBER YouTube channel.

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

  1. ReconnaissanceCollects hostname, username, OS and architecture, home folder, environment variable names, working folders, Git email and public IP, then sends them to the attacker.
  2. Attacker SSH keyAppends an attacker-controlled ssh-ed25519 key labeled svc-telemetry to authorized_keys.
  3. Enable SSHTries to turn on the local SSH service. This generally fails without administrator rights.
  4. Reverse tunnelTries to open a reverse SSH tunnel to the attacker’s server, retrying about every 60 seconds.
  5. PersistencemacOS: a LaunchAgent labeled com.apple.sysmond. Windows: a scheduled task SysMon that tries to run as SYSTEM, with sysmon.cmd in the Startup folder as a fallback.
Figure 1. MAG212 CYBER illustration of the behavior described in Cursor’s security notice.1
The good news, and why it’s not enough

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.

macOS · Cursor’s key checkTerminal
grep -qs svc-telemetry ~/.ssh/authorized_keys \
  && echo "svc-telemetry key found" \
  || echo "No key found; machine not impacted"
macOS · look for the persistence filesTerminal
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.

Windows · Cursor’s key checkPowerShell
$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" }
Windows · look for the persistencePowerShell
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.

What a clean result means

“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.sh as the affected user, not root. On Windows, run remediate-windows.ps1 from 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

TypeIndicator (from Cursor’s notice)
Attacker host134[.]209[.]82[.]225
BeaconHTTP POST to :8099/beacon
Reverse tunneltunnel@134[.]209[.]82[.]225, TCP 22
SSH key commentsvc-telemetry
Key fingerprintSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk
Processesssh -N -R ‘*:0:localhost:22’ · autossh -M 0
macOS files~/Library/LaunchAgents/com.apple.sysmond.plist · ~/.config/.smt · ~/.config/.smtk · $TMPDIR/.stk_*
WindowsTask 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

ControlWhy it helps
Inventory editor extensionsYou can’t respond quickly to an incident in a tool you don’t know you run.
Pin versions on critical toolsA short delay on auto-updates gives marketplaces time to catch a bad release.
Never run your editor as adminLack of admin rights is what made the SSH step fail on most machines.
Alert on authorized_keys and startup changesNew SSH keys, LaunchAgents and scheduled tasks are high-signal events.
Keep long-lived secrets out of env varsShort-lived, scoped credentials are worth less if a machine is exposed.
MAG212 CYBER assessment

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

  1. Security notice: malicious version of Anthropic.claude-code identified in the Cursor VS Code Extension Marketplace — Cursor, Oct 29, 2026 (updated Oct 30)
  2. Anthropic: That Claude Code extension compromise… couldn’t be us — The Register
  3. 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.

EO

El Mostafa Ouchen
MAG212 CYBER. Writes practical threat research and defensive guidance for security and engineering teams.

Get the next analysis first

Practical security research and defensive guidance, free in your inbox.

Subscribe free