affaan-m/agentshield
GitHub: affaan-m/agentshield
针对 Claude Code 生态的 AI Agent 配置安全审计工具,自动检测机密泄露、权限配置错误、Hook 注入等 102 类安全风险。
Stars: 85 | Forks: 16
# AgentShield
**AI Agent 配置安全审计工具**
扫描 Claude Code 设置中的硬编码机密、权限配置错误、
Hook 注入、MCP 服务器风险以及 Agent 提示注入向量。 [](https://www.npmjs.com/package/ecc-agentshield) [](https://www.npmjs.com/package/ecc-agentshield) []() []() [](LICENSE) [快速开始](#quick-start) · [检测范围](#what-it-catches) · [Opus Pipeline](#opus-46-deep-analysis---opus) · [GitHub Action](#github-action) · [MiniClaw](#miniclaw) · [发布渠道](#distribution)
## 为什么需要
AI Agent 生态系统的增长速度超过了其安全工具的发展。仅在 2026 年 1 月:
- 某主要 Agent 技能市场中有 **12%** 为恶意内容(2,857 个社区技能中的 341 个)
- 一个 **CVSS 8.8** 级别的 CVE 漏洞导致 17,500+ 个面向互联网的实例暴露于一键 RCE 攻击
- Moltbook 泄露事件导致 770,000 个 Agent 的 **150 万个 API Token** 被盗
开发者安装社区技能、连接 MCP 服务器并配置 Hook,却没有任何自动化的方式来审计其设置的安全性。AgentShield 扫描您的 `.claude/` 目录,并在漏洞被利用之前标记出来。
构建于 [Claude Code Hackathon](https://cerebralvalley.ai/e/claude-code-hackathon)(Cerebral Valley x Anthropic,2026 年 2 月)。[Everything Claude Code](https://github.com/affaan-m/everything-claude-code) 生态系统(42K+ Stars)的一部分。
## 快速开始
```
# 扫描您的 Claude Code 配置(无需安装)
npx ecc-agentshield scan
# 或全局安装
npm install -g ecc-agentshield
agentshield scan
```
就是这样。AgentShield 自动发现您的 `~/.claude/` 目录,扫描所有配置文件,并打印一份分级安全报告。
```
AgentShield Security Report
Grade: F (0/100)
Score Breakdown
Secrets ░░░░░░░░░░░░░░░░░░░░ 0
Permissions ░░░░░░░░░░░░░░░░░░░░ 0
Hooks ░░░░░░░░░░░░░░░░░░░░ 0
MCP Servers ░░░░░░░░░░░░░░░░░░░░ 0
Agents ░░░░░░░░░░░░░░░░░░░░ 0
● CRITICAL Hardcoded Anthropic API key
CLAUDE.md:13
Evidence: sk-ant-a...cdef
Fix: Replace with environment variable reference [auto-fixable]
● CRITICAL Overly permissive allow rule: Bash(*)
settings.json
Evidence: Bash(*)
Fix: Restrict to specific commands: Bash(git *), Bash(npm *), Bash(node *)
Summary
Files scanned: 6
Findings: 73 total — 19 critical, 29 high, 15 medium, 4 low, 6 info
Auto-fixable: 8 (use --fix)
```
### 更多命令
```
# 扫描特定目录
agentshield scan --path /path/to/.claude
# 自动修复安全问题(用环境变量引用替换硬编码的 secrets)
agentshield scan --fix
# 用于 CI 流水线的 JSON 输出
agentshield scan --format json
# 生成 HTML 安全报告
agentshield scan --format html > report.html
# 三智能体 Opus 4.6 对抗性分析(需要 ANTHROPIC_API_KEY)
agentshield scan --opus --stream
# 生成安全基线配置
agentshield init
```
## 检测范围
涵盖 5 大类别的 **102 条规则**,按 A–F 分级并给出 0–100 的数值评分。
### 机密检测 (10 条规则,14 种模式)
| 内容 | 示例 |
|------|----------|
| API keys | Anthropic (`sk-ant-`)、OpenAI (`sk-proj-`)、AWS (`AKIA`)、Google (`AIza`)、Stripe (`sk_test_`/`sk_live_`) |
| Tokens | GitHub PAT (`ghp_`/`github_pat_`)、Slack (`xox[bprs]-`)、JWT (`eyJ...`)、Bearer Token |
| 凭证 | 硬编码密码、数据库连接字符串 (postgres/mongo/mysql/redis)、私钥材料 |
| Env 泄露 | 配置中通过环境变量传递的机密、Hook 中的 `echo $SECRET` |
### 权限审计 (10 条规则)
| 内容 | 示例 |
|------|----------|
| 通配符访问 | `Bash(*)`、`Write(*)`、`Edit(*)` — 无限制的工具权限 |
| 缺少拒绝列表 | 没有 `rm -rf`、`sudo`、`chmod 777` 的拒绝规则 |
| 危险标志 | 使用了 `--dangerously-skip-permissions` |
| 可变工具暴露 | 所有可变工具 在没有作用域限制的情况下被允许 |
| 破坏性 Git | 允许的命令中包含 `git push --force`、`git reset --hard` |
| 无限制网络 | 允许列表中包含无作用域限制的 `curl *`、`wget`、`ssh *`、`scp *` |
### Hook 分析 (34 条规则)
| 内容 | 示例 |
|------|----------|
| 命令注入 | Shell 命令中的 `${file}` 插值 — 攻击者控制的文件名变成了代码 |
| 数据渗出 | 带有变量插值的 `curl -X POST` 将数据发送到外部 URL |
| 静默错误 | `2>/dev/null`、`\|\| true` — 失败的安全 Hook 静默通过 |
| 缺少 Hook | 没有 PreToolUse Hook,没有用于会话结束验证的 Stop Hook |
| 网络暴露 | Hook 中未限制速率的网络请求、未过滤的敏感文件访问 |
| 会话启动 | 下载并执行远程脚本的 SessionStart Hook |
| 包安装 | Hook 中的全局 `npm install -g`、`pip install`、`gem install`、`cargo install` |
| 容器逃逸 | Docker `--privileged`、`--pid=host`、`--network=host`、Root 卷挂载 |
| 凭证访问 | macOS Keychain、GNOME Keyring、/etc/shadow 读取 |
| 反向 Shell | `/dev/tcp`、`mkfifo + nc`、Python/Perl Socket Shell |
| 剪贴板访问 | `pbcopy`、`xclip`、`xsel`、`wl-copy` — 通过剪贴板渗出数据 |
| 日志篡改 | `journalctl --vacuum`、`rm /var/log`、`history -c` — 反取证 |
### MCP 服务器安全 (23 条规则)
| 内容 | 示例 |
|------|----------|
| 高风险服务器 | Shell/命令类 MCP、具有 Root 访问权限的文件系统、数据库 MCP、浏览器自动化 |
| 供应链 | `npx -y` 未经确认自动安装 — 域名抢注攻击向量 |
| 硬编码机密 | MCP 环境配置中的 API Token,而非环境变量引用 |
| 远程传输 | 连接到远程 URL 的 MCP 服务器 (SSE/streamable HTTP) |
| Shell 元字符 | MCP 服务器命令参数中的 `&&`、`\|`、`;` |
| 缺少元数据 | 无版本锁定、无描述、服务器数量过多 |
| 敏感文件参数 | `.env`、`.pem`、`credentials.json` 作为服务器参数传递 |
| 网络暴露 | 绑定到 `0.0.0.0` 而非 localhost |
| 自动批准 | 跳过工具调用用户确认的 `autoApprove` 设置 |
| 缺少超时 | 高风险服务器无超时设置 — 资源耗尽风险 |
### Agent 配置审查 (25 条规则)
| 内容 | 示例 |
|------|----------|
| 无限制工具 | 拥有 Bash 访问权限、无 `allowedTools` 限制的 Agent |
| 提示注入面 | 处理外部/用户提供内容且无防御措施的 Agent |
| 自动运行指令 | `CLAUDE.md` 包含“Always run”、“without asking”、“automatically install” |
| 隐藏指令 | Unicode 零宽字符、HTML 注释、Base64 编码的指令 |
| URL 执行 | `CLAUDE.md` 指示 Agent 获取并执行远程 URL |
| 定时炸弹 | 由时间或缺失条件触发的延迟执行指令 |
| 数据收集 | 批量收集密码、凭证或数据库转储 |
| 提示反射 | `ignore previous instructions`、`you are now`、DAN 越狱、伪造系统提示 |
| 输出操纵 | `always report ok`、`remove warnings from output`、抑制安全发现 |
## 功能特性
### 自动修复引擎 (`--fix`)
自动应用安全修复:
- 将硬编码机密替换为 `${ENV_VAR}` 引用
- 收紧通配符权限(`Bash(*)` → 限定范围的 `Bash(git *)`、`Bash(npm *)`)
仅应用标记为 `auto: true` 的修复。权限更改需要人工审查。
### 安全初始化 (`agentshield init`)
生成一个加固的 `.claude/` 目录,包含限定范围的权限、安全 Hook 和安全最佳实践。现有文件永不被覆盖。
### Opus 4.6 深度分析 (`--opus`)
由 Claude Opus 4.6 驱动的三 Agent 对抗 Pipeline:
1. **红队 (攻击者)** — 寻找可利用的攻击向量和多步骤攻击链
2. **蓝队 (防御者)** — 评估现有防护并推荐加固措施
3. **审计员** — 将双方观点综合为优先级风险评估
攻击者发现带有 `${file}` 插值的 `curl` Hook + `Bash(*)` = 命令注入 Pivot。防御者指出不存在 PreToolUse Hook 来阻止它。审计员将它们整合为优先行动列表。
```
agentshield scan --opus # Red + Blue run in parallel
agentshield scan --opus --stream # Sequential with real-time output
agentshield scan --opus --stream -v # Verbose — see full agent reasoning
```
```
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Phase 1a: ATTACKER (Red Team) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
✓ Attacker analysis complete (4521 tokens)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Phase 1b: DEFENDER (Blue Team) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
✓ Defender analysis complete (3892 tokens)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Phase 2: AUDITOR ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Risk Level: CRITICAL
Opus Score: █████░░░░░░░░░░░░░░░ 15/100
```
需要 `ANTHROPIC_API_KEY` 环境变量。
### 输出格式
| 格式 | 标志 | 用例 |
|--------|------|----------|
| Terminal | `--format terminal` (默认) | 交互式使用 |
| JSON | `--format json` | CI Pipeline、编程访问 |
| Markdown | `--format markdown` | 文档、PR |
| HTML | `--format html` | 自包含的可分享报告(深色主题,所有 CSS 内联) |
## GitHub Action
```
- name: AgentShield Security Scan
uses: affaan-m/agentshield@v1
with:
path: "."
min-severity: "medium"
fail-on-findings: "true"
```
**输入参数:**
| 输入 | 默认值 | 描述 |
|-------|---------|-------------|
| `path` | `.` | 扫描路径 |
| `min-severity` | `medium` | 最低严重级别:critical、high、medium、low、info |
| `fail-on-findings` | `true` | 如果发现达到严重级别阈值则使 Action 失败 |
| `format` | `terminal` | 输出格式 |
**输出:** `score` (0–100)、`grade` (A–F)、`total-findings`、`critical-count`
该 Action 会写入 Markdown Job Summary,并在受影响文件上以内联方式发出 GitHub Annotations。
## CLI 参考
```
agentshield scan [options] Scan configuration directory
-p, --path Hook 注入、MCP 服务器风险以及 Agent 提示注入向量。 [](https://www.npmjs.com/package/ecc-agentshield) [](https://www.npmjs.com/package/ecc-agentshield) []() []() [](LICENSE) [快速开始](#quick-start) · [检测范围](#what-it-catches) · [Opus Pipeline](#opus-46-deep-analysis---opus) · [GitHub Action](#github-action) · [MiniClaw](#miniclaw) · [发布渠道](#distribution)