ECC AgentShield:给 AI Agent 做管道检查的安全审计
项目:affaan-m/ECC 仓库:https://github.com/affaan-m/ECC 语言:JavaScript 今日 Star:+1015 v2.2.3
目录
ECC AgentShield:给 AI Agent 做"管道检查"的安全审计
项目:affaan-m/ECC
仓库:https://github.com/affaan-m/ECC
语言:JavaScript | 今日 Star:+1015 | v2.2.3
一、AI Agent 的"墙内管道"问题
你给 Claude Code 装了一个 MCP 服务器,让它能读你的数据库。你给 Cursor 配了一个 hook,让它在每次保存文件时自动跑测试。你给 Codex 写了一个 prompt,让它能访问你的 GitHub 仓库。
这些配置就像房子的管道——埋在墙里,平时看不见,但一旦漏水,整面墙都得拆。
传统安全工具不检查这些。你的杀毒软件会扫描 .exe 文件,但不会扫描你的 MCP 配置里有没有 hardcoded secrets。你的防火墙会拦截网络攻击,但不会拦截一个恶意 prompt 注入。
ECC 的 AgentShield 做的就是这件事:给 AI agent 的"墙内管道"做安全检查。
二、Agent 的六个隐藏攻击面
AgentShield 扫描六个传统安全工具不覆盖的攻击面:
| 攻击面 | 风险 | 传统工具覆盖? |
|---|---|---|
| Prompts | prompt injection、越权指令 | 否 |
| Hooks | 钩子注入、恶意自动执行 | 否 |
| MCP config | MCP 服务器权限过大、未授权访问 | 否 |
| Permissions | 权限配置错误、过度授权 | 部分 |
| Secrets | hardcoded API key、token 泄露 | 是(但只扫代码,不扫配置) |
| Agent files | 恶意 skill、恶意 agent 定义 | 否 |
这就像传统安全检查房子的结构(承重墙、地基),但不检查管道(水管、电线、燃气)。AI agent 时代,"管道"成了新的攻击面。
三、1282 项检查:从"有没有"到"对不对"
AgentShield 不是简单的"有没有 hardcoded secret"检查器。它跑 1282 项检查,覆盖:
- Secret 扫描:API key、token、密码、私钥
- Permission 审计:是否给了 agent 不必要的写权限、执行权限、网络权限
- Hook 注入检测:hook 是否执行了未审计的命令、是否可被外部输入触发
- MCP 风险评估:MCP 服务器是否有未加密通信、是否暴露了敏感 API
- Prompt injection 检测:prompt 里有没有可被注入的指令模式
- Agent 文件完整性:skill 和 agent 定义有没有被篡改
四、Plan→Test→Implement→Review→Verify→Remember→Improve
AgentShield 是 ECC 大框架的一部分。ECC 的核心是一个七步循环:
1. Plan:agent 先规划任务,不直接动手 2. Test:先写测试,不先写实现 3. Implement:在测试通过的前提下实现功能 4. Review:agent 自查代码 5. Verify:用 AgentShield 验证安全性 6. Remember:把这次的经验存入 memory 7. Improve:基于经验改进下一次的 plan
这个循环的精妙之处在于 Verify 在 Remember 之前。意思是:agent 先验证自己的工作是否安全,然后把验证结果存入记忆,下次改进。
这像科学方法:假设(Plan)→ 实验(Test)→ 观察(Implement)→ 同行评审(Review)→ 复现验证(Verify)→ 发表(Remember)→ 迭代(Improve)。ECC 把这个循环应用到软件开发上,每一步都有对应的 agent 和 skill。
五、71 Agents, 311 Skills, 97 Commands
ECC v2.2 的规模:
- 71 个预置 Agent:每个 agent 是一个角色定义(code reviewer、security auditor、test writer 等)
- 311 个 Skill:每个 skill 是一个可复用的能力单元(格式化代码、跑测试、查文档等)
- 97 个 Command:每个 command 是一个可执行的快捷操作
这像医院的科室分工:不是把所有医生堆在一起,而是按"内科→外科→影像科→检验科"组织成诊疗流程。ECC 的 71 个 agent 就是 71 个"专科医生",311 个 skill 就是 311 种"诊疗手段",97 个 command 就是 97 种"处方"。
六、单维护者,七平台
ECC 最反直觉的事实:一个人维护,支持七个平台。
Claude Code、Codex、Cursor、OpenCode、Gemini、Zed、GitHub Copilot——七个不同的 AI coding agent,每个有自己的配置格式、hook 机制、skill 系统。ECC 用一个"适配层"统一了它们。
这不是技术问题,是工程纪律问题。一个维护者要跟上七个平台的 API 变化,每周发版,靠的不是"努力",是"架构"。ECC 的设计是 harness-agnostic(harness 无关):核心逻辑和平台适配分离,加一个新平台只需要写一个适配器,不改核心。
这像 Linux 的驱动模型:内核不变,加一个新硬件只需要写一个驱动。ECC 把同样的原则应用到 AI agent 平台上。
七、MIT 永久免费 + Pro 订阅
ECC 的商业模式也值得说。核心仓库 MIT 协议,永久免费。Pro 版本是托管的 GitHub App,支持私有仓库,$19/seat/月。
这个模式的精妙之处在于:开源核心 + 托管增值。个人开发者用开源版完全够用(MIT 协议,无限制),企业团队用 Pro 版省去自托管的麻烦。赞助者和 Pro 订阅者资助开源开发,形成一个可持续的循环。
这比"开源核心功能,闭源高级功能"的模式更干净——核心功能不阉割,付费只是省事。AgentShield 在开源版里也有,不是"安全功能要付费"。
八、为什么 Agent 安全是下一个大问题
AI coding agent 的权限越来越大。它能读你的代码、写你的文件、跑你的命令、访问你的数据库。这些权限是必要的——不给它这些权限,它就帮不了你干活。
但权限越大,攻击面越大。一个恶意的 MCP 服务器可以窃取你的 API key。一个被注入的 prompt 可以让 agent 执行 rm -rf /。一个配置错误的 hook 可以在每次保存文件时泄露你的代码到外部服务器。
传统安全工具不覆盖这些。它们扫描代码漏洞,不扫描配置漏洞。它们检查网络攻击,不检查 prompt 注入。它们保护你的服务器,不保护你的 agent。
AgentShield 做的事情不是"发明了一种新的安全技术",是"把现有的安全审计方法应用到 AI agent 的新攻击面上"。它的价值不在技术新颖,在覆盖面——1282 项检查覆盖了传统工具不看的六个攻击面。
这像消防检查:不是发明了新的灭火技术,是把现有的检查清单应用到新建筑类型上。但这个"应用"本身就有价值——因为没人做过,因为 AI agent 是新的"建筑类型",需要新的"消防规范"。
链接
- 仓库:https://github.com/affaan-m/ECC
- 主页:https://ecc.tools
- AgentShield:https://github.com/affaan-m/agentshield