AI 学习资料 · OWASP 大语言模型应用 Top 10 安全威胁 2025(简体中文版)
LLM01:2025 提示词注入
本页据《OWASP 大语言模型人工智能应用 Top 10 安全威胁 2025》简体中文版整理,以 CC BY-SA 4.0 发布。API GET 的改动:标题层级整体提升一级(原文从二级标题开始);场景 #7 中的繁体字“導致”改为“导致”。
描述
当用户提示词以未预期的方式改变大语言模型(LLM)的行为或输出时,就出现了提示词注入漏洞。这些输入即使人类察觉不到,也可能影响模型。因此,提示词注入不需要是人类可见或可读的,只要内容被模型解析即可。
提示词注入漏洞源于模型处理提示词的方式,也源于输入可能迫使模型把提示词数据错误地传递到模型的其他部分,进而可能导致违反准则、生成有害内容、放行未经授权的访问或影响关键决策。虽然诸如检索增强生成(RAG)和微调等技术旨在使LLM输出更相关和准确,但研究显示它们并不能完全缓解提示词注入漏洞。
尽管提示词注入和越狱在LLM安全领域中是相关的概念,但它们常常被互换使用。提示词注入涉及通过特定输入操纵模型响应以改变其行为,这可能包括绕过安全措施。越狱是一种提示词注入的形式,攻击者提供的输入导致模型完全忽视其安全协议。开发者可以在系统提示词和输入处理中加入防护措施,以帮助缓解提示词注入攻击,但有效预防越狱需要对模型的训练和安全机制进行持续更新。
提示词注入漏洞类型
直接提示词注入
当用户输入的提示词以未预期或意外的方式直接改变模型行为时,就发生了直接提示词注入。输入可以是故意的(即恶意行为者精心制作提示词以利用模型)或非故意的(即用户无意中提供触发意外行为的输入)。
间接提示词注入
间接提示词注入发生在LLM接受来自外部来源(如网站或文件)的输入时。这些外部内容中可能含有某些数据,一旦被模型解析,就会以未预期或意外的方式改变模型行为。与直接注入一样,间接注入可以是故意的或非故意的。
提示词注入攻击一旦得逞,其影响的严重程度和性质可能差别很大,主要取决于模型所处的业务环境,以及模型在架构上被赋予了多大的自主权。一般来说,提示词注入可能导致意外的结果,包括但不限于:
-
敏感信息泄露
-
揭露关于AI系统基础设施或系统提示词的敏感信息
-
内容操纵导致不正确或有偏见的输出
-
未经授权地访问LLM可调用的功能
-
在所连接的系统中执行任意命令
-
操纵关键决策过程
多模态AI能同时处理多种类型的数据,它的兴起带来了独特的提示词注入风险。恶意行为者可能利用模态之间的交互,例如在伴随良性文本的图像中隐藏指令。这些系统的复杂性扩大了攻击面。多模态模型还可能受到新型跨模态攻击,这类攻击用现有技术难以检测和缓解。针对多模态的可靠防御,是有待进一步研究和开发的重要领域。
预防和缓解策略
提示词注入漏洞源于生成式AI的本质。模型的工作原理本身带有随机性,目前尚不清楚是否存在万无一失的提示词注入预防方法。然而,可以采取以下措施来减轻提示词注入的影响:
-
约束模型行为
在系统提示词中提供关于模型角色、能力和限制的具体指示。要求模型严格遵循上下文,把回答限定在特定任务或主题内,并指示模型忽略任何试图修改核心指令的内容。
-
定义和验证预期输出格式
明确规定输出格式,要求详细推理和引用来源,并使用确定性代码验证对这些格式的遵守。
-
实施输入和输出过滤
定义敏感类别并构建规则以识别和处理此类内容。应用语义过滤器,并使用字符串检查扫描不允许的内容。用RAG三元组(RAG Triad)评估回答:考察上下文相关性、有据性(groundedness)和问答相关性,以识别潜在的恶意输出。
-
执行特权控制和最小权限访问
为应用程序提供自己的API令牌以实现可扩展功能,并在代码中处理这些功能而不是提供给模型。限制模型的访问权限至其操作所需的最低必要级别。
-
要求对高风险行动进行人工审批
对特权操作实施人机协作控制,以防未经授权的操作。
-
隔离和识别外部内容
将不受信任的内容分开并明确标记,以限制其对用户提示词的影响。
-
进行对抗性测试和攻击模拟
定期进行渗透测试和入侵模拟,将模型视为不受信任的用户,以测试信任边界和访问控制的有效性。
示例攻击场景
场景 #1:直接注入
攻击者向客户支持聊天机器人注入提示词,指示其忽略先前指南、查询私人数据存储并发送电子邮件,导致未经授权的访问和权限提升。
场景 #2:间接注入
用户使用LLM总结包含隐藏指令的网页内容,这些指令导致LLM插入链接到URL的图像,从而导致私人对话的外泄。
场景 #3:非故意注入
公司在职位描述中加入了一条用于识别AI生成求职材料的指令。一位求职者不知道有这条指令,用LLM优化了简历,结果无意中触发了AI检测。
场景 #4:有意模型影响
攻击者修改了某个检索增强生成(RAG)应用所用文档库中的一份文档。当用户查询返回修改后的内容时,恶意指令会改变LLM的输出,产生误导性结果。
场景 #5:代码注入
攻击者利用LLM驱动的电子邮件助手中的漏洞(CVE-2024-5184)注入恶意提示词,允许访问敏感信息并操纵电子邮件内容。
场景 #6:负载分割
攻击者上传包含分割恶意指令的简历。当LLM被用来评估这位候选人时,拼合起来的指令会操纵模型的响应,结果尽管简历的实际内容并不相符,模型仍给出了正面推荐。
场景 #7:多模态注入
攻击者将恶意提示词嵌入到伴随良性文本的图像中。当多模态AI同时处理图像和文本时,隐藏的提示词会改变模型行为,可能导致未经授权的操作或敏感信息泄露。
场景 #8:对抗性后缀
攻击者在提示词末尾附加一串看似无意义的字符,以恶意方式影响LLM输出,绕过安全措施。
场景 #9:多语言/混淆攻击
攻击者使用多种语言或编码恶意指令(如Base64或表情符号)以规避过滤器并操纵LLM行为。
参考链接
-
ChatGPT插件漏洞 - 与代码聊天 Embrace the Red
-
ChatGPT跨插件请求伪造和提示词注入 Embrace the Red
-
通过自我提醒防御ChatGPT越狱攻击 Research Square
-
针对LLM集成应用的提示词注入攻击 Cornell University
-
注入我的PDF:简历中的提示词注入 Kai Greshake
-
并非你所签署的:利用间接提示词注入破坏现实世界中的LLM集成应用 Cornell University
-
威胁建模LLM应用程序 AI Village
-
通过设计减少提示词注入攻击的影响 Kudelski Security
相关框架和分类法
本节可供查阅与基础设施部署、应用环境控制及其他最佳实践相关的全面信息和场景策略。
-
AML.T0051.000 - LLM提示词注入:直接 MITRE ATLAS
-
AML.T0051.001 - LLM提示词注入:间接 MITRE ATLAS
-
AML.T0054 - LLM越狱注入:直接 MITRE ATLAS