安全体系
16 层纵深防御 — 独立可测试的安全系统
Octarq 实现纵深防御安全。不依赖单一安全机制,16 个独立系统形成重叠层级,任何一层失败都会被其他层捕获。
安全系统总览
| # | 系统 | 防护目标 |
|---|---|---|
| 1 | WASM 双重计量沙箱 | CPU DoS,无限循环 |
| 2 | Merkle 哈希链审计 | 日志篡改 |
| 3 | 信息流污点追踪 | 提示注入,数据泄露 |
| 4 | Ed25519 清单签名 | 供应链攻击 |
| 5 | SSRF 防护 | 服务端请求伪造 |
| 6 | 密钥零化 | 内存取证,密钥泄露 |
| 7 | OFP 互认证 | 未授权 P2P 连接 |
| 8 | 能力门控 | Agent 越权操作 |
| 9 | 安全头 | XSS,点击劫持,MIME 嗅探 |
| 10 | GCRA 速率限制 | API 滥用,拒绝服务 |
| 11 | 路径遍历防护 | 目录遍历攻击 |
| 12 | 子进程沙箱 | 密钥通过子进程泄露 |
| 13 | 提示注入扫描 | 恶意技能提示 |
| 14 | 循环守卫 | Agent 工具调用循环 |
| 15 | 会话修复 | LLM 对话历史损坏 |
| 16 | 健康端点脱敏 | 信息泄露 |
能力门控
每个 Agent 操作都需要能力检查。能力在清单中声明,运行时强制执行:
[capabilities]
tools = ["file_read", "file_list", "web_fetch"]
memory_read = ["*"]
memory_write = ["self.*"]
network = ["api.anthropic.com"]
shell = []
agent_spawn = false能力继承验证 — 子 Agent 的能力必须是父 Agent 的子集,防止权限提升。
WASM 双重计量
不可信 WASM 模块在 Wasmtime 沙箱中运行,同时使用两种计量机制:
- 燃料计量 (Fuel) — 计算指令数,预算耗尽则终止
- 纪元中断 (Epoch) — 看门狗线程监控墙钟时间
两者独立运行,即使一个失败,另一个也能终止失控模块。
Merkle 审计链
每个审计条目都包含前一条目的加密哈希。篡改任何一条记录,整个链条都会断裂。
密钥安全
- 所有 API 密钥字段使用
Zeroizing<String>,drop 时自动从内存擦除 - 配置中的敏感字段在 Debug 输出和日志中自动脱敏
- 子进程使用
env_clear()+ 选择性变量传递