Codex安全模型详解为什么它绝不自动安装Tweak更新运行时边界与5层防护拆解【免费下载链接】codex-plusplusCodex tweak system for the Codex desktop app项目地址: https://gitcode.com/gh_mirrors/co/codex-plusplusCodex 是面向 Codex 桌面应用的 Tweak调校插件扩展系统。它最反直觉的一点是每天检查一次 Tweak 更新但绝不自动下载、安装或替换任何 Tweak 代码。本文将拆解 Codex 安全模型的 5 层防护与运行时边界帮你看清这套更新只提醒、安装靠人工的设计为什么更可靠。核心原则Tweak 是本地代码默认视为不可信Tweak 是本地代码在人工审核之前应当被视为不可信。Codex 每天检查一次 GitHub Releases 并显示是否有更新但它永远不会自动下载、安装或替换 Tweak 代码。 —— SECURITY.md这正是很多用户的第一反应不是有商店吗为什么不能一键更新答案在于威胁模型——Tweak 运行在 Codex 应用内部能接触 UI、文件和 IPC 通道。一旦允许自动更新攻击者只要控制上游仓库或 API就能把恶意代码静默送进你的应用。所以 Codex 的选择很干脆把更新降级为建议把安装留给人。5层防护总览从商店到本地的一路拦截层级防护关键点参考代码L1商店审核 提交锁定管理员逐条审查源码approvedCommitSha钉死版本store/index.jsonL2清单严格门禁缺少id/name/version/githubRepo的 Tweak 直接拒绝加载packages/runtime/src/tweak-discovery.tsL3运行时沙箱渲染进程隔离、路径越界拦截、资产读取限额packages/runtime/src/main.tsL4更新只建议不执行每日检查仅返回元数据本地有改动则拒绝更新packages/runtime/src/main.tsL5应用层完整性 安全模式本地重签名、asar 哈希同步、一键禁用全部 Tweakpackages/installer/src/integrity.tsL1 商店层每个 Tweak 都钉死在一个已审核提交上商店注册表 store/index.json 里每个条目都记录了approvedCommitSha、approvedAt、approvedBy——即管理员在哪个提交上审核了什么代码。安装时 Codex 只从该提交的归档地址下载见 tweak-store.ts并逐项校验下载内容的 id、仓库、版本与审核条目一致main.ts#L1210-L1222。提交锁定还堵住了一个隐蔽漏洞如果作者审核后偷偷推了新代码商店流程会明确提示不要批准另一个提交tweak-store.ts#L126-L160。完整发布流程见 store/README.md。L2 发现层清单不合规Tweak 根本不会被加载运行时扫描tweaks/目录时清单门禁是故意从严的manifest.json解析失败、缺少必填字段、githubRepo不是owner/repo格式、scope越界——任何一项不满足该 Tweak 直接被跳过。注释里写得很直白要求 Tweak 自报仓库是为了让管理器能检查 release但又不给它任何更新/安装通道tweak-discovery.ts#L1-L9。此外SDK 的validateTweakManifest会把permissions限定在 6 种已声明能力内ipc、filesystem、network、settings、codex.windows、codex.views用户安装前就能看清 Tweak 要什么权限sdk/src/index.ts#L64-L81。L3 运行时层Tweak 能碰到的只有围栏里的东西渲染进程 Tweak 运行在 preload 上下文中窗口创建时contextIsolation: true、nodeIntegration: falsemain.ts#L1491-L1499。文件系统访问全部收敛到主进程代理且多重设防路径越界即拒绝读取 Tweak 源码必须落在tweaks/目录内否则抛错main.ts#L625-L634每个 Tweak 一个数据沙箱读写只能发生在tweak-data/id/内..穿越会被拦截main.ts#L686-L703资产读取双重检查 1 MiB 限额 MIME 白名单防目录穿越与资源滥用main.ts#L636-L676外链白名单Tweak 元数据只能打开https://github.com链接file://、http://一律拒绝main.ts#L716-L722。官方边界声明见 SECURITY.md渲染进程 Tweak 只能改 UI主进程 Tweak 只能使用 Codex 暴露的受控 API——只安装你信任来源的 Tweak。L4 更新层每天查一次然后就没有然后了这是全文最核心的一层。每日更新检查ensureTweakUpdateCheck只产出四样东西latestVersion、releaseUrl、updateAvailable、错误信息然后缓存进state.json。渲染进程拿到的只有这些元数据它最多能做的就是把 release 页面打开给你看。状态结构体上的注释毫不含糊Runtime never auto-installs updates.main.ts#L93-L95。换句话说运行时里根本不存在自动下载、安装或替换的代码路径架构说明见 docs/ARCHITECTURE.md#L37-L41。这不是功能还没做完而是刻意删除的能力。手动从商店安装时还有一道额外保险如果检测到本地文件被修改过与安装时记录的 SHA-256 文件哈希不符更新会直接抛StoreTweakModifiedError拒绝执行main.ts#L1247-L1263——你的本地改动永远不会被静默覆盖。相关单测见 tweak-store.test.ts。L5 应用层签名、完整性哈希与一键急停安装器对 Codex 应用做的改动全部本地化、可逆翻转 Electron fuseEnableEmbeddedAsarIntegrityValidation off并在Info.plist同步 asar 的 SHA-256 哈希两者互为保险fuses.ts、integrity.ts#L14-L37用本机本地签名身份重签从不触碰 SIP、Hardened Runtime 等系统级防护原始文件备份在backup/随时可修docs/ARCHITECTURE.md出问题时的急停按钮——安全模式codex-plusplus safe-mode --on后所有 Tweak 直接不加载逐个开关状态不受影响safe-mode.ts#L43-L47主进程在注册 preload 前就会检查该开关main.ts#L458-L465。排障命令doctor、repair汇总在 docs/TROUBLESHOOTING.md。手动更新 Tweak 的正确姿势3步清单先看再说在 Tweak 列表点更新提示阅读 release notes、变更文件和仓库归属查权限确认新版本的permissions和新增网络行为是否可接受清单定义见 sdk/src/index.ts#L9-L51人工安装从商店或自行替换tweaks/tweak-id/目录运行时监听器会自动热重载防抖 250ms见 main.ts#L736-L766。总结Codex 的安全模型可以浓缩成一句话把自动从代码更新这条链路上彻底拿掉。商店提交锁定、清单门禁、运行时沙箱、纯建议式更新检查、本地重签名与安全模式——5 层防护层层收窄Tweak 的能力半径永远小于你的授权半径。对于要往自己日常应用里装第三方代码的扩展系统来说这份克制就是最强的安全特性。【免费下载链接】codex-plusplusCodex tweak system for the Codex desktop app项目地址: https://gitcode.com/gh_mirrors/co/codex-plusplus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考