merge(chv-muse-round12): 合入 P4 浏览器完全对齐 (1c8fc3f)
冲突按并集解:build.sh 保留 P3 authd 检查/拷入/runcmd(含 start chv-authd)+ P4 三件套检查/拷入(P4 的重复 runcmd 行 删掉——同一文件写两次会盖掉 authd 启动行)+ P4 的 cdp-broker.service/tmpfiles(含 ask-queue)+ P3 叶子模块条件 拷入;buildinfo.py 两边内容项并集;chv-browser.py 取 P4 重构 版(broker 客户端);production-readiness.md P4 的 §15 顺延为 §16。P2 的 BrowserTest 改走假 CDP broker(断言不变),两路 干跑夹具补齐并集文件集。
This commit is contained in:
commit
c24cc0ba92
10 files changed
+2116
-278
No files matched your search
@@ -884,3 +884,57 @@ docs/chv-muse-p2-gap.md(现状 vs Muse、改了什么、诚实边界、
|
||||
HTTP 请求;完整出口封堵是 P3 Sentinel 的事。
|
||||
- 单元内 codex 用 danger-full-access(单元即沙箱,不再套 bwrap);
|
||||
执行器侧改 `--sandbox` 透传是 P1 的文件,本轨只定义了接口契约。
|
||||
## 16. 对齐 Muse P4:浏览器完全对齐(堆叠于 P2 之上)
|
||||
|
||||
> 编号说明:本节在 P4 分支写为 §15;P2 的 §15 已在(上一节),
|
||||
> 合入时顺延为 §16,内容不改。
|
||||
|
||||
### 16.1 本轨做了什么(代码已做、真机未验证)
|
||||
|
||||
- Chromium 的所有权从浏览器子代理移到单元外 CDP broker:
|
||||
`chv-guest/chv-cdp-broker.py`(新,用户 `chv-browser`)独家
|
||||
`chromium.launch(headless=True, args=LAUNCH_ARGS)`;子代理
|
||||
`chv-guest/chv-browser.py`(P2 版基础上重构)改为 broker 的
|
||||
客户端,不再直连 Playwright,本文件里不再有 playwright import。
|
||||
- a11y-tree-only 收紧到底:快照只出无障碍树 + 标题/URL;全部回包与
|
||||
错误信息过 `sanitize_error`(去 HTML 标签、截断 200 字符、凭据形
|
||||
key=value 与 sk- 形 token 打码);回包先过 `response_leaks`
|
||||
检查(ws 端点、DevTools 路径、HTML 标签即拦截);Playwright
|
||||
调用白名单 + AST 测试钉住两个客机脚本里不存在脚本注入面
|
||||
(evaluate/add_script_tag/add_init_script/expose_function/
|
||||
set_content/keyboard/mouse 等属性名)。
|
||||
- DevTools 不暴露:启动参数白名单无 `--remote-debugging-port`、
|
||||
无 `devtools=True`;CDP 端点(ws 地址)绝不进任何响应。
|
||||
- 暂停状态机:CDP broker 持 `active/paused`,`pause`/`resume`/
|
||||
`status` 操作;暂停时除 ping/resume/status/list_asks/resolve_ask
|
||||
外一切操作拒绝;自动暂停触发源:观测到导航 POST、下载命中拦截规则。
|
||||
- 确定性分类器(规则,不冒充模型):`detect_injection` 启发式
|
||||
(中英文各 6 条模式,命中只标注 `untrusted` + `injection_flags`,
|
||||
快照恒带 `untrusted_input: true`);`detect_form_risk` 扫密码/
|
||||
支付字段,高风险表单在页时 `open` 导航即返回 ask 入队;
|
||||
`scan_download` 一条可执行扩展名规则(命中即取消下载 + 暂停 + 入队)。
|
||||
- 静态恶意站名单 `chv-guest/browser-blocklist.txt`(一行一个域名/
|
||||
后缀),导航前检查;首版只有 RFC 2606 `.test` 自测条目,生产条目
|
||||
由运维构建时填入;无在线更新。
|
||||
- 文件型待审批队列 `/run/chv/ask-queue/`(与 P3 ApprovalQueue 同语义:
|
||||
pending/allowed/denied;`list_asks`/`resolve_ask` 操作;`allowed`
|
||||
解除暂停,`denied` 关当前页)。
|
||||
- 测试:`cloud/tests/test_chv_muse_p4.py` 36 项全过(含否定测试:
|
||||
evaluate 被拒、DOM 外泄被拒、DevTools 端口不可达、私有地址被拒、
|
||||
高风险表单被拦、注入文本被标注、真 socket 联调整条链)。
|
||||
|
||||
### 16.2 本轨明确不做(见差距表 §3)
|
||||
|
||||
- 不做模型分类器;不做在线更新的拦截名单;不做用户接管浏览器与
|
||||
凭证注入填表的真实触发源联动(只留 `pause` 操作与状态机);
|
||||
不封单元内 curl/Python 直接取页面原文的口子(那是 P3 Sentinel
|
||||
的出口管辖);不做独立根文件系统(P2 的取舍,本轨沿用)。
|
||||
|
||||
### 16.3 真机待验证清单(round 12,测试机空闲后)
|
||||
|
||||
见 `docs/chv-muse-p4-gap.md` §5:CDP broker 进程身份与启动参数、
|
||||
整条链快照无泄露、单元内连不上 CDP、密码表单 ask 流程、注入标注、
|
||||
拦截名单、下载拦截、暂停/恢复、性能记录。另:集成者须改 P2 测试
|
||||
`test_open_returns_a11y_snapshot_with_fake_playwright`(合入 P4 后
|
||||
`BrowserAgent` 不再直连 Playwright,改为走假 CDP broker)。
|
||||
|
||||
Reference in new issue
Block a user