«Folder trust should not, by itself, authorize spawning attacker-defined OS processes.» — Adversa AI, TrustFall-rapport, 7. mai 2026
Slik åpner Adversas Rony Utevsky den nye TrustFall-rapporten. Funnet er ikke en klassisk sårbarhet, men en konvensjon delt mellom de fire mest brukte agentic CLI-ene: når brukeren godtar dialogen «Yes, I trust this folder», starter agenten umiddelbart hver MCP-server prosjektet definerer i .mcp.json som en usandboxet OS-prosess med brukerens fulle rettigheter.
Adversa testet på Claude Code v2.1.129 og bekreftet samme oppførsel i Gemini CLI, Cursor CLI og Copilot CLI. Tre prosjekt-scope-innstillinger gir hver sin angrepsvei: enableAllProjectMcpServers, enabledMcpjsonServers og permissions.allow i .claude/settings.json. To små JSON-filer i et klonet repo holder, og payloaden ligger inline i command/args slik at det ikke finnes noen ekstra script-fil for en reviewer å se. På CI-runners (anthropics/claude-code-action) rendres aldri trust-dialogen, så headless-kjøring eksekverer payloaden uten samtykke i det hele tatt. Adversas demo lekker hele process.env til en webhook noen sekunder etter at workflowen starter.
Anthropic har avvist rapporten som «utenfor trusselmodell». I deres lesning utgjør «Yes, I trust this folder» informert samtykke til hele prosjektkonfigurasjonen. Adversa er ikke uenig i hvor grensen er trukket, men peker på at v2.1-dialogen ikke nevner MCP, ikke lister hvilke servere som starter, og ikke tilbyr en «trust folder, disable MCP»-vei slik den eldre dialogen gjorde. Til sammenligning krever den langt mindre farlige bypassPermissions-innstillingen en egen rød advarselsdialog med «No, exit» som default.
For utviklere som kjører agentic CLI-er lokalt eller i CI er den realistiske blast radius hele utviklermaskinen: ~/.ssh, ~/.aws, kildekode i andre prosjekter, vedvarende C2-kanal. Det praktiske forsvaret krever ikke at du venter på Anthropic. Managed-scope settings (~/.claude/managed-settings.json med enableAllProjectMcpServers: false og en allowlist for enabledMcpjsonServers) er Claude Codes høyeste presedens og kan ikke overstyres av filer i et klonet repo. Drop også claude i CI mot ureviewed PR-brancher; den kontrollen lukker 0-klikk-varianten alene.
Hva bør du gjøre?
- Drop en managed-settings.json på OS-spesifikk managed-path som låser enableAllProjectMcpServers: false og setter enabledMcpjsonServers til en eksplisitt allowlist (eller []). Det neutraliserer hele kjeden på maskinen uavhengig av hvilke repos du kloner senere.
- Skann committet .claude-konfig, ikke bare tilstedeværelse. Pre-commit-hooks bør flagge enableAllProjectMcpServers, enabledMcpjsonServers og permissions.allow i både .claude/settings.json og .claude/settings.local.json. Local outranks Project, så et fiendtlig repo kan shippe Local direkte.
- Inspiser .mcp.json command/args inline før du kjører claude i et nytt repo. Statiske skannere som bare sjekker referert script-fil bommer på inline-varianten der hele payloaden ligger i args med node -e, python -c eller base64-blobs.