bharat3645/agent-rules-audit
GitHub: bharat3645/agent-rules-audit
一款零依赖的离线扫描器,专用于检测 AI agent 指令文件中的提示注入、隐藏 Unicode、编码 payload 和数据外泄等投毒模式,可在 CI 中对指令文件进行自动化安全审查。
Stars: 1 | Forks: 0
# agent-rules-audit
**你的 AI agent 会从仓库中的文件接收指令。谁来审计这些文件?**
`agent-rules-audit` 是一个用于 agent 指令文件的离线扫描工具 - 包括 `AGENTS.md`、`CLAUDE.md`、`.cursorrules`、`.windsurfrules`、`.claude/skills/**`、Copilot 指令、MCP 配置。它会标记真实指令文件投毒攻击中使用的模式:隐藏的 Unicode 混淆、编码的 payload、指令覆盖、数据外泄指令、静默执行和绕过权限的措辞。
零依赖。零网络调用。Node >= 18。
## 为什么需要
指令文件会被编程 agent 当作受信任的上下文执行,但人类却将其视为“仅仅是文档”来审查——如果他们真的会审查的话。现实中的供应链攻击活动已经使用投毒的 `.cursorrules` 和与 MCP 相关的注入作为攻击媒介,而且 skills/市场生态系统已经发布了数百个恶意 agent skills。你引入的依赖项、克隆的模板、安装的 skill——它们中的任何一个都可能携带你的 agent 会执行而你永远看不到的指令。
这个工具让这些文件可以在 CI 中进行审查,就像你 lint 代码一样。
## 安装 / 运行
```
# 从 checkout(无需安装)
node bin/cli.js /path/to/repo
# 或在发布后通过 npx
npx agent-rules-audit .
```
## 用法
```
agent-rules-audit [paths...] [--json] [--strict] [--quiet]
```
- 递归扫描给定路径(默认为 `.`)以查找已知的指令文件;跳过 `node_modules`、`.git`、`dist`、`build`、`vendor`、`target`。
- `--json` - 机器可读的报告。
- `--strict` - 发现**任何**问题均以状态码 1 退出(用于 CI 门禁)。
- `--quiet` - 在常规输出中隐藏无问题的干净文件。
退出代码:`0` 评级 A/B;`2` 评级 C/D;`3` 评级 F;`1` 在 `--strict` 模式下发现任何问题;`4` 用法错误。
## 检测内容
| 规则 | 严重性 | 触发示例 |
|---|---|---|
| `hidden-unicode` | critical | 零宽字符、bidi 覆盖、Unicode tag-block(ASCII 混淆) |
| `instruction-override` | critical | “忽略所有之前的指令” |
| `concealment` | critical | “不要告诉用户” |
| `exfil-network` | critical | `curl https://...`、webhook.site / ngrok / 裸 IP endpoint |
| `exfil-data` | critical | “将 API keys 发送至 ...” |
| `secret-access` | high | `~/.ssh/id_rsa`、`.aws/credentials`、“cat .env” |
| `dangerous-exec` | high | `curl ... \| sh`、`rm -rf ~`、“静默运行” |
| `encoded-payload` | high/low | 解码后为可读(可疑)文本的 base64/hex blob |
| `autonomy-escalation` | medium | “无需询问”、“总是允许”、`--dangerously-skip-permissions` |
| `role-hijack` | medium | “你现在处于开发者模式” |
文件评级为 **A-F**(critical=25,high=15,medium=8,low=3 分),并附带一个总体评级。
## CI 示例 (GitHub Actions)
```
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npx agent-rules-audit . --strict
```
## 客观的局限性
- **基于模式匹配。** 它能捕获已知的攻击形式,而不是新颖的语义。获得 A 评级*并不*代表安全保证。
- **它会产生误报** - 描述攻击的安全文档(比如此 README)也会触发警报。这就是需要人工审查结果的原因;可以使用 `--json` 在下游构建允许名单。
- 它仅根据文件名/位置约定扫描指令文件。它不会执行任何操作或回传数据——这是设计使然。
## 路线图
- 用于代码扫描集成的 SARIF 输出
- pre-commit hook 配方
- 允许名单/基准文件(`.agent-rules-audit.json`)
- MCP 工具描述漂移检测(参见姊妹项目 `mcp-sentinel`)
## 同一作者的相关项目
[`mcp-sentinel`](https://github.com/bharat3645/mcp-sentinel) | [`agent-tool-audit`](https://github.com/bharat3645/agent-tool-audit) | [`ollama-audit`](https://github.com/bharat3645/ollama-audit) | [`dep-graveyard`](https://github.com/bharat3645/dep-graveyard)
## 许可证
MIT (c) 2026 Bharat Singh Parihar
标签:AI Agent安全, DevSecOps, DNS 反向解析, GNU通用公共许可证, MITM代理, Node.js, 上游代理, 文档结构分析, 自定义脚本, 零日漏洞检测, 静态代码扫描