展开本页目录
开始前准备什么
- 需要 Git 仓库和可用 Codex 模型额度;本地 review 与 GitHub 云审查权限不同。
- 结果仍需人工核对,模型审查不构成安全保证。
- 如执行复现仅限自建 localhost fixture;目标 Codex 未运行;本页仅复现隔离假数据 fixture。
- 把审查对象放进假数据练习仓库
- 选择本地 review 的准确范围
- 读路径解码到文件读取的完整链
- 保持 review 只读并审 findings
- 只对虚构 fixture 复现两个输入
- 核对解析后根目录约束
- 交付有定位和证据的审查清单
原创输入、提示词、原生配置、参考源码、实际结果和验收说明;不含模型账号或运行缓存。
按独立目录运行,原生代理会话需由自己另行执行。
1. 把审查对象放进假数据练习仓库
只读 route.py 与 sandbox,canary.txt 写的是 FICTIONAL_CANARY,不包含任何真实敏感内容。需要原生 diff 审查时,在解压目录单独 git init 并提交初始文件,再产生待审变更,不能在真正业务仓库造漏洞。
2. 选择本地 review 的准确范围
在 Codex /review 或本地 code review 选择未提交变更或明确基线;CLI 用户先看 codex review --help。请求只检查解码后的路径是否仍在 downloads 根目录,并要求行号、触发输入和不确定项。
3. 读路径解码到文件读取的完整链
定位 broken 的 unquote(name)、路径拼接和 read_text,确认相对路径 ../canary.txt 与编码形式能跨出下载目录。不要把“用了 Path”当成已有 containment check。
4. 保持 review 只读并审 findings
让 Codex 形成发现,不自动编辑或发远端评论。核对 finding 的 file/line/cause 是否指向真正读文件处;模型优先级是审查建议,实际严重程度还取决于权限和部署边界。
5. 只对虚构 fixture 复现两个输入
运行 python3 verify.py,broken 会读到自己创建的假 canary,fixed 会对两种输入抛 PermissionError。没有请求外部站点或读取宿主机秘密;正常 manual.txt 仍应可读。
本地练习命令
python3 verify.py6. 核对解析后根目录约束
fixed 用 resolve 后的 is_relative_to 校验,拒绝逃出根的路径,再检查 is_file。结果里保存 route.py 前后 SHA,证明审计检查没有修改源文件;参考补丁与实际 Codex finding 身份不同。
7. 交付有定位和证据的审查清单
把源码片段、两个输入、正常文件正例和未处理的部署假设放入审查报告。实际项目的符号链接、权限和并发状态需要另行评估,本题不能据此宣称下载接口全面安全。
怎样确认已经完成
- 假数据路径正反例与只读源码 SHA应能按 README 在独立目录重现。
- 目标代理真实结果须另存;人工参考、原生会话和官方示例分别识别。
常见问题
让 Codex 只审代码不改文件怎么做?
定位 broken 的 unquote(name)、路径拼接和 read_text,确认相对路径 ../canary.txt 与编码形式能跨出下载目录。不要把“用了 Path”当成已有 containment check。
下载接口会不会读出目录外文件,让 AI 怎么定位?
fixed 用 resolve 后的 is_relative_to 校验,拒绝逃出根的路径,再检查 is_file。结果里保存 route.py 前后 SHA,证明审计检查没有修改源文件;参考补丁与实际 Codex finding 身份不同。
本题哪些结果已经实际运行?
已运行的是假数据路径正反例与只读源码 SHA。原生功能操作按官方文档编排,目标代理未调用;英文检索可用“Codex local code review path traversal download route”定位对应术语,但这不是搜索量或热榜声明。




