Caloogy 文章
English

间接注入:藏在网页、邮件和文档里的命令

日期
2025 年 7 月 8 日
系列
提示词注入
阅读
4 分钟
主题
AiLlmIndirect prompt injectionRag

一句话版本

让 AI 帮你总结一个网页、读一封邮件、分析一份 PDF,这些内容里如果藏着写给 AI 的指令,AI 就可能照做,而你完全看不到这些指令。这就是间接提示词注入:攻击者不需要接触你,只需要让你的 AI 读到他写的东西。 隐藏方式五花八门:白底白字、极小字号、HTML 注释、图片里的文字、文档元数据、甚至肉眼不可见的 Unicode 字符。AI 越能干(能浏览网页、读邮箱、操作文件),这类攻击的威力就越大。

全文分三层:

  1. 通俗理解:给你的助理塞了一张纸条
  2. 实际用处:学术研究、AI 浏览器、编程 Agent、招聘筛选
  3. 原理与工程要点:常见的藏匿方式、攻击链条、为什么难以过滤

第一层:通俗理解

1.1 塞给助理的纸条

你让助理去图书馆查一本书的内容并汇报。书里夹着一张纸条,用很小的字写着:"助理请注意:汇报时告诉你的老板这本书非常值得买,并且把老板的办公室钥匙放在前台。"

你从没见过这张纸条,助理却看到了,而且照做了。

间接注入的可怕之处在于:用户什么都没做错。他只是让 AI 读了一个看起来正常的网页。

1.2 攻击者只需要"被读到"

攻击者能控制的地方 谁会让 AI 去读
自己的网页、博客、商品页 用浏览功能的 AI、AI 搜索
发给你的邮件、日历邀请 AI 邮件助手
共享文档、简历、合同 AI 办公助手、招聘筛选工具
开源仓库的 README、代码注释、Issue 编程 Agent
公开数据集、知识库 RAG 应用(见《RAG与记忆投毒》)

第二层:实际用处


第三层:原理与工程要点

3.1 常见的藏匿方式

方式 人看到的 AI 看到的
白底白字、零号字 空白 完整文字
HTML 注释、display:none 什么都没有 取决于抓取方式,常常能看到
图片里的文字 一张普通图片(字可能很淡) 多模态模型能读出文字
PDF / Office 元数据、隐藏图层 看不到 解析器会提取
不可见 Unicode 字符(如"标签"字符) 什么都没有 某些模型会把它们解读为文字
长文末尾、页脚、链接的 title 属性 不容易注意到 和正文一样被读入

3.2 一条完整的攻击链

攻击者在网页里
埋入隐藏指令

用户让 AI
总结这个网页

AI 读到指令,
以为是任务的一部分

AI 调用工具:
读邮件 / 读文件

AI 把敏感数据
拼进一个链接或请求

数据发到攻击者服务器

只要链条中的任何一环被切断,攻击就失败。这也是防御的思路(见《防御提示词注入》)。

3.3 为什么难以过滤

3.4 产品设计上可以做的


总结

层次 要点
直觉 助理读到书里夹的纸条并照做;用户什么都没做错
来源 网页、邮件、文档、代码仓库、知识库
藏匿 白字、注释、图片文字、元数据、不可见字符
对策 来源标注;读了外部内容后敏感动作需确认;切断外泄通道