攻击面统计
20+
消息通道(PoisoningEntry)
6
不可信 Prompt Slot
6
攻击路径(AP)
10
SC-GAP 安全缺口
2
内部独有发现
14.58
最高 RiskScore
SecurityChecker 有效性矩阵
评级:A(完善)→ F(形同虚设),基于覆盖范围与可绕过性评估
ExecApprovals
C
覆盖范围
exec / spawn / shell 工具调用的 allowlist 过滤
实现:exec-approvals-C3ESyK5S.js
已知绕过
可通过 apply_patch 自修改 allowlist(SC-GAP-EXEC-EVOLUTION)
Heartbeat headless 模式中审批界面不可用
AllowList(DM)
C
覆盖范围
DM 通道入站消息发件人过滤
实现:allowlist-match-DYGjlelq.js
已知绕过
群组消息完全不受 AllowList 保护(SC-GAP-GROUP-INJECT)
AllowList 控制"回复",不控制"LLM 推理触发"
SSRF Guard
D
覆盖范围
Node.js fetch 层的出站请求 SSRF 防护
实现:ssrf-DgYcl3bS.js,BLOCKED_HOSTNAMES
已知绕过
canvas.eval 使用 WebView(非 Node.js fetch),完全绕过(SC-GAP-SSRF-WEBVIEW)
DNS Rebinding(仅 IP 检测,非重绑定检测)
ExecSafety
D
覆盖范围
Shell 元字符 /[;&|`$<>]/ 的单参数字符检测
实现:exec-safety.ts
已知绕过
仅检测单参数字符,不验证命令语义组合
find+tar+curl 等多命令组合完全不覆盖
LLM 可通过多步调用绕过单参数检测
DANGEROUS_ACP_TOOLS
C
覆盖范围
HTTP Gateway API 层的危险工具拒绝
exec/spawn/shell/sessions_spawn/cron/gateway/fs_write/fs_delete 等
已知绕过
仅对 HTTP API 生效,ACP 本地路径(127.0.0.1)完全不受限
Agent 主 session 可直接调用 cron/sessions_spawn
DM Pairing
B
覆盖范围
DM 通道发件人认证(默认开启)
白名单匹配,防止陌生人触发 Agent
已知绕过
dmPolicy=open 时完全禁用
群组通道无等价机制
fs-safe 路径验证
B
覆盖范围
文件写入路径遍历防护(Python subprocess pinning)
实现:fs-safe-*.js
已知绕过
路径遍历防护完善
无内容过滤,HEARTBEAT.md 恶意内容可写入
SC-GAP 安全缺口(10 个)
| SC-GAP ID | 严重度 | 缺口描述 | 影响 AP | 修复方向 |
|---|---|---|---|---|
| SC-GAP-GROUP-INJECT | 严重 | AllowList 控制"Agent 是否回复",不控制"群组消息是否进入 LLM 上下文",群组中任意成员可触发注入 | AP-OC-06 | 为群组消息增加独立 content_filter 或 inference_guard |
| SC-GAP-HEARTBEAT-CONTENT | 严重 | HEARTBEAT.md 文件写入无任何验证,攻击者通过一次 fs_write 可永久控制 Heartbeat 行为 | AP-OC-02 | HEARTBEAT.md 增加数字签名或写入来源验证 |
| SC-GAP-HEARTBEAT-APPROVAL | 高 | Heartbeat headless 运行时无交互审批界面,ExecApprovals 中的用户确认环节被静默跳过 | AP-OC-02 | Heartbeat 运行时禁用危险工具或限制工具集 |
| SC-GAP-CANVAS-EVAL | 严重 | canvas.eval 允许 Agent 在 WebView 中执行任意 JavaScript,无任何内容过滤或代码审查 | AP-OC-04 | 对 canvas.eval 增加 CSP 白名单或代码静态分析 |
| SC-GAP-SSRF-WEBVIEW | 严重 | Node.js SSRF Guard 不覆盖 WebView 发起的 HTTP 请求,canvas.eval 可完全绕过 SSRF 防护访问内网 | AP-OC-04 | 在 WebView 层面增加 SSRF 拦截或限制 canvas 网络权限 |
| SC-GAP-BYPASS-PERMISSIONS | 严重 | coding-agent skill 官方推荐 bypassPermissions,恶意 Skill 可诱导用户触发从而获得完整机器权限 | AP-OC-05 | 禁止 Skill 描述中出现 bypassPermissions,或增加用户二次确认 |
| SC-GAP-EXEC-EVOLUTION | 高 | ExecApprovals allowlist 以可写文件存储,Agent 可通过 apply_patch 修改自身的执行限制规则 | AP-OC-01 AP-OC-05 | ExecApprovals 文件设为只读,或增加写入时用户确认 |
| SC-GAP-SKILL-TRUST-BLIND | 高 | Skill 的信任级别对 LLM 不可见,Agent 无法区分官方 Skill 与第三方 Skill,导致盲目信任 Skill 指令 | AP-OC-05 | 在 Skill 描述中注入 trust_level 信息,或限制第三方 Skill 可执行的工具集 |
| SC-GAP-LANCEDB-EXFIL | 中 | LanceDB 远程同步配置若被篡改,可将向量记忆(含敏感内容)同步到攻击者控制的存储端点 | AP-OC-03 | LanceDB 存储端点设为不可被 Agent 修改的只读配置 |
| SC-GAP-CRON-ACP | 高 | cron 工具被 HTTP API 层拒绝,但 ACP 本地路径不受限,Agent 主 session 可直接建立定时任务 | AP-OC-06 AP-OC-03 | 对 cron 创建增加显式用户审批,或限制 cron payload 内容 |
修复优先级建议
SC-GAP
核心问题
推荐修复
SC-GAP-GROUP-INJECT
P0 立即修复
P0 立即修复
群组消息不受 AllowList 过滤,任意成员可向 Agent 注入指令
增加 group_inference_guard:群组消息进入 LLM 前增加独立内容检测,或要求群组消息 mention 后才触发推理
SC-GAP-HEARTBEAT-CONTENT
P0 立即修复
P0 立即修复
HEARTBEAT.md 可被任意写入,一次写入实现永久后门
HEARTBEAT.md 签名验证:写入时附加 HMAC 签名,运行时验证完整性;或由系统生成,禁止 Agent 直接写入
SC-GAP-BYPASS-PERMISSIONS
P0 立即修复
P0 立即修复
bypassPermissions 被官方推荐,供应链攻击路径完全合法化
删除 bypassPermissions 推荐:coding-agent SKILL.md 改用 allowedTools 精细授权,并增加子 Agent 权限声明审批
SC-GAP-CANVAS-EVAL
P1 短期修复
P1 短期修复
canvas.eval 无内容过滤,可执行任意 JS 并绕过 SSRF
CSP 白名单 + 网络隔离:WebView 添加 Content-Security-Policy,限制 eval 的网络访问范围到可信域名
SC-GAP-EXEC-EVOLUTION
P2 中期修复
P2 中期修复
ExecApprovals allowlist 可被 Agent 自修改
只读 allowlist:ExecApprovals 文件设为系统只读(chattr +i 或 TPM 锁定),修改需要 OS 级权限