CUTSIGNcutting for sign — daily OSINT threat read
AI-generated draft, unreviewed. Version 3, written by a model from the stored public sources on 2026-10-31; hype score 6. It is regenerated when the evidence changes and is published as a verdict card under /cards/ once it crosses the publish bar. Status: superseded. Supersedes version 2.

Trojanized Claude Code extension 2.1.313 on Cursor Marketplace adds SSH key, persistence and beacon

Hunt / IR + PatchP1confidence: mediumP1 +2deep read +1primary source +1material development on watch +2P1: card on day one (score below the publish bar; revised as the story develops)

A malicious Claude Code extension build (2.1.313) was distributed through the Cursor Marketplace for about 11 hours on Oct 29, 2026, reaching at most 5,000 users. Today, find any developer host that received it, then hunt for the 'svc-telemetry' SSH key, IDE-spawned persistence and traffic to 134.209.82.225.

Triage: The backdoor reached developer workstations through an auto-updating marketplace, and the reporting gives concrete artifacts to hunt today. [S1]

The core claims come from reputable secondary reporting [S1]. The pipeline attributes the artifact quotes to the vendor release page [S2], but the inputs do not show that page's text, so vendor confirmation is not verified.

Changed since version 2

What happened

Timeline

2026-10-29 ~02:27 PTMalicious 2.1.313 becomes available via the Cursor Marketplace. S1
2026-10-29 ~13:35 PTDistribution window ends. S1
2026-10-30Public reporting with IoCs and artifact details. S1

Detect

svc-telemetry key in authorized_keys · FIM / EDR file events on ~/.ssh/authorized_keys

index=* (file_path="*/.ssh/authorized_keys" OR TargetFilename="*authorized_keys") "svc-telemetry" | stats count min(_time) as first max(_time) as last by host, user, file_path, process_name

A hit means: The attacker key was planted on this host. Treat the host as compromised and check whether SSH is enabled.

Traffic to C2 134.209.82.225 · Firewall / proxy / EDR network events

index=* (dest_ip="134.209.82.225" OR dest="134.209.82.225" OR url="*134.209.82.225*") | stats count min(_time) as first max(_time) as last by src_ip, user, dest_port, process_name, url

A hit means: Port 8099 means the beacon sent host recon. Other ports, especially an SSH session, suggest the reverse tunnel was established.

Persistence created by the IDE · EDR process/file events, Windows 4698, macOS LaunchAgents FIM

index=* earliest="10/29/2026:00:00:00" (parent_process_name="*Cursor*" OR process_name="*Cursor*") (process_name IN ("schtasks.exe","crontab","launchctl") OR EventCode=4698 OR file_path="*/Library/LaunchAgents/*") | stats count by host, user, process_name, command_line, file_path

A hit means: The Cursor process tree created a scheduled task, cron entry or LaunchAgent. This likely matches the loader's persistence.

Beacon pattern and IP lookup from IDE · Proxy

index=* ((dest_port=8099 uri_path="/beacon") OR (url="*api.ipify.org*" (process_name="*Cursor*" OR process_name="*node*"))) | stats count by src_ip, user, url, process_name

A hit means: This matches the beacon behaviour and should catch it if the C2 IP changes. An ipify request alone is weaker and needs corroboration.

Verify

Scope

Affected

Only if

Not affected if

Fixed in: 2.1.314 (pipeline exposure data; confirm against [S2])

Enumerate

Contain

Eradicate

Recover

Re-enter the loop when

Debrief

Detection coverage — checked automatically

CategorySourceStatus
VendorImpacted vendor / CERT advisorypublished — primary source among the thread's sources: https://github.com/anthropics/claude-code/releases
GovernmentCISA KEVnot checkable — no CVE: the catalog is keyed by CVE
EDR / endpoint VMCrowdStrike blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMMicrosoft Security blogpublished — Inside a malicious Claude Code-branded extension and its persistent SSH backdoor · Tracking AI adoption in North Korean threat actor tradecraft · Agents are your newest insiders. Security must move at their speed. (names the campaign in the title; the feed text carries no CVE id)
EDR / endpoint VMSentinelOne blogpublished — Bring Your Own Vulnerable Driver: How EDR Killing Became an Industry · The Good, the Bad and the Ugly in Cybersecurity - Week 41 (2026) (names the campaign in the title; the feed text carries no CVE id)
EDR / endpoint VMSentinelOne Labspublished — Don’t Call Us, We’ll Call Your APIs | TraderTraitor Backdoors Resurface on Victim With No Crypto Ties (names the campaign in the title; the feed text carries no CVE id)
WAF / edgeAkamai blognothing found — no post names it among the feed's 1179 newest items
WAF / edgeCloudflare WAF managed-ruleset changelognothing found — no post names it among the feed's 136 newest items
Cloud / containerWiz blognothing found — no post names it among the feed's 714 newest items
IDS / researchCisco Talos blogpublished — Appraisal by AI: Model-driven victim prioritization in the VOLTA infostealer · IR trends Q3 2026: Actors impersonate IT help desks in vishing attacks as ransomware activity increases · Inside KeyDrift: Analyzing historical UAT-11473 activity on Cisco SD-WAN (names the campaign in the title; the feed text carries no CVE id)
Detection contentElastic detection rulespublished — 34 files name Trojanized / Claude / Cursor: rules/macos/command_and_control_suspicious_curl_from_macos_application.toml, rules/macos/discovery_suspicious_sip_check.toml, rules/macos/discovery_full_disk_access_check.toml, rules/macos/persistence_ssfilecopyreceiver_file_writes.toml
Detection contentElastic Security Labspublished — Auditing the auditor: Unmasking Apex Accelerator · No MDM for Linux? A 68-line Elastic workflow keeps every endpoint's config current (names the campaign in the title; the feed text carries no CVE id)
Detection contentSigmaHQ rulespublished — 15 files name Trojanized / Claude / Cursor: rules-emerging-threats/2023/TA/Lazarus/README.md, rules/windows/process_creation/proc_creation_win_lolbin_gather_network_info.yml, rules-emerging-threats/2023/TA/Lazarus/image_load_apt_lazarus_side_load_activity.yml, rules/windows/process_creation/proc_creation_win_susp_gather_network_info_execution.yml
Detection contentSplunk ESCUpublished — 36 files name Trojanized / Claude / Cursor: stories/gomir.yml, stories/salat_stealer.yml, stories/meduza_stealer.yml, stories/starland_rat_campaign.yml
MSSP / IR firmsArctic Wolf blognothing found — no post names it among the feed's 10 newest items
MSSP / IR firmsHuntress blogpublished — Fighting AI Slop in Production Codebases: How Huntress Improved Fable 5.1’s API Recall (names the campaign in the title; the feed text carries no CVE id)
MSSP / IR firmsRapid7 blognothing found — no post names it among the feed's 20 newest items
MSSP / IR firmsSophos threat researchpublished — Malicious Claude Code extension distributed through Cursor marketplace (names the campaign in the title; the feed text carries no CVE id)
ResearchUnit 42nothing found — no post names it among the feed's 15 newest items

Checked automatically 2026-10-31 13:48Z from public sources: 11 published, 7 nothing found, 1 not machine-checkable, 0 failed. "Nothing found" means the public source answered and had nothing, as of that moment; a feed covers only its newest posts. Re-checked daily.

What a person would still look up (5)
EDR / endpointAsk whether the product alerts on authorized_keys writes and on persistence created by IDE or extension-host processes, and whether it flags the C2 IP.
Proxy / firewallCheck whether 134.209.82.225 is on blocklists and whether plain-HTTP traffic to port 8099 is logged with URI path.
SIEM / detection contentLook for vendor or community content on this campaign, and on IDE extension-host processes writing SSH keys or scheduling tasks.
Asset / software inventoryConfirm the inventory can report IDE extension IDs, versions and install times per host.
Vulnerability / exposure managementConfirm whether the tool tracks IDE extensions at all; most CVE-keyed tooling will not, as there is no CVE.

Exposure queries — generated automatically

shodan · alias · card

http.html:"Cursor Marketplace"

open · Banner spelling suggested by the model from the card text (distribution channel named in the card; appears on marketplace pages); counted against Shodan before it was shown.

10services internet-wide on Shodan · 2026-10-31▲ 4 on 2026-10-30 (+6 +150%)

Internet-wide count, trend

QueryFirstLatestChange
http.html:"Cursor Marketplace"4 2026-10-3010 2026-10-31+6 (+150%) over 2 days

Shodan's count of matching services on the whole internet, one point a day; the scope (your ranges) is never part of it. A count moves with Shodan's crawl as much as with patching, so read the direction, not the digit.

No CVE in this campaign: nothing an internet scanner keys on. Scope by product in your own tool.

Banner spellings: a model read 2 from the NVD names and this card's text (former and marketing names, console titles); 1 matched something on Shodan and is shown above, the rest was dropped.

Scope every query in your own tool, never in a shared document: Shodan `net:<your_ranges>`, `org:"<your_org>"` or `hostname:<your_domain>` (or a Shodan Monitor network alert, which applies the scope for you); Censys `host.ip: <your_ranges>` or `host.dns.names: <your_domain>`. Then compare the banner version with the affected range. Generated automatically 2026-10-31 13:48Z from the CVE ids and NVD's CPE configurations, each Shodan query counted against Shodan itself; re-built daily with the coverage check.

Open questions

Sources

Public OSINT only. AI-generated by the pipeline; structure follows the DAIR model from Dynamic Incident Response (Joshua Wright). Published automatically once it crosses the publish bar.