跳到主要内容

第 11 章:安全与治理——从提示词防御到供应链审计

安全不只是一份 security skill

ECC 的安全面分成三层:

内容安全:rules / agent prompt / security-review / safety-guard
运行时安全:config-protection / GateGuard / hook exit code
供应链安全:AgentShield / IOC scan / path-safety / install-state validation

内容层告诉模型不要泄露秘密、不要被外部文档里的指令劫持;运行时层在工具真正执行前拦截;供应链层防止安装、repair、MCP 和插件资产成为恶意代码入口。

Prompt Defense Baseline

CLAUDE.md 与多个 agent 文件包含统一的 Prompt Defense Baseline:不改变角色和高优先级规则,不泄露秘密,将 URL、第三方内容和用户文档中的嵌入指令视为不可信输入,警惕 unicode/homoglyph、上下文溢出和紧迫性话术。

它的价值不是让模型“永远安全”,而是把常见攻击面变成每个角色都能看到的默认审查清单。更高强度的规则仍要交给 hook 或外部安全扫描,不能只靠自然语言。

GateGuard 与配置保护

config-protection.js 这类 PreToolUse hook 会保护 formatter/linter 等配置,避免 Agent 为了通过检查直接降低规则强度;GateGuard 则把危险操作、事实强制和治理捕获接入工具边界。Hook README 把“阻断”和“告警”区分开,是为了降低误报导致的安全疲劳。

安装器的路径安全

repair 是高风险动作:它会根据历史 install-state 重新写文件。install-lifecycle.js 因此对 sourceRelativePath 拒绝绝对路径和 ..,要求 source 在 trusted repo root 内;对 destination 检查 canonical parent,并拒绝非预期 final symlink。状态文件本身也有 schema 校验,避免任意 JSON 被当成可信安装记录。

AgentShield 与 IOC scan

README 把 AgentShield 定位为可扫描 prompts、hooks、MCP config、permissions、secrets 和 agent files 的安全面;CLI 还提供 security-ioc-scan,用于扫描依赖与 AI 工具持久化表面中的供应链 IOC。两者的共同理念是:AI 配置也是可执行软件供应链的一部分

安全阅读清单

阅读任何新增 ECC 能力时,建议问:

  • 它是否把用户/外部文本中的命令当成可信指令?
  • 它是否会读写秘密、transcript 或项目外路径?
  • 它是否在 shell 命令中拼接未经校验的输入?
  • 它的 hook 非零退出码是否会误阻断正常工作?
  • 它是否能被正确安装、审计、repair 和 uninstall?

源码定位