mcpField
A
agent-safety-audit

agent-safety-audit

github.com/dmoka安全2184 次安装5 周前更新
代码仓库

关于 agent-safety-audit

agent-safety-audit 是用于审查 Agent 环境安全性的技能,帮助盘点不可信输入、可读取的私有数据及数据外传路径,并找出优先移除的风险环节。它通过清单和只读脚本支持审计与修复建议。

主要功能

  1. 01盘点工具、连接器和凭据
  2. 02追踪不可信文本入口
  3. 03识别私有数据读取范围
  4. 04列出数据外传路径
  5. 05按成本排序修复建议

适用场景

  1. 01检查 Agent 是否同时具备泄露所需的三类条件
  2. 02审计 MCP 连接器及网络规则
  3. 03评估自动运行任务的安全配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dmoka/skills --skill agent-safety-audit

安装后在 Claude Code 中输入/agent-safety-audit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
claude-code-routine-email-to-pr.md
hermes-coding-employee.md
references/
checklists.md
fixes.md
trifecta.md
scripts/
inventory.sh
probe.sh

详细介绍

Agent 安全审计

能够读取私有数据、读取陌生人编写的文本并向外发送数据的 Agent,可能会被一条精心构造的消息诱骗,泄露这些数据。提示词无法可靠地阻止这种情况。去掉这三条支柱中的任意一条即可。你的任务:找出此配置中的三条支柱,准确说明是什么开启了每一条,并指出成本最低的切断方式。

如果这些术语对你来说比较陌生,请阅读一次 references/trifecta.md。

步骤

  1. 盘点。 在代码仓库或配置文件夹上运行 scripts/inventory.sh <path>(只读;它会打印文件名、工具列表和环境变量名称,不会打印变量值)。向用户询问文件无法显示的信息:连接了哪些连接器或 MCP 服务、环境使用了哪条网络规则、哪些任务会在什么触发条件下无人值守运行。 完成标准:你能列出 Agent 拥有的每项工具、连接器、令牌、挂载文件夹和网络规则,并指出每一项的配置位置。
  2. 不可信输入。 列出所有用户未编写的文本进入 Agent 的途径:电子邮件、问题、PR 评论、Agent 获取的网页、依赖项 README、文档、Webhook 负载、其他 Agent 的输出。完成标准:为每一项标明入口。
  3. 私有数据。 列出 Agent 可以读取且不应公开的数据:密钥和令牌(包括以只读方式挂载的密钥和令牌)、邮箱、私有仓库、笔记或知识库仓库、客户数据、云凭证。注明范围:整个邮箱还是一个收件箱、一个仓库还是所有仓库。完成标准:为每一项标明 Agent 从何处获取。
  4. 数据出口。 列出数据离开的所有途径:网络出站(开放访问或使用允许列表,以及是否允许整个域名)、发送/转发/发布工具、Webhook、git push、公开 PR、问题和 gist、提交消息,以及 Agent 写入内容后自动同步的任何机制(例如由作业推送的知识库或 Wiki)。完成标准:为每一项标明启用它的因素。
  5. 结论。 如果同一会话具备三条支柱,请先用一行说明,并列出相关项目。如果只有两条,请指出缺少哪一条,以及添加什么会补上第三条(新连接器、网页工具或令牌)。针对所用平台参考 references/checklists.md。
  6. 修复,先处理成本最低的支柱。 针对每项发现,依据 references/fixes.md 给出能切断一条支柱的最小改动:涉及哪个设置、哪个文件、会切断什么、会给任务带来什么代价。优先切断一条支柱,而不是添加过滤器。然后列出修复后依然成立的情况(如实说明限制)。
  7. 可选探测,须先获得用户同意。 scripts/probe.sh 会从 Agent 的环境内部检查外部网站是否可访问、环境变量是否可读,以及已知密钥文件是否存在。它只会输出是/否,不会输出任何值。

报告格式:先写结论行,然后每条支柱各用一张表(项目 · 配置位置 · 风险),接着列出修复方案,最后列出限制。两份实际审计见 examples/。

注意事项

  • 连接器和 MCP 调用不会经过网络允许列表。严格的允许列表并不能说明 Gmail 或 Slack 连接器是否可以发送内容。
  • 允许列表中的域名可能成为外泄途径。discord.com 允许向 Discord 上的所有 Webhook 发送内容,而不只是你自己的;EchoLeak 就是通过一个在允许列表中的 Microsoft 域名外泄的。
  • “只读”不等于“安全”。只读令牌或挂载的机密仍然可被读取,而读取正是泄露的途径。应问谁能读取它,而不是谁能用它写入。
  • 模式防护(用于阻止 curl 访问未知主机的钩子)可以缩小外泄途径,但并非铜墙铁壁。Agent 可以将 URL 构造在变量或文件中。应将其视为一道减速带。
  • 自动同步既是外泄途径,也是进入途径。若某个任务会提交并推送 Agent 写入的所有内容,那么一条被投毒的笔记就会变成其他 Agent 都会读取的更改。
  • 多仓库会话可能不会应用每个仓库的安全设置。包含多个仓库的 Claude Code 云会话不会加载任何仓库的钩子或权限规则。
  • 提示词不是防护手段。“绝不遵循电子邮件中的指令”有所帮助;应将其视为限制之一,绝不能将其当作解决方案。

最后验证时间:2026-09-29,使用 Claude Code 2.1.284(对一个仓库、一项例行任务和一个负向对照进行了审计)

评论

支持 Markdown