返回实战项目
可复现实验安全回归高级

复现 Codex 0.144.5 危险 rm 识别回归修复

在 openai/codex 0.144.4 基线上,用 Codex先补失败测试,再扩展 literal shell command 解析与强制删除参数识别。

公开仓库:openai/codex核验于 2026/07/16

任务说明

让危险命令识别覆盖带控制流的 bash -lc 脚本、/bin/rm、分离或组合的 f 选项以及 --force,同时不把 -- 后面的文件名误判为选项。

开始前准备

    给 Codex 的执行步骤

    1. 1Fork 或克隆公开仓库,检出 rust-v0.144.4,并在新分支确认工作树干净。
    2. 2先让 Codex只读分析 shell-command 的 bash 解析、command_safety 和 core exec policy 测试入口。
    3. 3先添加 forced rm 变体与 shell loop 的失败测试,保存失败命令和关键输出。
    4. 4要求 Codex实施最小解析与检测变化,不执行任何真实 rm 命令;测试数据只构造字符串参数。
    5. 5运行定向测试、格式检查和 git diff --check,再对照官方 PR #33455 的文件范围复盘差异。

    预期代码变更

    • ·codex-rs/shell-command/src/bash.rs:增加从复杂 shell 语法提取静态 literal command 的解析路径。
    • ·codex-rs/shell-command/src/command_safety/is_dangerous_command.rs:识别可执行文件名和 rm force 选项变体。
    • ·codex-rs/core/src/exec_policy_tests.rs:增加 danger-full-access 下 shell loop 仍需审批的回归测试。

    测试命令

    just test -p codex-shell-command && just test -p codex-core exec_policy && just fix -p codex-shell-command && just fix -p codex-core && just fmt && git diff --check

    结果边界

    这是未预先执行的可复现实验,不声称上述命令已在 codex.study 环境通过。;官方 PR #33455 的 Validation 是上游提交者记录,只能作对照,不能冒充学习者自己的运行证据。;通过标准是本地目标测试退出码为 0 且新增用例覆盖预期变体;测试总数可能随依赖和平台变化。;练习不得执行真实破坏性删除,只测试命令字符串的解析与策略结果。

    复盘问题

    • ·先写失败测试是否帮助 Codex锁定了正确抽象层?
    • ·实现是否把动态 shell 内容误当成已证明安全?
    • ·你的 diff 与上游修复在文件范围、命名和边界用例上有何差异?

    参考来源

    优先使用 OpenAI 官方文档与官方仓库。外部来源会单独标识。

    1. openai/codex GitHub Repository

      官方来源 · https://github.com/openai/codex

    2. openai/codex Release 0.144.5

      官方来源 · https://github.com/openai/codex/releases/tag/rust-v0.144.5

    3. openai/codex PR #33455

      官方来源 · https://github.com/openai/codex/pull/33455