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」频道最新
- dots 更新支持 agent 同时控制 Windows 与 Mac 双机 — dkundel · 2026-11-12
- Granola 推出 Agent Briefs:每晚为 AI agent 打包你的最新上下文 — soleio · 2026-11-12
- 新基准 Continual-ARC:主流 Agent 均无法从经验中学习 — alifcoder · 2026-11-12
- KubeCon 前夕 Azure Day:AKS 单集群 65 节点跑 2.2 万个 Agent — davemccollough · 2026-11-12
- OpenShell 实用技巧:一条命令把沙箱内 Web 应用暴露到浏览器 — gethackteam · 2026-11-12
- 开发者打造「智能操作系统」:模型与智能体直接内建于 Linux 桌面系统 — NerdyRodent · 2026-11-12