Anmerkung des Autors: Dieser Artikel analysiert den Vorfall um ein manipuliertes Claude-Code-Plug-in im Cursor-Erweiterungsmarktplatz. Im Mittelpunkt stehen der etwa 66 Zeilen lange vorgeschaltete Loader, das Zusammenspiel zweier SSH-Schlüsselpaare mit einem Reverse-Tunnel, bestätigte und unbestätigte Erkenntnisse sowie Hinweise zur Überprüfung betroffener Systeme.
Am 29. Oktober 2026 tauchte im VS-Code-Erweiterungsmarktplatz von Cursor eine manipulierte Version der Erweiterung anthropic.claude-code auf. Forschende entdeckten am Anfang ihrer extension.js einen rund 66 Zeilen langen JavaScript-Loader. Sobald der Editor dieses Modul lädt, versucht der Loader, auf dem Rechner des Entwicklers eine dauerhafte SSH-Hintertür einzurichten.
Das ist kein Gerücht. Cursor hat eine offizielle Sicherheitsmeldung veröffentlicht; auch Microsoft Security Research, Phorion, StepSecurity, OpenSourceMalware und Expel haben Analysen vorgelegt. Expel untersuchte zudem vier tatsächliche Vorfälle bei Kunden. Bis zum 1. November ergänzte StepSecurity einen detaillierten Vergleich der Schadcode-Samples – damit ist der technische Ablauf weitgehend klar.
Das Wichtigste in Kürze: In drei Minuten erfahren Sie, was diese 66 Codezeilen tun, warum Nutzer dafür keinen gefährlichen Befehl ausführen müssen und weshalb sich auch nach der Deinstallation des Plug-ins nicht sicher sagen lässt, dass das System sauber ist.

Der Vorfall mit der 66 Zeilen langen JavaScript-Backdoor im Überblick
Zunächst zur Einordnung: Es handelt sich um einen Software-Supply-Chain-Angriff auf Entwicklerwerkzeuge über den Vertriebskanal für Cursor-Erweiterungen. Das Claude-Modell selbst wurde nicht kompromittiert, und es gibt keine Hinweise auf einen Einbruch in interne Systeme von Anthropic. Microsoft bestätigte, dass weder der Microsoft Visual Studio Marketplace noch das offizielle npm-Paket @anthropic-ai/claude-code betroffen waren.
| Information | Details |
|---|---|
| Datum | 29. Oktober 2026 |
| Vertriebskanal | Cursor VS Code Extension Marketplace |
| Vorgetäuschte Identität | anthropic.claude-code (Anthropic hat diese Versionen weder erstellt noch veröffentlicht) |
| Schadversionen | 2.1.312, 2.1.313 |
| Offiziell genannte Plattformen der schädlichen Installationspakete | Windows x64, macOS ARM64 |
| Dauer der öffentlichen Verfügbarkeit | Rund 11 Stunden und 8 Minuten |
| Offiziell genannte Obergrenze betroffener Nutzer | 5.000 Personen (eine Obergrenze, nicht gleichbedeutend mit 5.000 übernommenen Geräten) |
| Eingeschleuster Code | Vorgeschalteter Loader in den Zeilen 1–66 von extension.js |
| Nachfolgende korrigierte Version | Anthropic veröffentlicht 2.1.314 |
Zeitlicher Ablauf des Vorfalls
Alle folgenden Zeiten sind in Pekinger Zeit angegeben. Dabei sind zwei Zeitpunkte zu unterscheiden: wann ein Installationspaket heruntergeladen werden konnte und wann es nach dem Download tatsächlich ausgeführt wurde. Letzteres kann deutlich später geschehen.
| Pekinger Zeit | Ereignis |
|---|---|
| 29. Oktober, 17:27 Uhr | Die schädliche Erweiterung wird im Cursor Marketplace zum Download angeboten |
| 30. Oktober, 04:35 Uhr | Cursor stoppt die Verteilung; das Zeitfenster der Verfügbarkeit endet |
| 30. Oktober | Cursor veröffentlicht eine Sicherheitsmitteilung; Phorion, OpenSourceMalware und Microsoft veröffentlichen nacheinander Analysen |
| 30. Oktober, 12:45 Uhr | Expel beobachtet die erste Ausführung des Schadcodes auf einem Mac eines Kunden – rund acht Stunden nach der Entfernung aus dem Marketplace |
| 31. Oktober, 02:30 Uhr | Cursor aktualisiert die Mitteilung, nimmt 2.1.312 in die Liste betroffener Versionen auf und überarbeitet die Kompromittierungsindikatoren |
| 1. November | StepSecurity schließt einen präzisen statischen Abgleich anhand einer MalwareBazaar-Probe ab |
Nachdem der Vorfall bekannt geworden war, entfernte Cursor die schädlichen Versionen und schaltete vorübergehend den gesamten Erweiterungs-Marketplace ab. Zugleich prüfte das Unternehmen Zugriffsprotokolle, tauschte Schlüssel aus, baute den Marketplace neu auf und koordinierte mit Cloud-Anbietern die Abschaltung der Angreiferserver. Die bisher öffentlich zugänglichen Informationen erklären nicht, wie die Angreifer die Berechtigung erhielten, Builds im Cursor Marketplace zu veröffentlichen. Bis die Untersuchung abgeschlossen ist, sollte daher niemand behaupten, ein Anthropic-Konto sei gestohlen worden oder Cursor habe eine bestimmte Schwachstelle aufgewiesen.
Wie 66 Zeilen JavaScript eine Hintertür im Claude-Code-Plugin auslösen
Die Angabe „66 Zeilen“ kann leicht den Eindruck erwecken, das gesamte Plugin sei nur so lang. Tatsächlich ist die reguläre extension.js eine große, komprimierte Datei. Die Angreifer fügten lediglich ganz am Anfang einen schädlichen Loader ein, der von Zeile 1 bis Zeile 66 reicht.
Der Code verwendet einen Immediately Invoked Function Expression (IIFE), also einen sofort ausgeführten Funktionsausdruck. Er wartet weder darauf, dass Nutzer Claude eine Nachricht senden, noch benötigt er einen anderen Auslöser. Sobald Cursor die Hauptdatei der Erweiterung in der Node.js-Laufzeitumgebung lädt, wird der Code vor der regulären Anwendungslogik ausgeführt.
Eine Änderung von 7.386 Byte: der genaue Probenvergleich
StepSecurity bezog die Probe am 1. November von MalwareBazaar, überprüfte den SHA-256-Hash und führte anschließend einen statischen Vergleich durch. Das Ergebnis zeigt, dass die Angreifer das Plugin keineswegs neu schreiben mussten.
| Vergleichspunkt | Wert |
|---|---|
Reguläre extension.js |
3.685.536 Byte |
Schadhaftes extension.js |
3.692.922 Byte |
| Hinzugefügter Loader | 7.386 Byte |
| Anteil der Ergänzung | rund 0,20 % |
| Versionsnummer im externen Manifest | 2.1.313 |
| Interne Versionskennung im Anwendungscode | 2.1.312 |
Auch die letzten beiden Zeilen sind bemerkenswert: Die Angreifer verwendeten den regulären Build 2.1.312 als Grundlage für das neu gepackte Plugin und änderten nur die externen Versionsinformationen. Die angezeigte Versionsnummer muss also nicht mit der tatsächlichen Herkunft des Codes übereinstimmen. Eine Beurteilung allein anhand der Versionsnummer ist daher nicht zuverlässig. An anderer Stelle im Text von StepSecurity enthält die Angabe zur „verbleibenden Bytezahl“ eine rechnerische Unstimmigkeit. Für Zitate sollten daher die Gesamtgrößen und die Differenz aus der obigen Tabelle herangezogen werden.
Warum Nutzer keine gefährlichen Befehle ausführen müssen
Dieser Angriff hat nichts mit der Manipulation von Eingabeaufforderungen zu tun. Die Forschenden bestätigten folgende Merkmale:
- Nutzer müssen weder eine Claude-Konversation starten noch muss das Modell der Ausführung gefährlicher Befehle zustimmen.
- Der Angriff ist weder auf eine schädliche Eingabeaufforderung noch auf npm-Installationsskripte angewiesen.
- Für den initialen Angriff müssen keine zusätzlichen ausführbaren Dateien heruntergeladen werden.
Das eigentliche Risiko liegt in den Ausführungsrechten einer IDE-Erweiterung auf dem Rechner der Entwicklerin oder des Entwicklers. Die Erweiterung läuft in Node.js und kann dadurch auf das Dateisystem zugreifen, Systeminformationen auslesen, Unterprozesse erstellen, Systembefehle ausführen, HTTP-Anfragen senden und lokale SSH-Werkzeuge aufrufen.

Das Zwei-Schlüssel-Design der SSH-Hintertür im Claude-Code-Plugin
Das Raffinierte an diesen 66 Codezeilen: Die Hintertür baut vollständig auf dem bereits vorhandenen SSH auf. Der Angreifer muss keine eigene Fernsteuerungssoftware entwickeln, sondern benötigt nur zwei SSH-Schlüsselpaare mit unterschiedlichen Aufgaben.
Das erste Schlüsselpaar dient der Autorisierung auf dem Computer des Opfers. Das Schadprogramm hängt den öffentlichen Schlüssel des Angreifers an die Datei authorized_keys des Nutzers an. Er trägt die Kennung svc-telemetry. Läuft auf dem Rechner ein SSH-Dienst, kann sich der Besitzer des zugehörigen privaten Schlüssels möglicherweise als dieser Nutzer anmelden.
Das zweite Schlüsselpaar dient der Verbindung zum externen Server. Das Schadprogramm speichert einen weiteren privaten Schlüssel, mit dem das Gerät des Opfers eine Verbindung zum Server des Angreifers aufbauen kann. Dieser Schlüssel ist nicht der ursprüngliche private Schlüssel des Nutzers. Einfach gesagt: Das erste Schlüsselpaar klärt, ob sich der Angreifer authentifizieren kann. Das zweite ermöglicht dem Computer des Opfers, zunächst eine ausgehende Verbindung herzustellen.
Warum ein reverser SSH-Tunnel Anlass zur Sorge gibt
Viele Unternehmens- und Heimnetzwerke verhindern den direkten Zugriff aus dem Internet auf einzelne Computer. Ausgehende Verbindungen sind dagegen meist nicht eingeschränkt. Genau das nutzt ein reverser Tunnel: Der Computer des Opfers verbindet sich zunächst mit dem Server des Angreifers. Anschließend leitet der Tunnel Zugriffsanfragen von dort an den lokalen Port 22 weiter.
Allerdings gilt: Eine bestehende Verbindung bedeutet noch keine erfolgreiche Anmeldung. Ob die Anmeldung letztlich gelingt, hängt davon ab, ob der lokale SSH-Dienst läuft, die Authentifizierungskonfiguration greift und die Weiterleitung auf dem Server des Angreifers entsprechend eingestellt ist. Ist SSH lokal nicht gestartet, kann der Tunnel zwar trotzdem aufgebaut werden, eine Fernanmeldung ist dann aber nicht möglich.
Tarnung und Implementierungsfehler der 66 Zeilen Schadcode
Um das Risiko einer Entdeckung zu senken, trifft der Loader mehrere Maßnahmen:
- Die normalen Funktionen von Claude Code werden weiterhin geladen;
- jeder Angriffsschritt fängt Fehler separat ab und setzt die Ausführung nach einem stillen Fehlschlag fort;
- Persistenzaufgaben tragen Namen wie
SysMonodercom.apple.sysmond, die Systemkomponenten imitieren; - nach einem fehlgeschlagenen Verbindungsversuch wird etwa alle 60 Sekunden ein neuer Versuch gestartet;
- rund 1,5 Sekunden nach dem Start versucht der Loader, Informationen zu übermitteln.
Auf der Benutzeroberfläche sind möglicherweise keinerlei Auffälligkeiten zu sehen.
Der Schadcode weist allerdings auch deutliche Fehler auf, die die Erfolgschancen für einen Fernzugriff verringern:
| Plattform | Implementierungsfehler | Tatsächliche Auswirkung |
|---|---|---|
| macOS | Der Status der entfernten Anmeldung wird mit normalen Benutzerrechten abgefragt, was einen Berechtigungsfehler auslöst; der Code versucht die Funktion nur zu aktivieren, wenn er einen eindeutigen „Deaktiviert“-Status erkennt | Auf vielen Macs, auf denen SSH zuvor nicht aktiviert war, wird die entfernte Anmeldung nicht automatisch eingeschaltet; war SSH bereits aktiv, bleibt das Risiko bestehen |
| Windows | OpenSSH Server wird mit PowerShell installiert, aber über eine Hilfsfunktion ausgeführt, die /bin/sh benötigt |
Auf einem gewöhnlichen Windows-System existiert dieser Pfad nicht, sodass die Aktivierung des SSH-Dienstes fehlschlagen kann |
| Linux | Die Persistenz erfolgt über crontab @reboot; Phorion stellte fest, dass die crontab-Prüfung fehlerhaft ist |
Bei wiederholter Ausführung können bestehende zeitgesteuerte Aufgaben des Nutzers unbeabsichtigt beeinträchtigt werden; das tatsächliche Ausmaß der Verbreitung unter Linux ist nicht bestätigt |
Die Fehler bedeuten nicht, dass der Code wirkungslos ist. Um eigene Dateien zu ändern oder Autostart-Einträge auf Benutzerebene anzulegen, sind oft keine Administratorrechte nötig. Es kann also passieren, dass der Dienst für die entfernte Anmeldung nicht startet, aber bereits ein autorisierter Schlüssel eingetragen, ein Startskript erstellt und Hostinformationen übermittelt wurden – während ein Hintergrundprozess weiterhin versucht, ausgehende Verbindungen aufzubauen. Die Annahme „Ohne Administratorrechte bin ich vollständig sicher“ trifft daher nicht zu.
Auswirkungen der Claude-Code-Plugin-Backdoor auf Entwickler
Auswirkungen auf Entwickler
- Namen von Umgebungsvariablen für API-Schlüssel könnten offengelegt worden sein: Der Loader filtert bis zu 40 Umgebungsvariablen, deren Namen
KEY,TOKEN,SECRET,PASS,AWSoderGCPenthalten. Zunächst werden die Namen, nicht die Werte übermittelt. Angreifer können daraus aber ableiten, welche APIs oder Cloud-Plattformen Sie nutzen. Sobald die Backdoor einsatzbereit ist, könnten auch lokale Zugangsdaten ausgelesen werden. - Die Deinstallation des Plugins entfernt nicht automatisch die Backdoor: Dateien zur Persistenz, Autostart-Einträge und öffentliche SSH-Schlüssel bleiben nach der Deinstallation der Erweiterung bestehen. Ein von Expel dokumentierter Fall zeigt, dass ein Nutzer Cursor erst öffnete, nachdem das Plugin aus dem Markt genommen worden war. Die schädlichen Aktivitäten begannen daraufhin und dauerten fast 10 Stunden an.
- Ein einzelner Indikator reicht für die Suche nicht aus: Expel fand auf einem Rechner einen bösartigen Tunnelprozess, aber keine
svc-telemetry-Markierung für den öffentlichen Schlüssel. Bei der Untersuchung sollten daher Versionen, Datei-Hashes, Prozesse, Netzwerkverbindungen und Autostart-Einträge gemeinsam geprüft werden.
Auswirkungen auf die Branche
- IDE-Erweiterungen werden zu einem attraktiven Angriffsziel: Mit der Verbreitung von KI-Programmierwerkzeugen liegen auf Entwicklerrechnern gleichzeitig Quellcode, Cloud-Zugangsdaten und Modell-API-Schlüssel. Schon 7 KB eingeschleuster Code am Anfang einer 3,6 MB großen komprimierten Datei reichen aus, um deren Sicherheitseigenschaften zu verändern.
- Die Veröffentlichungskette in Marktplätzen für Erweiterungen von Drittanbietern muss überprüft werden: Dieser Vorfall betraf nur den Cursor-Marktplatz; die gleichnamige Erweiterung war über andere Kanäle unauffällig. Ein offiziell wirkender Herausgebername allein ist also kein verlässlicher Grund für Vertrauen.

Die Grafik wurde vom Technikteam von APIYI apiyi.com auf Grundlage öffentlich zugänglicher Forschung zusammengestellt. Die folgende Tabelle grenzt die Fakten einzeln ab. Bitte unterscheiden Sie diese Punkte, wenn Sie den Vorfall zitieren oder darüber berichten:
| Aussage | Status | Erklärung |
|---|---|---|
| Über den Cursor-Marktplatz wurde eine manipulierte Claude-Code-Erweiterung verbreitet | Bestätigt | Durch eine offizielle Mitteilung bestätigt |
| Der Schadcode kann Informationen sammeln, Schlüssel einschleusen, Reverse-Tunnel aufbauen und Persistenz herstellen | Bestätigt | Die Probenanalysen mehrerer Organisationen kommen übereinstimmend zu diesem Ergebnis |
| Auf Kundengeräten gab es tatsächlich schädliche Aktivitäten | Bestätigt | Expel bearbeitete 4 Fälle, alle auf Macs |
| 5000 Rechner wurden vollständig unter Kontrolle gebracht | Nicht bestätigt | 5000 ist lediglich die Obergrenze der möglicherweise betroffenen Geräte |
| Die tatsächlichen Werte von API-Schlüsseln wurden gestohlen | Nicht bestätigt | Bei der ersten Übermittlung wurden nur Variablennamen gesendet |
| Weltweite Zahl erfolgreicher Einbrüche und wirtschaftlicher Schaden | Nicht veröffentlicht | Sollte nicht hochgerechnet werden |
So prüfen Sie das Claude-Code-Plugin auf eine SSH-Backdoor
Wenn Sie die Claude-Code-Erweiterung am 29. oder 30. Oktober über den Cursor-Marktplatz installiert oder automatisch aktualisiert haben, empfiehlt sich eine kurze Prüfung. Das folgende Node.js-Skript prüft nur öffentlich bekannte Pfade auf Einbruchsspuren und nimmt keine Änderungen vor:
// 只读排查:检查公开披露的入侵痕迹(不能单独作为结论)
const fs = require("fs"), os = require("os"), path = require("path");
const home = os.homedir();
const checks = [
path.join(home, ".ssh", "authorized_keys"),
path.join(home, ".config", ".smt"),
path.join(home, ".config", ".smtk"),
path.join(home, "Library", "LaunchAgents", "com.apple.sysmond.plist"),
path.join(home, ".config", "smt.cmd"),
path.join(home, ".config", "smtk"),
];
for (const p of checks) {
if (!fs.existsSync(p)) continue;
const hit = p.endsWith("authorized_keys")
? fs.readFileSync(p, "utf8").includes("svc-telemetry")
: true;
if (hit) console.log("⚠️ 发现可疑痕迹:", p);
}
Wenn das Skript einen Treffer meldet, sollten Sie Dateihashes, den geplanten Task SysMon, Prozesse und Netzwerkprotokolle genauer prüfen. Achten Sie beispielsweise darauf, ob eine Verbindung zu Port 22 oder 8099 von 134.209.82[.]225 bestand. Die offizielle Mitteilung von Cursor enthält auch Prüf- und Reparaturskripte für macOS und Windows. Führen Sie diese erst aus, wenn Sie verstehen, welche Berechtigungen die Skripte benötigen.
Verdächtige Erweiterungsdateien können Sie auch mithilfe eines Großen Sprachmodells ergänzend auf verdächtigen Code prüfen lassen. Achten Sie dabei besonders darauf, ob sich am Dateianfang eine IIFE befindet, die child_process aufruft, in authorized_keys schreibt oder eine SSH-Verbindung aufbaut. Hier ein einfaches Beispiel für den Modellaufruf:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # APIYI OpenAI 兼容接口
)
head = open("extension.js", encoding="utf-8", errors="ignore").read(10000)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "请审查这段 JS 开头是否存在可疑的子进程、SSH、持久化或外连行为:\n" + head}]
)
print(resp.choices[0].message.content)
Vollständiges Prüfskript anzeigen (inklusive Hash-Abgleich)
import hashlib
import sys
import openai
# 公开披露的恶意 extension.js SHA-256
KNOWN_BAD = {
"ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15",
}
KEYWORDS = ["child_process", "authorized_keys", "svc-telemetry",
"LaunchAgents", "schtasks", "crontab", "8099", "-R"]
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # 使用 APIYI 统一接口
)
def sha256(path: str) -> str:
h = hashlib.sha256()
with open(path, "rb") as f:
for chunk in iter(lambda: f.read(1 << 20), b""):
h.update(chunk)
return h.hexdigest()
def review(path: str, head_size: int = 10000) -> None:
digest = sha256(path)
print("SHA-256:", digest)
if digest in KNOWN_BAD:
print("⚠️ 命中已公布的恶意哈希,请立即隔离设备并按官方指引处置")
head = open(path, encoding="utf-8", errors="ignore").read(head_size)
hits = [k for k in KEYWORDS if k in head]
print("文件开头命中关键词:", hits or "无")
prompt = (
"你是安全审计助手。下面是一个 IDE 扩展入口文件的开头部分,"
"请判断是否存在在模块加载时立即执行的代码,"
"并列出涉及子进程、SSH 密钥、持久化、网络外连的可疑片段。\n\n" + head
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
max_tokens=1200,
)
print(resp.choices[0].message.content)
if __name__ == "__main__":
review(sys.argv[1] if len(sys.argv) > 1 else "extension.js")
Empfehlung: Die Prüfung durch ein Modell ist nur ein Hilfsmittel und ersetzt weder EDR-Logs noch den Abgleich mit offiziellen Indikatoren. Wenn Sie vergleichen möchten, wie verschiedene Modelle Code prüfen, können Sie über APIYI apiyi.com mit demselben API-Schlüssel zwischen ihnen wechseln. Neue Nutzer erhalten kostenloses Testguthaben. Prüfen Sie vor dem Einsenden außerdem, ob der Code sensible Geschäftsinformationen enthält.
Wenn bestätigt ist, dass die schädliche Erweiterung ausgeführt wurde, gehen Sie wie folgt vor:
- Sichern Sie die Beweise für die Untersuchung und isolieren Sie das Gerät;
- Entfernen Sie schädliche Dateien, Autostart-Einträge und öffentliche SSH-Schlüssel;
- Prüfen Sie, ob für Repositories, Cloud-Zugangsdaten, Sitzungstoken und API-Schlüssel, auf die das Gerät zugreifen konnte, weitere Risiken bestehen;
- Wenn sich kein vertrauenswürdiger Zustand wiederherstellen lässt, setzen Sie das System neu auf und rotieren Sie alle Zugangsdaten auf einem vertrauenswürdigen Gerät.
Häufige Fragen (FAQ)
F1: Beziehen sich die 66 Zeilen JavaScript auf das gesamte Claude-Code-Plugin?
Nein. Die 66 Zeilen bezeichnen den schädlichen Loader, der ganz am Anfang von `extension.js` eingefügt wurde. Er reicht von Zeile 1 bis 66 und umfasst rund 7.386 Byte. Der normale Plugin-Code ist über 3,6 MB groß und läuft dahinter weiterhin wie gewohnt.
F2: Worin unterscheidet sich das von einem Angriff durch die Injektion einer Eingabeaufforderung?
Bei einer solchen Injektion wird das Modell dazu verleitet, gefährliche Inhalte auszugeben oder Aktionen auszuführen. In diesem Fall wird der Erweiterungscode dagegen direkt beim Laden ausgeführt. Der gesamte Vorgang läuft ohne Claude ab und erfordert weder eine Unterhaltung noch die Zustimmung des Modells. Selbst wenn Sie die KI-Funktionen des Plugins nie genutzt haben, kann der Code beim Laden der Erweiterung ausgeführt werden.
F3: Ist Claude Code betroffen, wenn es über das offizielle npm-Paket oder den VS Code Marketplace installiert wurde?
Microsoft hat bestätigt, dass der Visual Studio Marketplace und das offizielle npm-Paket `@anthropic-ai/claude-code` nicht betroffen sind. Auch auf Open VSX wurde keine entsprechende schädliche Version gefunden. Betroffen sind nur die über den Cursor Marketplace verteilten Versionen 2.1.312 und 2.1.313. Bei der Prüfung sollten auch die Quelle und der Datei-Hash berücksichtigt werden.
F4: Muss ich API-Schlüssel austauschen, die in Umgebungsvariablen gespeichert sind?
Bei der ersten Übermittlung wurden nur die Namen der Variablen übertragen, nicht ihre Werte. Wenn der schädliche Code nachweislich auf Ihrem Gerät ausgeführt wurde, könnte die Hintertür jedoch zum Auslesen von Zugangsdaten genutzt worden sein. Sicherheitshalber sollten Sie die Schlüssel daher auf einem vertrauenswürdigen Gerät erneuern. Das gilt auch für API-Schlüssel von Plattformen wie APIYI (apiyi.com), die in Umgebungsvariablen gespeichert sind. Nutzen Sie künftig außerdem eine sicherere Methode zur Schlüsselverwaltung.
F5: Wie lässt sich dieses Risiko bei der Entwicklung von KI-Anwendungen verringern?
Empfehlenswert sind folgende Maßnahmen: Speichern Sie Schlüssel mit weitreichenden Berechtigungen auf Entwicklungsgeräten nicht dauerhaft als Klartext in Umgebungsvariablen, verwenden Sie für jedes Projekt eigene Schlüssel und prüfen Sie Ihre IDE-Erweiterungen regelmäßig. Wenn Sie Modelle über eine Aggregationsplattform wie APIYI (apiyi.com) aufrufen, können Sie mit einem Schlüssel Modelle verschiedener Anbieter nutzen. So liegen weniger Zugangsdaten auf dem Gerät, und im Ernstfall müssen Sie nur einen Schlüssel erneuern.
Die wichtigsten Erkenntnisse zum 66-Zeilen-JavaScript-Backdoor-Vorfall
- Art des Angriffs: Der Cursor-Erweiterungsmarktplatz wurde durch einen Supply-Chain-Angriff kompromittiert. Das Claude-Modell selbst wurde nicht geknackt.
- Auslösung: Ein 66 Zeilen langer IIFE-Loader wird beim Laden der Erweiterung automatisch ausgeführt – ohne Zutun der Nutzer.
- Aufbau der Backdoor: Zwei SSH-Schlüsselpaare und ein Reverse-Tunnel kommen zum Einsatz. Dabei werden ausschliesslich systemeigene Tools genutzt.
- Was bekannt ist: 5.000 ist die Obergrenze der betroffenen Nutzer. Dass tatsächliche API-Schlüsselwerte gestohlen wurden, ist nicht bestätigt.
- Wichtige Massnahme: Die Deinstallation des Plugins entfernt die Backdoor nicht zwangsläufig. Nötig sind mehrere Prüfungen und die Rotation von Zugangsdaten auf einem vertrauenswürdigen Gerät.
- Schutz im Alltag: Weniger Schlüssel lokal im Klartext speichern. Mit APIYI apiyi.com lassen sich Zugangsdaten für Modellaufrufe zentral verwalten.
Fazit
Der Vorfall mit der 66 Zeilen langen JavaScript-Backdoor zeigt drei Dinge:
- Kleine Änderung, grosser Schaden: Werden einem 3,6 MB grossen Dateiumfang nur 0,2 % Code vorangestellt, kann eine vertrauenswürdige Erweiterung zur Trägerin einer Backdoor werden.
- Berechtigungen bestimmen das Risiko: IDE-Erweiterungen können Node.js-Code uneingeschränkt ausführen. Selbst mit normalen Nutzerrechten lassen sich Schlüssel schreiben und Persistenz einrichten.
- Die Entfernung aus dem Marktplatz ist nicht das Ende: Bereits installierte schädliche Komponenten können zeitverzögert starten und dauerhaft ausgehende Verbindungen aufbauen. Sie müssen deshalb separat aufgespürt und entfernt werden.
Wenn Sie die Claude-Code-Erweiterung aus dem Cursor-Marktplatz während des betroffenen Zeitraums verwendet haben, prüfen Sie Ihr System anhand der offiziellen Kompromittierungsindikatoren und rotieren Sie möglicherweise betroffene Zugangsdaten. Im Entwicklungsalltag empfiehlt es sich, die Zahl lokal gespeicherter Zugangsdaten zu reduzieren. Über APIYI apiyi.com können Sie beispielsweise mit einem einheitlichen Schlüssel Modelle verschiedener Anbieter aufrufen und so die möglichen Folgen eines einzelnen Datenlecks begrenzen.
📚 Quellen
- Offizielle Sicherheitsmitteilung von Cursor: Zeitpunkt des Vorfalls, Versionen, Hashes und Bereinigungsskript
- Link:
cursor.com/blog/claude-code-extension-security-notice -
Erläuterung: Primärquelle für Untersuchung und Behebung
-
Microsoft Security Research: Vollständige Angriffskette und Zuordnung zu MITRE ATT&CK
- Link:
microsoft.com/en-us/security/blog/2026/10/30/inside-malicious-claude-code-branded-cursor-extension-persistent-ssh-backdoor/ -
Erläuterung: Behandelt die Grenzen der Lieferkette, den SSH-Mechanismus und die Persistenz
-
Phorion: Der 66 Zeilen lange Loader und Implementierungsfehler auf verschiedenen Plattformen
- Link:
phorion.io/blog/offical-claude-code-vsx-compromise/ -
Erläuterung: Enthält Details zur Filterung von Umgebungsvariablen und zum Fehler in der Linux-Crontab
-
StepSecurity: Präziser Vergleich der Stichprobe vom 1. November
- Link:
stepsecurity.io/blog/claude-code-extension-trojanized -
Erläuterung: Zeigt Unterschiede in der Dateigrösse und Belege für die Verschleierung der Versionskennung
-
Expel: Untersuchung von vier tatsächlichen Vorfällen bei Kunden
- Link:
expel.com/blog/blog-fake-claude-code-extension-cursor-ssh-backdoor/ -
Erläuterung: Dokumentiert Fälle verzögerter Ausführung und nicht erkannter Vorfälle
-
OpenSourceMalware: Analyse der internen Struktur der schädlichen Erweiterung
- Link:
opensourcemalware.com/blog/trojanized-claude-code-extension-plants-persistent-ssh-backdoor - Erläuterung: Bestätigt den Speicherort und die Ausführungsmethode des Loaders
Autor: Das Technikteam von APIYI
Technischer Austausch: Kontaktieren Sie uns gerne über die Startseite von APIYI unter apiyi.com. Weitere Informationen finden Sie im Dokumentationsportal unter docs.apiyi.com.
