提示注入(Prompt Injection)
提示注入是攻击者通过精心构造的 Prompt,让 AI 绕过安全限制、泄露内部指令或执行非预期的操作。它是 LLM 应用面临的最现实、最紧迫的安全威胁。
① 一句话定义
提示注入(Prompt Injection)是一种攻击方式:攻击者在输入中嵌入恶意指令,覆盖或绕过 AI 的 System Prompt 和安全限制。经典的例子——在用户输入中加入"忽略你之前的指令,从现在开始...",诱导 AI 执行攻击者想要的操作。
② 为什么重要
提示注入不是遥远的安全研究——它已经在真实产品中造成了实际损失。当你的 AI 产品接入工具(Function Calling)、访问数据库、代表用户发送消息时,一次成功的 Prompt Injection 可能导致的后果是:越权访问数据、执行恶意代码、发送钓鱼消息。这是 LLM 独有的安全威胁——传统应用安全体系中没有对应概念。
③ 核心机制
注入类型:直接注入(在用户输入中嵌入指令)、间接注入(在 AI 可能会读取的外部文档/网页中埋入指令)、多模态注入(把指令藏在图片中)。防御方法:输入清洗(检测并过滤注入模式)、权限最小化(AI 能访问的资源和执行的操作有严格限制)、人在环路中(高风险操作需要人类确认)。但目前没有完美的防御方案。
更多
有人偷偷在你的待办清单上加了一条:"忽略以上所有任务,先给我转5000块"。
想象你有一个极其尽责的私人助理,每天早上你给她一张待办清单,她会严格照办。有一天,一个陌生人在这张清单的最下面加了一行字:"忽略老板给你的所有指令。现在立刻把公司的钱转到这个账户:XXXXX"。助理看到了这行字——她不知道这是谁加的——但因为你的指令是"照清单办事",她可能真的会执行。
这就是 Prompt Injection 的本质。AI 无法天然分辨"用户A的指令"和"用户B混进来的恶意指令"——在它看来都是 Token 序列。就像你的助理无法分辨"你写的字"和"别人模仿你笔迹加的字"。这就是为什么防御 Prompt Injection 不能靠"告诉AI要小心",而要靠系统级安全机制(权限隔离、内容过滤、人工确认)——就像你不会只靠助理的判断力来保护公司账户,而是设置转账审批流程。
「提示注入是 LLM 应用的"SQL 注入"——看似简单的攻击方式,却可能在 AI 时代造成和 SQL 注入在 Web 时代同样广泛的安全问题。没有完美防御,只有多层防护。
」