gemini-cli 修复检查点路径穿越漏洞,可致任意 JSON 文件被删读

princeraj2572 · ghdev · 2026-09-24

gemini-cli 仓库的一个 P1 安全 PR 修复了检查点功能的路径穿越漏洞:旧版回退逻辑用 path.join(geminiDir, 'checkpoint-' + tag + '.') 直接拼接原始 tag,path.join 会把 .. 归一化掉,导致 x/../../secret 这类 tag 解析到 checkpoints 目录之外,deleteCheckpoint 可删除、loadCheckpoint 可读取目录外的 . 文件。修复方案是新增 legacyCheckpointPath() 辅助函数,仅当路径是 gemini 目录下直接的扁平 checkpoint-<tag>. 文件时才返回,含路径分隔符或 .. 的 tag 一律视为不存在;同时也挡住 x/../settings 这种留在目录内但指向非检查点文件的 tag。普通扁平 tag 行为不变。PR 附带两个新增测试(修复前失败、修复后 41/41 通过)。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →