Skip to content

框架威胁模型

状态: 1.0 之前的安全审查基线。这是工作威胁模型,不是独立安全签署。

资产

  • 本地文件、进程和 shell 执行
  • 提供商和适配器凭据
  • 插件载荷和 Manifest
  • 会话、记忆和检查点数据
  • 策略决策和审计/事件事实

信任边界

  1. 应用 -> Agent 循环。 模型输出、工具名和工具参数是不可信输入。
  2. Agent -> 工具/策略。 框架执行策略决策和工具允许列表;它不实现 授权策略。
  3. 框架 -> 插件宿主。 核心宿主期望已经验证的载荷。签名、SBOM 和信任 存储检查归产品所有。
  4. 插件宿主 -> 操作系统。 进程和 WASM 宿主应用约束、超时、取消和资源 限制。
  5. 框架 -> HTTP 适配器。 共享客户端使用默认 TLS 校验,并发送调用方 提供的凭据。
  6. 框架 -> 沙箱。 pkg/sandbox 是接口;嵌入产品拥有具体隔离实现。

安全不变量

  • 策略拒绝失败关闭;每个模型/工具操作都可以被授权。
  • 允许的工具既会被公布,也会被强制执行。
  • 插件宿主仅在 ACTIVE 状态接受调用;其他所有状态都拒绝。
  • 进程令牌通过环境传递,绝不通过 argv。除非调用方提供,否则不继承子进程 环境。
  • 进程宿主在需要时应用平台限制,当平台无法强制执行时启动失败。
  • WASM guest 受线性内存页和上下文取消限制。
  • policy.PathChecker 解析符号链接,拒绝遍历和同级前缀逃逸,并默认拒绝。
  • HTTP 客户端不会禁用 TLS 校验。调用方选择基础 URL 和凭据。
  • 框架不存储提供商凭据、租户策略或信任根。

已知限制

  • 核心中没有签名/SBOM 验证。 产品必须在启动宿主之前验证描述符、签名和 SBOM。未签名本地开发是明确的产品信任配置决策。
  • PathChecker 是检查后使用(check-then-use)。 符号链接可能在检查和 文件操作之间变化。高风险调用方应将其与操作系统级约束或按句柄打开 API 结合使用。
  • Linux 进程约束弱于 Windows。 每进程 rlimit 和进程组不能提供与 Windows Job Object 相同的硬保证;参见 pkg/plugin/host/process/limits_linux.go。
  • v1 中没有 WASM CPU fuel。 CPU 密集型 guest 依赖上下文取消和强制 终止,而不是确定性的 fuel 计量。
  • HTTP 重定向。 pkg/httpclient 使用 Go 的默认重定向策略。响应体默认 有界(32 MiB),可通过 Config.MaxBodyBytes 覆盖;调用方仍应使用可信的 基础 URL。
  • 虚拟文件系统约束。 pkg/vfs/localfs 通过 policy.PathChecker 拒绝 绝对路径、遍历、同级前缀和符号链接逃逸。与 PathChecker 本身一样,它是 检查后使用;高风险调用方应增加操作系统级约束。
  • 已卸载的工具结果。 Offloader 归调用方所有;存储的字节可能包含敏感 数据。框架只替换提示词内容,不选择存储、加密或保留策略。
  • Go 标准库修复。 CI 和发布构建使用 Go 1.26.10,以便包含 Go 1.26.9+ 中的 net/http 修复和 GO-2026-6809 的 crypto/x509 修复。使用较旧工具链 的使用方应在部署 HTTP 客户端之前升级。
  • 提示词注入本身不是框架漏洞。 执行边界是策略加工具允许列表,而不是 模型文本。
  • v1 中不支持插件到插件调用,也不支持动态能力升级。

1.0 审查清单

  • [x] 导出 API 文档注释审计
  • [x] 增加模糊测试:Manifest 解析器、工具调用解析器、JSON Schema、路径检查器
  • [x] CI 中竞态测试通过
  • [x] CI 矩阵已配置:Linux、Windows、macOS
  • [x] 本地运行 go vet、staticcheck 和 govulncheck
  • [x] SBOM/校验和工具已在本地验证
  • [x] 已发布带 SBOM/校验和的版本(附注标签)
  • [ ] 宿主约束和路径约束的独立审查
  • [x] 已添加外部集成方示例;最小权限策略配置仍待完成

报告

参见 SECURITY.md。