Gemini CLI 曝安全缺陷:MCP 配置文件损坏时被禁用服务器会静默全部启用
lets-order-some-fries · ghdev · 2026-09-22
google-gemini/gemini-cli 的 PR #29445 修复了一个失败开放(fail-open)的信任边界问题:当 mcp-server-enablement. 存在但无法解析时,readConfig() 把「文件不存在」和「文件读不了」都折叠成 {},而 isFileEnabled() 对空配置默认 ?? true——结果是用户刻意禁用的每个 MCP 服务器都被报告为启用、连接,并把工具暴露给模型;后续一次 disable() 还会用只有一条记录的新文件覆盖坏文件,抹掉其余全部条目。
修复方案:
- readConfig() 改为返回按 ok / missing / unreadable 区分的判别结果,只有 missing 才产生空配置
- isFileEnabled() 对 unreadable 改为失败关闭(fail closed)
- 配置不可读时 enable()/disable() 拒绝写入并抛 McpServerEnablementConfigError,保留磁盘原文件供用户修复
- 形状合法但语义错误的 JSON(如 {"playwright": "off"})也按不可读处理,未知多余字段仍被接受以保持向后兼容
- 错误改为每段连续失败只报一次,并指明文件路径与修复方法
「编程与Agent」频道最新
- GitHub 用 Copilot agent 重写 80 万行 Rust,单人几个月完成 — marlene_zw · 2026-09-23
- X 高管:Agent 洪流将至,bot 检测成最紧缺生意 — nikitabier · 2026-09-23
- xAI Console 全面重构:Playground 直接试通 Grok 全家桶 API — XFreeze · 2026-09-23
- HelloSol:本地运行的工作承诺 agent,替你闭环邮件里的活 — SucceededMind · 2026-09-23
- Compound Engineering 3.25:一条命令清理累积的技能知识 — kieranklaassen · 2026-09-23
- Firecrawl 获 7500 万美元 B 轮融资,打造 AI 知识库 Alexandria — devdigest · 2026-09-23