日期:2026-09-07;安全设计基线,未完成独立安全签署。本文是权限、威胁模型与硬安全门禁的规范性权威;项目建议书 §12、§16.7-16.8 保留风险与设计来源。需求 REQ-004/005/007/013/019/021-026/028。
保护源工作树、baseline/accepted snapshot、事件/journal/receipt、秘密、审批权限和费用预算。S1 信任本机 OS 和核心二进制;不信任模型、仓库文本、hook、adapter 和外部结果。相同 OS 用户下目录分离不是恶意进程沙箱,哈希不是身份认证。能力不足时拒绝任务,不能用“用户已知风险”默默替代 required 隔离。
| 主体 | 源目录 | run-workspace | outbox | 核心 state/store | 接受/发布 |
|---|---|---|---|---|---|
| chain/core | 只读捕获 | 物化/恢复,先停机 | 读取校验 | 持锁写入 | 校验独立授权后发布 |
| managed agent | 无写权限 | 通过 applier | 仅候选/响应 | 禁止 | 禁止 |
| isolated agent/hook | 禁止 | 仅授权 target/cwd | 仅自身产物 | 禁止 | 禁止 |
| handoff 操作员 | 不属于交接授权 | 有效独占租约范围 | 结构化归还 | 禁止 | 不自动批准 |
| console/reviewer | 只读引用 | 只读 diff | 不直接写 | 只调用控制 API | 授权命令,不手改 receipt |
限制必须由 runner/OS 能力落实;不能仅靠提示词。未知进程或未能证明相关写者停止时不恢复、不交接、不发布。执行者不得拥有修改策略和独立批准同一变更的合并权限。
| ID/类别 | 攻击或故障 | 防护及责任 | 测试 |
|---|---|---|---|
| SEC-01 冒充 | 伪造 review/旧 requestId/租约 | 主体、摘要、attempt、时效绑定;chain/tickets/adapters | AT-05/08/09 |
| SEC-02 篡改 | 替换 hook、manifest、receipt;路径穿越、symlink/reparse 逃逸 | 锁定摘要、真实路径/打开时检查、离线哈希链;taskdef/snapshot/evidence | AT-02/04/06 |
| SEC-03 抵赖 | 删除/重排事件、匿名 waive | 序号+前哈希、授权主体/原因/有效期;evidence/chain | AT-04/05 |
| SEC-04 信息泄露 | 日志、模型提示、快照含 token | 环境白名单、secret 引用、入包/外发前扫描及大小限制;gates/evidence/adapters | AT-06/10 |
| SEC-05 拒绝服务 | 磁盘满、无限输出、挂起子树、重试风暴 | 配额预检+运行检测、进程树停机、统一预算;guard/gates/tickets | AT-03/06/07 |
| SEC-06 权限提升 | 提示注入批准自己、shell 参数注入、生成校验器自批 | 数据不提升为指令、argv、权限分离、模板约束;taskdef/gates/repair | AT-05/06/11 |
| SEC-07 复合风险 | 人工/AI 并发写、过期交接自动通过 | 单写租约、停机证明、归还完整复检;chain/guard | AT-09 |
| SEC-08 供应链 | 候选覆盖 seed/verifier、候选自证发布、同 runner 后台进程篡改、CI Action 漂移、校验和来源被冒充 | candidate probe 与可信核验使用独立 runner、独立较早 verifier commit、固定 candidate/bootstrap commit、Action 完整 SHA、GitHub CI、外部 oracle、SHA256SUMS/SBOM/许可清单与人工批准;release/harness | AT-13/14 |
| SEC-09 权限提升/泄露 | 预览执行恶意 hook、导出别名覆盖源树或泄漏秘密 | 静态预览零执行,新目标实际路径检查/完整性与外发扫描;taskdef/snapshot | AT-16/17 |
| SEC-10 冒充/副作用 | 撤销后仍投递、过期授权发布、上传被误称可回滚 | 每次副作用重新授权、在途停机证据、默认禁外部写;chain/guard/gates | AT-18/19 |
| SEC-11 拒绝服务/抵赖 | 超时退款假设、跨 run 绕过预算、重复结算 | 持久预留、未知占用、共享锁与结算去重;tickets/adapters | AT-20 |
| SEC-12 数据丢失/泄露 | 不完整备份、卸载删共享工具、旧证据含秘密 | 引用闭包核验、新 store 演练、默认保留与显式处置;snapshot/evidence/release | AT-21 |
| SEC-13 冒充/提权/泄露 | 伪造或陈旧操作员响应、UI 文本冒充授权、对话中秘密被持久化 | 主体/attempt/context hash/权限绑定、结构化允许响应、secret-direct、重放去重;chain/console/evidence | AT-22 |
| SEC-14 篡改/提权/抵赖 | CLI Agent 二进制/配置替换、逃逸 source/store、提升工具/网络权限、伪造或缺失事件、停机/恢复歧义、自行 commit/push/publish | 可执行文件与配置摘要、能力探针、隔离 workspace、进程树监督、事件/日志与前后 manifest、独立 gates/review;adapters/guard/evidence | AT-23 |
| SEC-15 信息泄露/抵赖/副作用 | visible 黑箱 Agent 读取越界资源、泄密、网络/费用/后台进程不可见、外部 Git/发布副作用,或风险说明被当作免责放行 | 显式版本化风险确认、隔离 workspace、用户监督与宿主侧限制、归还后全量扫描、unknown 标记、独立 gates/review;console/chain/guard/evidence | AT-24 |
测试编号解析见 TEST_STRATEGY.md。全部强制反例必须能断言“不发布、不推进、证据仍完整”,不能只检查返回非零。
密码/token/MFA/私钥口令不经模型、不写配置/日志;secret-direct 只允许用户直达受控终端或凭据提供方,无能力则等待。只记录命令元数据、文件摘要和经脱敏结论;默认不录屏、不记录键击和完整 REPL 历史。秘密扫描无法保证识别所有秘密,需路径排除、白名单最小输入和人工审查共同防御。
网络默认拒绝,例外授权须列 host/port/purpose、提供方数据策略及期限。无法强制限制的 runner 拒绝相应策略。发布出的 ProofRail CLI 与核心运行时不直接访问 GitHub、GitHub API、raw content、包 registry 或其他公网发布站点;发布核验只消费本地 artifact、manifest、SBOM 和许可文件。GitHub Actions 的 checkout、依赖下载和 artifact 上传属于 CI 控制面,不扩大产品运行时网络权限。第三方依赖锁版本、来源、许可证和摘要;禁止运行时自动安装未知插件。
审计证据默认遵循 RFC 保留策略,清理只针对无引用且过期对象;审计锁定永不自动清除。外发前扫描失败阻断;发现泄漏应暂停、隔离受影响产物并通知操作者撤销凭据,不在诊断中再回显秘密。
以下事项需要独立评审:扩大写入/网络/工具权限、变更审批规则、生成 hook、canonical/签名/恢复协议。黑箱模式的风险确认不是免责通行证:ProofRail 仍须履行其承诺的隔离、扫描、门禁、证据和评审责任,用户只承担已明确列出的宿主监督与不可观测外部行为风险。未修复的 fail-close 绕过、失败候选接受、秘密外泄或不可恢复覆盖均阻断发布。
拟定响应目标(待 ADR-006 批准):收到私密漏洞报告后 2 个工作日内确认、5 个工作日内完成影响分类;这不是已公布 SLA。安全报告渠道和维护者需发布前确定;未确定前不把含凭据/利用细节的报告放公共 issue。若后续引入签名/attestation,其私钥或短期凭据不得进入仓库、模型或普通日志。
RFC §19 的 PC-01–PC-06 不授权远程审批服务或部署引擎。授权记录必须由可信本机控制路径产生并绑定 manifest,模型/仓库文本不能自授信;本机同用户恶意进程的防护仍取决于真实权限分离。waiver 不得豁免完整性、停机、独占写或秘密保护。
撤销只阻断新的动作并请求停止,不承诺撤回已经发出的网络请求。费用未知不代表未收费。导出/诊断都要脱敏,但扫描不保证识别所有秘密。秘密进入历史证据后隔离、限制访问、撤销凭据并阻断外发;删除与保留冲突由人批准并记录不含秘密的处置,不重写历史冒充完整。
备份/恢复须证明对象闭包和一致性,卸载默认保留证据且不删 SessionBridge/Go。SSD、快照与外部备份可能保留副本,逻辑删除不能宣传为安全擦除。S1 须分开显示内容完整性与支持状态,并明确 SHA256SUMS 不证明发布者身份;后续若提供签名,还须分开显示签名真实性和撤销信息新鲜度。