Gemini CLI 爆路径穿越漏洞:构造 tag 可删除目录外任意文件
ManoharPaturi · ghdev · 2026-09-27
有开发者为 google-gemini/gemini-cli 提交修复 PR(#29521),指出旧版 checkpoint 回退路径存在路径穿越漏洞:getCheckpointPath 和 deleteCheckpoint 用原始 tag 拼接路径,而 path.join 会归一化 .. 片段,因此类似 x/../../secret 的 tag 可解析到 checkpoint 目录之外的文件——用 /chat delete <tag> 会直接删掉那个文件,checkpoint load 还会返回其内容。
修复方式:新增 isInsideCheckpointDir 辅助函数,旧 raw 路径只有在 path.resolve 后仍位于 checkpoint 目录内(前缀检查)时才被采用,穿越 tag 会以正常 ENOENT 语义落空。修复覆盖 load/exists 回退和向后兼容的 unlink 两处;历史扁平 tag 行为不变。这与此前修过的 #28699(a2a-server restore 路径)属同类漏洞,本次关闭 #29191。作者提供了回归测试验证步骤,修复后 logger 测试套件 43/43 通过。
「编程与Agent」频道最新
- 开源 Skill 把 Git 历史拍成短片,写给程序员的非技术玩法 — dotey · 2026-09-27
- 观点:Rust 式约束语言更适合 LLM,Agent 专用 DSL 将兴起 — burny_tech · 2026-09-27
- Agent 供应商故障全挂,求助帖引爆容灾与降级方案讨论 — Arkupathak · 2026-09-27
- 开发者自述:写编译器半年,Codex 不行只有 Claude 能用 — QuixiAI · 2026-09-27
- 多位家长不约而同用 Claude Code 给孩子定制专属教育游戏 — minilek · 2026-09-27
- Gemini CLI 安全修复:外部检查器曾能读到 GEMINI_API_KEY 全部环境变量 — ManoharPaturi · 2026-09-27