
Scannez un dépôt pour les fichiers de configuration AI-IDE qui peuvent déclencher une RCE via les hooks Claude Code, les règles Cursor, l'enregistrement automatique MCP. Détecte les CVE-2025-59536, CVE-2026-21852, CVE-2026-30615 + les modèles de backdoor des fichiers de règles Pillar.
Scannez un dépôt à la recherche de fichiers de configuration AI-IDE qui peuvent déclencher une exécution de code à distance (RCE), un vol d'identifiants ou une compromission persistante des machines des développeurs lorsque le dépôt est ouvert dans Claude Code, Cursor, Windsurf, Continue ou toute duplication de VS Code.
Construit en réponse à la vague de divulgations AI-IDE d'avril 2026 :
SessionStart / PreToolUse / PostToolUse / UserPromptSubmit de Claude Code dans settings.json exécutent des commandes shell arbitraires à l'ouverture de l'espace de travail..cursorrules / .windsurfrules / .github/copilot-instructions.md / .continue/*.md qui dissimulent les directives d'un attaquant à un réviseur humain.ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE redirigé vers des points de terminaison contrôlés par l'attaquant (exfiltration de prompt + clé API).mcp.json / .mcp.json / .cursor/mcp.json / .claude/mcp.json avec invocation command stdio arbitraire..vscode/tasks.json exécution automatique à l'ouverture de l'espace de travail.Exécutez-le sur chaque dépôt tiers que vous clonez avant de l'ouvrir dans un éditeur alimenté par IA.
Aucune installation — utilisez npx :
npx valtik-ai-ide-config-guard <path>
Ou installez globalement :
npm i -g valtik-ai-ide-config-guard
ai-ide-config-guard <path>
Node 20+ requis.
$ npx valtik-ai-ide-config-guard ./my-cloned-repo
Avec un seuil d'échec (pour CI) :
$ npx valtik-ai-ide-config-guard . --fail-on high
Sortie JSON :
$ npx valtik-ai-ide-config-guard . --json > report.json
SARIF 2.1.0 (pour le scan de code GitHub) :
$ npx valtik-ai-ide-config-guard . --sarif > report.sarif
Exécutez un sous-ensemble de vérifications :
$ npx valtik-ai-ide-config-guard . --checks G1,G3,G5
Liste complète des options : npx valtik-ai-ide-config-guard --help.
Trouve .claude/settings.json et analyse les hooks SessionStart / PostToolUse / PreToolUse / UserPromptSubmit (et les événements de cycle de vie associés). Si une entrée définit une chaîne command (ou type: "command" dans la grammaire groupée), la constatation est CRITIQUE — ouvrir le dépôt dans Claude Code exécute la commande sous le shell du développeur avec son environnement, ses clés SSH et ses jetons.
Scanne .cursorrules, .cursor/rules/*.md[c], .windsurfrules, .windsurf/rules/*.md[c], .github/copilot-instructions.md, .continue/*.md pour :
ignore previous, from now on, system:, etc.)Le texte purement cyrillique, les emojis et les BOM au début du fichier sont ignorés — nous ne signalons que ce qui cache du contenu à un réviseur humain.
Analyse mcp.json, .mcp.json, .claude/mcp.json, .cursor/mcp.json, .windsurf/mcp.json, .vscode/mcp.json, .continue/config.json. Pour chaque serveur enregistré :
command correspond à src/fixtures/known-malicious-mcp.json → CRITIQUEcommand est un binaire local → ÉLEVÉcommand est npx / uvx / pipx tirant un package non vérifié → MOYENurl est non-https → MOYENurl pointe vers localhost / LAN → MOYENSignale toute tâche avec runOptions.runOn: "folderOpen". La gravité augmente si la commande utilise une interpolation shell (curl | sh, wget | bash, eval, base64 -d, backticks, $(...)) ou fait référence à une URL externe.
Scanne .env*, .claude/settings.json, .cursor/config.json, .vscode/settings.json, et tout mcp.json pour :
ANTHROPIC_BASE_URL, ANTHROPIC_API_URLOPENAI_BASE_URL, OPENAI_API_BASE, OPENAI_API_URLSi l'hôte n'est pas le point de terminaison canonique du fournisseur (api.anthropic.com / api.openai.com), la constatation est CRITIQUE — chaque requête et clé API va au point de terminaison de l'attaquant. Les hôtes non cloud (localhost, IP LAN) sont signalés ÉLEVÉ.
Signale .vscode/settings.json qui est livré avec security.workspace.trust.enabled: false (ou l'équivalent Cursor), ce qui désactive silencieusement la barrière native qui bloque le comportement d'exécution automatique.
Dans les fichiers de règles .md / .mdc, scanne les blocs de code délimités contenant curl | sh, wget | bash, rm -rf, eval, base64 -d, python -c, /dev/tcp, reverse-shell mkfifo, chmod +x. La gravité augmente lorsque le texte environnant est impératif ("run this", "execute the following command").
Drapeau d'information pour les scripts nommés claude*, cursor*, windsurf*, mcp*, continue*, copilot*, aider*, cline*. ÉLEVÉ si le même nom entre en collision avec un hook de cycle de vie npm (preinstall, postinstall, etc.) — les hooks de cycle de vie s'exécutent lors de npm install sans confirmation de l'utilisateur.
GitHub Actions :
- name: AI-IDE config guard
run: npx valtik-ai-ide-config-guard . --fail-on high
Ou téléchargement SARIF :
- 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/ est un objectif de conception — nous préférons manquer un cas limite que d'enseigner aux utilisateurs à nous ignorer.npx, pas de récupération d'URL).Cet outil est une analyse statique. Un rapport propre signifie "les 8 vérifications fournies avec cette version n'ont pas déclenché", pas "ce dépôt est sûr à ouvrir dans un AI-IDE." Traitez chaque dépôt que vous n'avez pas créé comme hostile et appliquez manuellement la confiance d'espace de travail, la revue des hooks et la revue MCP.
MIT License — Copyright (c) 2026 Valtik Studios LLC.
| ID | Gravité | Ce qu'il détecte |
|---|
| G1 | CRITIQUE | Hook Claude Code qui exécute un shell lors des événements de session/utilisation d'outils |
| G2 | ÉLEVÉ / MOYEN | Caractères bidi / largeur nulle / balise, homoglyphes ou motifs de remplacement de rôle dans les règles |
| G3 | CRITIQUE / ÉLEVÉ / MOYEN | Serveur MCP enregistré avec command ou url risqué |
| G4 | ÉLEVÉ / MOYEN | .vscode/tasks.json avec runOn: folderOpen |
| G5 | CRITIQUE / ÉLEVÉ | ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE redirigé |
| G6 | ÉLEVÉ / INFO | Confiance d'espace de travail désactivée, task.autoDetect: on |
| G7 | ÉLEVÉ / MOYEN | Motifs shell dangereux dans les blocs délimités à l'intérieur du markdown de règles |
| G8 | ÉLEVÉ / INFO | Scripts package.json nommés d'après des agents IA (ou agents dans les hooks d'installation) |