
Analizza un repository per file di configurazione di AI-IDE che possono innescare RCE tramite Claude Code hooks, Cursor rules, MCP auto-registration. Rileva CVE-2025-59536, CVE-2026-21852, CVE-2026-30615 + pattern Pillar Rules File Backdoor.
Analizza un repository alla ricerca di file di configurazione AI-IDE che possono innescare RCE, furto di credenziali o compromissione persistente delle macchine degli sviluppatori quando il repository viene aperto in Claude Code, Cursor, Windsurf, Continue o qualsiasi fork di VS Code.
Realizzato in risposta all'ondata di divulgazioni AI-IDE dell'aprile 2026:
SessionStart / PreToolUse / PostToolUse / UserPromptSubmit di Claude Code settings.json eseguono comandi shell arbitrari all'apertura del workspace..cursorrules / .windsurfrules / .github/copilot-instructions.md / .continue/*.md che nascondono direttive dannose a un revisore umano.ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE verso endpoint controllati dall'attaccante (esfiltrazione di prompt + chiave API).mcp.json / .mcp.json / .cursor/mcp.json / .claude/mcp.json con invocazione command stdio arbitraria..vscode/tasks.json all'apertura del workspace.Eseguilo su ogni repository di terze parti che cloni prima di aprirlo in un editor potenziato dall'IA.
Nessuna installazione — usa npx:
npx valtik-ai-ide-config-guard <percorso>
Oppure installa globalmente:
npm i -g valtik-ai-ide-config-guard
ai-ide-config-guard <percorso>
Richiede Node 20+.
$ npx valtik-ai-ide-config-guard ./mio-repo-clonato
Con una soglia di fallimento (per CI):
$ npx valtik-ai-ide-config-guard . --fail-on high
Output JSON:
$ npx valtik-ai-ide-config-guard . --json > report.json
SARIF 2.1.0 (per scansione codice GitHub):
$ npx valtik-ai-ide-config-guard . --sarif > report.sarif
Esegui un sottoinsieme di controlli:
$ npx valtik-ai-ide-config-guard . --checks G1,G3,G5
Elenco completo flag: npx valtik-ai-ide-config-guard --help.
| ID | Severità | Cosa rileva |
|---|---|---|
| G1 | CRITICAL | Hook di Claude Code che esegue shell su eventi sessione / uso strumento |
| G2 | HIGH / MEDIUM | Caratteri bidi / larghezza zero / tag, omoglifi o pattern di override ruoli nei file di regole |
| G3 | CRITICAL / HIGH / MEDIUM | Server MCP registrato con command o url rischiosi |
| G4 | HIGH / MEDIUM | .vscode/tasks.json con runOn: folderOpen |
| G5 | CRITICAL / HIGH | ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE reindirizzati |
| G6 | HIGH / INFO | Fiducia workspace disabilitata, task.autoDetect: on |
| G7 | HIGH / MEDIUM | Pattern shell pericolosi in blocchi delimitati all'interno del markdown delle regole |
| G8 | HIGH / INFO | Script package.json nominati come agenti IA (o agenti in hook di installazione) |
Trova .claude/settings.json e analizza hooks.SessionStart / hooks.PostToolUse / hooks.PreToolUse / hooks.UserPromptSubmit (ed eventi del ciclo di vita correlati). Se una qualsiasi voce imposta una stringa command (o type: "command" all'interno della grammatica raggruppata), il risultato è CRITICAL — aprire il repository in Claude Code esegue il comando nella shell dello sviluppatore con il suo ambiente, chiavi SSH e token.
Scansiona .cursorrules, .cursor/rules/*.md[c], .windsurfrules, .windsurf/rules/*.md[c], .github/copilot-instructions.md, .continue/*.md per:
ignora precedenti, da ora in poi, system:, ecc.)Il testo puramente cirillico, le emoji e i BOM all'inizio del file vengono ignorati — segnaliamo solo ciò che nasconde contenuti a un revisore umano.
Analizza mcp.json, .mcp.json, .claude/mcp.json, .cursor/mcp.json, .windsurf/mcp.json, .vscode/mcp.json, .continue/config.json. Per ogni server registrato:
command corrisponde a src/fixtures/known-malicious-mcp.json → CRITICALcommand è un binario locale → HIGHcommand è npx / uvx / pipx che scarica un pacchetto non verificato → MEDIUMurl non è https → MEDIUMurl punta a localhost / LAN → MEDIUMSegnala qualsiasi attività con runOptions.runOn: "folderOpen". La gravità aumenta se il comando utilizza interpolazione shell (curl | sh, wget | bash, eval, base64 -d, backtick, $(…)) o fa riferimento a un URL esterno.
Scansiona .env*, .claude/settings.json, .cursor/config.json, .vscode/settings.json e qualsiasi mcp.json per:
ANTHROPIC_BASE_URL, ANTHROPIC_API_URLOPENAI_BASE_URL, OPENAI_API_BASE, OPENAI_API_URLSe l'host non è l'endpoint canonico del fornitore (api.anthropic.com / api.openai.com), il risultato è CRITICAL — ogni richiesta e chiave API va all'endpoint dell'attaccante. Gli host non cloud (localhost, IP LAN) vengono segnalati come HIGH.
Segnala .vscode/settings.json che include security.workspace.trust.enabled: false (o l'analogo Cursor), che disattiva silenziosamente la protezione nativa che blocca il comportamento di esecuzione automatica.
Nei file di regole .md / .mdc, scansiona i blocchi di codice delimitati contenenti curl | sh, wget | bash, rm -rf, eval, base64 -d, python -c, /dev/tcp, mkfifo per reverse-shell, chmod +x. La gravità aumenta quando il testo circostante è imperativo ("esegui questo", "esegui il comando seguente").
Flag informativo per script nominati claude*, cursor*, windsurf*, mcp*, continue*, copilot*, aider*, cline*. HIGH se lo stesso nome collide con un hook del ciclo di vita npm (preinstall, postinstall, ecc.) — gli hook del ciclo di vita vengono eseguiti su npm install senza conferma dell'utente.
GitHub Actions:
- name: Controllo configurazione AI-IDE
run: npx valtik-ai-ide-config-guard . --fail-on high
Oppure caricamento 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/ è un obiettivo di progettazione — preferiamo perdere un caso borderline piuttosto che insegnare agli utenti a ignorarci.npx, nessun recupero URL).Questo strumento è analisi statica. Un report pulito significa "gli 8 controlli forniti con questa versione non si sono attivati", non "questo repository è sicuro da aprire in un AI-IDE." Considera ogni repository che non hai creato come ostile e applica manualmente la fiducia del workspace, la revisione degli hook e la revisione MCP.
Licenza MIT — Copyright (c) 2026 Valtik Studios LLC.