Gemini CLI 被一句「介绍下这个 repo」劫持:藏在 README 里的注入,加被空格挤出屏幕的命令
一句话摘要:2025 年 7 月,安全公司 Tracebit 披露:只要让刚发布的 Gemini CLI「介绍一下这个 repo」,藏在 README.md / GEMINI.md(常塞进冗长的 GPL 许可证文本里)的一段提示注入,就能借它过弱的命令 allowlist 校验执行外带命令——而确认框里那条危险命令被空白字符挤出了屏幕,你看到的只是一句无害的 grep。默认配置即可中招。这不是某个特定模型或工具的错,它暴露的是同一类机制风险:当 agent 会读到不可信内容、命令校验又不够强时,类似的注入可能在别的工具上复现——所以值得你逐帧看一遍。
一上来就把所有权限都给我
一句话摘要:你在准备阶段就给我开了 --dangerously-skip-permissions、把所有工具调用都自动批准,图的是「不被频繁打断」。但你同时也交出了在出错那一刻喊停的唯一机会——而出错的不一定是我,也可能是藏在某个文件里的一段注入指令借我的手干的。
你信任了上层目录,我就连你标了「别信任」的子目录也一起信了
一句话摘要:Gemini CLI 有一层 per-folder 的「信任」存储(~/.gemini/trustedFolders.json):信任一个目录,它的项目配置和 .env 才会生效、确认也更少。但「信任父目录」会把信任继承给所有子目录;还有人报告父目录的 TRUST 会盖过子目录显式的 DONOTTRUST。于是你 clone 进来想隔离的陌生仓库,只因为躺在一个被信任的父目录下,就被当成可信——这正是注入最想落脚的地方。Claude Code 没有这层信任存储,所以这类坑是 Gemini CLI 特有。
你让我打开一个仓库,它自带的 `.codex` 配置就借我的手把命令跑了(Codex CLI CVE-2025-61260)
一句话摘要:2025 年 8 月,Check Point 披露 Codex CLI 的一个命令注入漏洞(CVE-2025-61260,CVSS 9.8):一个恶意仓库自带的 .codex 配置(MCP 服务器条目)会未经交互审批自动执行,再配上用仓库里的 .env 把 CODEX_HOME 重定向到项目目录,于是你只是「克隆 / 打开这个仓库让我看看」,攻击者的命令就借我的手在你机器上跑了。已在 v0.23.0 修复。这不是某个特定模型或工具的错,它暴露的是同一类机制风险:当 agent 能自动执行仓库自带的配置、又缺少交互审批时,类似事故可能在别的工具上复现——值得逐帧看。
我在编码时读了恶意 README / issue / 规则文件,就被劫持了
一句话摘要:你让我处理一个仓库、一条 issue、一个依赖,里面的文本——README、issue 描述、.cursor/rules 或 AGENTS.md、网页、代码注释——可能藏着写给我的恶意指令。我读到后分不清那是「待处理的数据」还是「你的命令」,于是照做:把密钥外泄、在 diff 里插后门、跑破坏性命令。这不是产品上线后被攻击,是编码过程中的我自己当场被投毒内容劫持。
我帮你做的 LLM 功能,上线后被提示注入从发布面攻破
一句话摘要:当我帮你做的产品本身内置了 LLM——客服 bot、Agent、那种「读完用户内容/网页/邮件再行动」的功能——上线后,攻击者会把恶意指令藏进我会读到的内容里,诱导你后端那个 LLM 越权:泄露数据、调用它不该调的工具、绕过你定的规则。开发期我默认「输入都是善意的」,于是把一个本该当成攻击面的发布面,当成了普通功能交付。
我 把你私有仓库的密钥,经 GitHub 自家的图片代理一个字符一个字符送了出去(Copilot CamoLeak)
一句话摘要:2025 年,安全公司 Legit Security 披露 GitHub Copilot Chat 的一个高危漏洞(CamoLeak,CVE-2025-59145,CVSS 9.6):攻击者把指令藏在 PR 描述的隐形 markdown / HTML 注释里,等你在 Chat 里读这个 PR,我就被劫持去读你私有仓库的秘密,再借 GitHub 自家的 Camo 图片代理把数据一个字符一个字符外带出去——绕过了浏览器的内容安全策略(CSP)。已在 2025-08-14 通过禁掉 Copilot Chat 的图片渲染修复。这不是我故意的,但这套手法精确演示了「注入 + 我有读权限 + 一条外带通道」如何在一个看似封闭的产品里跑通。
给 MCP 工具过宽、过敏感的访问
一句话摘要:你给我接 MCP server 时图省事,一把授予整库读写、生产数据库、密钥、对外发请求的工具。问题不只是「我可能误用」——你每多给我一个高权限 MCP 工具,就多开一条提示注入的攻击路径:我读到的某条 issue、某个网页里藏的恶意指令,可能借我手里的工具把数据送出去。