
提示词注入
- 资料来源:
genai.owasp.org - 资料整理:韦胖
是什么意思?
提示词注入,简单说就是攻击者通过精心设计的文字输入,让 AI 大模型做出它"不应该做"的事。
AI 大模型会把用户发来的内容当作指令来执行。攻击者利用这一点,把恶意指令伪装成普通输入,从而让模型绕过限制、泄露机密或执行危险操作。这些恶意内容甚至不需要肉眼可见------只要 AI 能"读懂",就能触发攻击。就像你和一个非常听话但缺乏判断力的员工说话,换个措辞,他可能就会帮你做一些本来被禁止的事。
RAG(检索增强生成)和微调等技术虽然能提升模型效果,但并不能完全防止提示词注入。
提示词注入 vs 越狱:提示词注入是通过特定输入操控模型行为;越狱是提示词注入的一种极端形式,让模型完全忽视安全规则。两者经常被混用,但有区别。
两种攻击方式
直接注入
攻击者直接在对话框里输入恶意指令,让模型做出意外行为。可能是故意为之,也可能是用户无意中触发。
间接注入
攻击者把恶意指令藏在外部内容里(比如网页、文档),当 AI 读取这些内容时,指令被悄悄执行。就像在合同里藏了一行小字,签字后才发现被坑了。
一旦攻击成功,可能造成:
- 泄露用户隐私或系统内部信息
- 输出带有偏见或错误的内容
- 攻击者获得系统的未授权访问权限
- 在相连系统中执行危险命令
- 干扰关键业务决策
多模态 AI 的额外风险:能同时处理文字和图片的 AI 还面临"跨模态注入"威胁,比如把恶意指令藏在图片里,模型"看图"时悄悄执行。
如何防范
由于 AI 的工作方式,提示词注入很难被彻底消除,但可以通过以下方法降低风险:
-
明确限制模型职责:在系统提示中清楚说明模型能做什么、不能做什么,让它专注于特定任务,拒绝执行"改变规则"的指令。
-
规定输出格式:要求模型按照固定格式输出,并用代码验证格式是否符合预期,异常输出一律拒绝。
-
过滤输入和输出:对用户输入和模型输出都进行检查,识别并拦截包含敏感操作或恶意内容的信息。
-
最小权限原则:不要让 AI 拥有超出其任务所需的权限。比如一个读邮件的 AI,就不应该有发邮件的能力。
-
高风险操作需人工审批:对于删除数据、发送消息等有实际影响的操作,必须经过人工确认再执行。
-
隔离外部内容:把来自网页、文件等外部来源的内容与用户指令明确区分,防止外部内容"冒充"用户指令。
-
定期模拟攻击测试:像真正的攻击者一样测试系统,找出漏洞并及时修复。
真实攻击场景
场景 1:直接注入
攻击者向客服机器人输入特殊指令,让它忽视原有规则、访问私密数据并发送邮件,造成未授权访问。
场景 2:间接注入
用户让 AI 总结某个网页,但网页里藏了恶意指令,AI 在总结时自动把用户的私密对话内容发送给攻击者。
场景 3:无意触发
公司在招聘描述中写了"识别 AI 生成简历"的规则,求职者无意间用 AI 优化简历,触发了意外的 AI 检测行为。
场景 4:污染文档库
攻击者修改了 AI 知识库(RAG)里的文档,插入误导性指令,导致 AI 回答问题时输出错误或有害内容。
场景 5:邮件助手漏洞
攻击者利用漏洞(如 CVE-2024-5184)在 AI 邮件助手中注入指令,读取敏感邮件并篡改内容。
场景 6:拆分指令绕过检测
攻击者把恶意指令拆成几段,分散在简历不同位置,AI 综合评估时被触发,给出违背实际能力的正面评价。
场景 7:图片中的隐藏指令
攻击者把恶意指令嵌入图片,多模态 AI 在处理"无害"图文内容时,悄悄执行了隐藏操作。
场景 8:无意义后缀攻击
攻击者在提示词末尾加上一串看似乱码的字符,这些字符能改变 AI 的输出逻辑,绕过安全过滤。
场景 9:多语言混淆攻击
攻击者用多种语言,或用 Base64、表情符号编码来伪装恶意指令,绕过单一语言的过滤系统。