
Scannen Sie ein Repository auf AI-IDE-Konfigurationsdateien, die RCE via Claude Code hooks, Cursor rules, MCP auto-registration auslösen können. Erkennt CVE-2025-59536, CVE-2026-21852, CVE-2026-30615 + Pillar Rules File Backdoor patterns.
Durchsucht ein Repository nach AI-IDE-Konfigurationsdateien, die RCE, Credential-Diebstahl oder eine dauerhafte Kompromittierung von Entwicklerrechnern auslösen können, wenn das Repository in Claude Code, Cursor, Windsurf, Continue oder einem beliebigen VS-Code-Fork geöffnet wird.
Entwickelt als Reaktion auf die AI-IDE-Offenlegungswelle vom April 2026:
settings.json SessionStart / PreToolUse / PostToolUse / UserPromptSubmit-Hooks führen beim Öffnen des Workspace beliebige Shell-Befehle aus..cursorrules / .windsurfrules / .github/copilot-instructions.md / .continue/*.md, die Angreiferanweisungen vor einem menschlichen Prüfer verbergen.ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE-Umleitung auf angreifergesteuerte Endpunkte (Exfiltration von Prompts + API-Schlüsseln).mcp.json / .mcp.json / .cursor/mcp.json / .claude/mcp.json mit beliebigem command-stdio-Aufruf..vscode/tasks.json-Autostart beim Öffnen des Workspace.Führen Sie es auf jedem Drittanbieter-Repository aus, das Sie klonen, bevor Sie es in einem KI-gestützten Editor öffnen.
Keine Installation – npx verwenden:
npx valtik-ai-ide-config-guard <Pfad>
Oder global installieren:
npm i -g valtik-ai-ide-config-guard
ai-ide-config-guard <Pfad>
Node 20+ erforderlich.
$ npx valtik-ai-ide-config-guard ./mein-geklontes-repo
Mit einer Fehlerschwelle (für CI):
$ npx valtik-ai-ide-config-guard . --fail-on high
JSON-Ausgabe:
$ npx valtik-ai-ide-config-guard . --json > report.json
SARIF 2.1.0 (für GitHub-Code-Scanning):
$ npx valtik-ai-ide-config-guard . --sarif > report.sarif
Eine Teilmenge der Prüfungen ausführen:
$ npx valtik-ai-ide-config-guard . --checks G1,G3,G5
Vollständige Flag-Liste: npx valtik-ai-ide-config-guard --help.
Findet .claude/settings.json und analysiert hooks.SessionStart / hooks.PostToolUse / hooks.PreToolUse / hooks.UserPromptSubmit (und verwandte Lebenszyklus-Ereignisse). Wenn ein Eintrag einen command-String setzt (oder type: "command" innerhalb der gruppierten Grammatik), ist der Befund CRITICAL – das Öffnen des Repos in Claude Code führt den Befehl in der Shell des Entwicklers mit dessen Umgebung, SSH-Schlüsseln und Tokens aus.
Durchsucht .cursorrules, .cursor/rules/*.md[c], .windsurfrules, .windsurf/rules/*.md[c], .github/copilot-instructions.md, .continue/*.md nach:
ignore previous, from now on, system: usw.)Rein kyrillischer Text, Emojis und BOMs am Dateianfang werden ignoriert – wir kennzeichnen nur, was Inhalt vor einem menschlichen Prüfer verbirgt.
Analysiert mcp.json, .mcp.json, .claude/mcp.json, .cursor/mcp.json, .windsurf/mcp.json, .vscode/mcp.json, .continue/config.json. Für jeden registrierten Server:
command stimmt mit src/fixtures/known-malicious-mcp.json überein → CRITICALcommand ist ein lokales Binärprogramm → HIGHcommand ist npx / uvx / pipx, die ein ungeprüftes Paket ziehen → MEDIUMurl ist nicht-https → MEDIUMurl zeigt auf localhost / LAN → MEDIUMKennzeichnet jede Aufgabe mit runOptions.runOn: "folderOpen". Der Schweregrad steigt, wenn der Befehl Shell-Interpolation verwendet (curl | sh, wget | bash, eval, base64 -d, Backticks, $(...)) oder auf eine externe URL verweist.
Durchsucht .env*, .claude/settings.json, .cursor/config.json, .vscode/settings.json und jedes mcp.json nach:
ANTHROPIC_BASE_URL, ANTHROPIC_API_URLOPENAI_BASE_URL, OPENAI_API_BASE, OPENAI_API_URLWenn der Host nicht der kanonische Anbieter-Endpunkt ist (api.anthropic.com / api.openai.com), ist der Befund CRITICAL – jede Anfrage und jeder API-Schlüssel geht zum Angreifer-Endpunkt. Nicht-Cloud-Hosts (localhost, LAN-IPs) werden als HIGH gekennzeichnet.
Kennzeichnet .vscode/settings.json, das mit security.workspace.trust.enabled: false (oder dem Cursor-Äquivalent) ausgeliefert wird, wodurch die native Sperre, die Autostart-Verhalten blockiert, stillschweigend deaktiviert wird.
In Regel-.md / .mdc-Dateien wird nach Codeblöcken gesucht, die curl | sh, wget | bash, rm -rf, eval, base64 -d, python -c, /dev/tcp, Reverse-Shell-mkfifo, chmod +x enthalten. Der Schweregrad steigt, wenn der umgebende Text imperativ ist ("run this", "execute the following command").
Informationskennzeichnung für Skripte mit den Namen claude*, cursor*, windsurf*, mcp*, continue*, copilot*, aider*, cline*. HIGH, wenn derselbe Name mit einem npm-Lifecycle-Hook (preinstall, postinstall usw.) kollidiert – Lifecycle-Hooks werden bei npm install ohne Benutzerbestätigung ausgeführt.
GitHub Actions:
- name: AI-IDE config guard
run: npx valtik-ai-ide-config-guard . --fail-on high
Oder SARIF-Upload:
- run: npx valtik-ai-ide-config-guard . --sarif > ai-ide.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ai-ide.sarif
test/fixtures/safe/ ist ein Designziel – wir übersehen lieber einen Grenzfall, als Benutzern beizubringen, uns zu ignorieren.npx-Probeläufe, keine URL-Abrufe).Dieses Tool ist eine statische Analyse. Ein sauberer Bericht bedeutet "die 8 mit dieser Version ausgelieferten Prüfungen haben nicht angeschlagen", nicht "dieses Repo kann sicher in einer AI-IDE geöffnet werden". Behandeln Sie jedes Repository, das Sie nicht selbst erstellt haben, als feindselig und wenden Sie Workspace-Trust, Hook-Überprüfung und MCP-Überprüfung manuell an.
MIT-Lizenz – Urheberrecht (c) 2026 Valtik Studios LLC.
| ID | Schweregrad | Was erkannt wird |
|---|
| G1 | CRITICAL | Claude-Code-Hook, der Shell bei Sitzungs-/Tool-Nutzungs-Ereignissen ausführt |
| G2 | HIGH / MEDIUM | Bidi-/Breitenlos-/Tag-Zeichen, Homoglyphen oder Rollenüberschreibungsmuster in Regeln |
| G3 | CRITICAL / HIGH / MEDIUM | MCP-Server registriert mit riskantem command oder url |
| G4 | HIGH / MEDIUM | .vscode/tasks.json mit runOn: folderOpen |
| G5 | CRITICAL / HIGH | ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE umgeleitet |
| G6 | HIGH / INFO | Workspace-Trust deaktiviert, task.autoDetect: on |
| G7 | HIGH / MEDIUM | Gefährliche Shell-Muster in Codeblöcken innerhalb von Regel-Markdown |
| G8 | HIGH / INFO | package.json-Skripte benannt nach KI-Agenten (oder Agenten in Install-Hooks) |