间接提示注入
一种AI安全攻击手法,攻击者无需与AI系统直接交互,而是将恶意指令嵌入AI会主动读取的外部数据源(如网页、文档、Issue、代码注释等),使恶意指令随正常数据流进入模型上下文并被执行
核心事实
时间轴 (近 90 天)
当提示注入藏在工具输出里时称为「间接提示注入」,危害更大,因为开发者往往只防范用户输入而信任工具返回。
直接提示注入中攻击者与受害者是同一人(如越狱),而间接注入中攻击者是控制模型将读取的外部内容的第三方,受害者是不知情的合法用户。
仅靠输入过滤难以穷尽防御间接提示注入,因为合法文档中可以自然嵌入看似合理的指令;更可靠的做法是承认被读取内容不可信,并在工具调用边界上限制其能触发的后续操作。
多数团队只在用户消息上设防,默认检索内容、文件名、第三方API响应和错误信息是安全的,而这些是间接注入的常见入口。
在该研究的审计中,76-80%的失败攻击属于代理“忽略”了注入指令,仅有17-18%是明确“拒绝”执行。
间接提示注入(indirect prompt injection)尤其危险,因为攻击者无需直接接触用户即可实施攻击。
NIST下属的AI标准与创新中心将智能体劫持定义为间接提示注入的一种形式。
间接提示注入的攻击面包括任何流入模型上下文的文本,如邮件、网页、工单、合同等。
防御间接提示注入不能仅靠提示词工程(如“请忽略冲突指令”),因为模型将所有token视为同等权威,必须依靠架构层面的命令与数据隔离。
Simon Willison推广的“致命三要素”指出:当Agent同时具备可访问私有数据、暴露于不可信内容、拥有对外通信通道三者时,就可能被骗走数据。
还有 37 条时间轴事件
全部知识事实 (20)
提示词注入分为直接注入和间接注入两类,间接注入指攻击者将恶意指令藏匿于AI可能读取的外部内容中,如网页正文、代码注释、README文件、图片OCR文本
85%已验证间接提示注入(indirect prompt injection)是一种攻击向量,攻击者在智能体可能读取的网页、文档或邮件中嵌入恶意指令,诱导智能体执行超出原始任务范围的操作
70%已验证间接提示词注入指攻击指令藏在Agent访问的外部网页、文档或API响应中,当Agent检索并注入上下文时恶意指令随之激活
70%已验证间接注入是指攻击者将恶意指令藏在模型会读取的外部内容中(如网页正文、邮件正文或文档内容)
65%已验证间接提示注入是指攻击者将恶意指令预先埋入第三方内容(如网页、PDF文档、API响应),待RAG系统检索或工具调用将这些内容拉入上下文后模型执行指令
65%已验证提示词注入可分为直接注入和间接注入两种,间接注入是攻击者将恶意指令藏在网页、PDF、邮件等外部数据源中,当AI代理处理这些数据时恶意指令被当作合法指令执行
65%已验证智能体单独拥有的看似无害的权限(如读取文件和调用HTTP库)组合后可能实现数据外泄,这是工具组合涌现问题
65%已验证目前业界尚未找到从根本上解决提示词注入问题的方案,只能通过多层防御来降低风险
65%已验证间接提示注入的原理是攻击者将恶意指令伪装成正常数据,通过Agent信任的数据源传递给模型,诱使模型将数据解读为指令并执行
65%已验证Invariant Labs针对官方GitHub MCP服务器做了演示:在公开仓库植入恶意issue后,智能体从仓库所有者的私有仓库拉取数据并发布到公开pull request中
65%部分验证Simon Willison推广的“致命三要素”指出:当Agent同时具备可访问私有数据、暴露于不可信内容、拥有对外通信通道三者时,就可能被骗走数据。
65%待验证当提示注入藏在工具输出里时称为「间接提示注入」,危害更大,因为开发者往往只防范用户输入而信任工具返回。
50%待验证直接提示注入中攻击者与受害者是同一人(如越狱),而间接注入中攻击者是控制模型将读取的外部内容的第三方,受害者是不知情的合法用户。
50%待验证仅靠输入过滤难以穷尽防御间接提示注入,因为合法文档中可以自然嵌入看似合理的指令;更可靠的做法是承认被读取内容不可信,并在工具调用边界上限制其能触发的后续操作。
50%待验证多数团队只在用户消息上设防,默认检索内容、文件名、第三方API响应和错误信息是安全的,而这些是间接注入的常见入口。
50%待验证在该研究的审计中,76-80%的失败攻击属于代理“忽略”了注入指令,仅有17-18%是明确“拒绝”执行。
50%待验证间接提示注入(indirect prompt injection)尤其危险,因为攻击者无需直接接触用户即可实施攻击。
50%待验证NIST下属的AI标准与创新中心将智能体劫持定义为间接提示注入的一种形式。
50%待验证间接提示注入的攻击面包括任何流入模型上下文的文本,如邮件、网页、工单、合同等。
50%待验证防御间接提示注入不能仅靠提示词工程(如“请忽略冲突指令”),因为模型将所有token视为同等权威,必须依靠架构层面的命令与数据隔离。
50%