2.5 KiB
Toolchain attack-surface audit (manual procedure)
Part of the D3 «Аудит и управление рисками» section. Run this procedure
quarterly, and after any new Claude Code plugin or MCP server is added.
Motivation: the post-ruflo toolchain is large — about 20 ruflo plugins, ~210
MCP tools, and seven MCP servers in .mcp.json — and 2026 disclosures (npm
postinstall MCP-URL rewriting; the ClaudeBleed script-injection class) make
the toolchain itself a standing attack surface.
1. MCP servers
- Review every server in
.mcp.json—command,args,env. Flag any non-pinnednpxpackage and any server reachable over the network. - Confirm no MCP server URL was rewritten by a dependency
postinstallscript.
2. Plugins
- List
enabledPluginsin~/.claude/settings.json. For each: source repo, license, last commit, and the hooks it contributes. - Flag any plugin that registers a
PreToolUsehook withdecision: block.
3. Hooks
- Diff the
hooksblocks of.claude/settings.jsonand~/.claude/settings.jsonagainst the last audited snapshot. Investigate any unexplained change.
4. Permissions
- Review
permissions.allowandpermissions.deny— no broadened wildcard and no new unscopedBash(*)beyond what is already recorded.
5. Secrets
- Run
gitleaksover the full history; confirm no token sits in a gitignored cache file.
Outcome
Record findings as P0–P3 items in docs/Открытые_вопросы_v8_3.md (via the
q-item-add skill), or as an ADR in docs/adr/ if a tooling decision results.
Community auto-auditors — evaluated, deferred (2026-05-17)
The D3 integration evaluated two community plugins that would automate this procedure. Both were deferred:
- Claude Code Canary (
geoffrey-young/anthropic-hackathon-2026) — a one-off hackathon entry (9 commits, 2 stars); the author explicitly disclaims production use. It registers three broad lifecycle hooks (SessionStart, PreToolUse, PostToolUse) and its design relies on the same stderr-injection class it defends against. Rejected — unfit for a global config and a heavy collision with the project hook chain. - Plugin Security Auditor (an mcpmarket aggregator listing) — source repository, author, and license could not be verified. Installing an unverifiable plugin to perform security auditing is itself a risk-management failure. Deferred until a vetted source is found.
Until a vetted auto-auditor exists, this manual procedure is the D3 control for toolchain attack-surface risk.