feat: 远程分片加绑定门与认证门,worker 无特权口径落文档

This commit is contained in:
2026-10-11 18:31:18 +00:00
parent 8426d00133
commit 4fb66bf2e3
8 changed files with 551 additions and 131 deletions
+44 -3
View File
@@ -66,8 +66,49 @@ token 生命周期与 server 进程同长:启动时(认领 sidecar 之前)
执行上限:eval 请求带 `max_steps` 步数上限;控制请求不占 worker,不被长 eval 阻塞。
## 分片安全边界
远程分片(test262 runner 的 `--remote-supervise` 监督者与 `--worker` 执行半区)
的安全边界定稿为三个口径,与 server 子系统同型双闸门:loopback 绑定加 token
认证门。与 server 的差别在威胁模型与分发渠道:worker 执行不可信测试内容,
威胁对象是远程指派者而非本机邻居;token 不经网络分发,靠前台打印加带外注入。
### 缺省绑定地址
`--remote-supervise` 端点只允许 loopback 绑定:用户只给端口(裸端口或
`:port` 形态)时解析期补缺省 127.0.0.1;显式非 loopback 地址(0.0.0.0、
局域网 IP)在解析期报错拒绝,bind 处另有双保险拒绝非 loopback。该姿态比
server 的「0.0.0.0 可配置但不受支持」更严:server 的威胁模型是本机邻居,
worker 执行不可信测试内容,非 loopback 绑定会把窗口指派面(含本地路径
执行)暴露到网络,防护责任无法转给使用方。端点只接受 `[IP]:port` 形态,
主机名不解析(解析期无法验证 loopback)。
### worker 认证 token
监督者启动时生成 64 位十六进制 token(读 `/dev/urandom` 32 字节,非 Linux
回落时间加进程号混合熵)并打印到前台 stderr;worker 进程经
`OXIDE_TEST262_WORKER_TOKEN` 环境变量取得(带外注入,与 server `--rm`
模式同型:token 不经网络分发)。worker 连接后首帧必须是 `Auth` 事件帧,
监督者逐字节异或累加判等(长度不等直接判不等,避免逐字节短路的时序
侧信道),匹配才写回 `AuthOk` 命令帧并进窗口循环;不匹配或首帧非 `Auth`
直接断连、不回帧,不向攻击者泄露差异。读首帧带 30 秒读超时,半开连接
不永久占线程。
token 生命周期与监督者进程同长:启动时生成、进程退出即销毁,无轮换机制。
### worker 无特权口径
worker 是最小单向面:
- 只能发协议内事件帧(`Auth` / `Heartbeat` / `Fail` / `Scene` / `Done`),
未知类型在解析层拒绝,连接按死亡处理;
- 连接数受 worker 数上限约束(`--remote-supervise` 的 worker 数旗标),
每窗口一条连接;
- 不读监督者本机文件:窗口路径清单随 `Assign` 帧携带,worker 不读监督者
本机临时文件;
- 无文件系统写权限面:worker 不写监督者侧任何文件,失败记录与现场都经
帧回传。
## 扩展位
本文档只定稿持久 server 现状。分片安全边界(分片启用时的缺省绑定地址、worker
认证 token、worker 无特权口径)属 963.17 范围,本文档不预写;963.17 实施时在本
文档追加相应章节。
本文档定稿持久 server 现状与远程分片安全边界(见上「分片安全边界」一节)。