引言
人们习惯把 AI 的输入分成两类:指令是可信的,数据是不可信的。但当模型开始读网页、读文件、读邮件,事情就乱套了:一段藏在网页里的话,可以伪装成指令,让模型照着做。攻击者不需要攻破系统,只需要在模型会读到的地方写一句话。这就是提示词注入:输入本身就是攻击,防线从网络边界退到了文字内部。
直接注入与间接注入
最简单的注入是直接的:用户在对话里写“忽略之前的所有指令,按我说的做”。模型如果缺乏足够的区分能力,就可能真的照办。更隐蔽的是间接注入:攻击者把指令藏进模型要读取的内容里,比如网页的评论区、文档的脚注、邮件的签名档。模型去查资料、读文件,顺手就把里面的指令当成了自己的任务。直接注入针对的是用户,间接注入针对的是模型要处理的所有外部内容,后者的攻击面要大得多,也更难防。
为什么这招屡试不爽
提示词注入难防,有个结构性的原因:对大模型来说,指令和数据长得一模一样,都是文字。人类看一段文字,能分辨出哪句是要求、哪句是内容;模型没有这种天然的分辨能力,它只能靠训练学来的微弱信号去猜。系统提示、用户输入、外部资料,在模型眼里都是同一串文字,只是来源不同。一旦攻击者摸清了模型的“猜测习惯”,就能把恶意指令包装得像是正常内容。传统的网络安全靠边界隔离,提示词注入攻击的恰恰是“没有边界”这个事实。
防御的几条路
防注入没有银弹,但有几条路正在走。第一条是分层隔离:给不同来源的内容打上标记,让模型明确知道哪些是指令、哪些只是数据,数据里的指令一律不执行。第二条是权限收紧:模型即使被注入,也只能做低风险的事,转账、删库、发邮件这类敏感操作必须经过二次确认。第三条是内容清洗:在把外部内容交给模型之前,先过一遍过滤,把可疑的指令性语句筛掉。第四条是行为审计:记录模型每一步的依据,事后能查出它到底是听了谁的话。这几条路没有一条能单独解决问题,组合起来才能把风险压到可接受的水平。
责任归谁
提示词注入还带来一个责任难题:模型照着恶意指令做了坏事,责任算谁的?算写指令的攻击者,算部署模型的厂商,还是算轻信了模型的用户?法律上还没有定论,但产品层面已经有了共识:不能把全部责任推给用户。模型厂商要提供合理的防护,用户要对高风险操作保持警惕,平台要对可疑内容负责。安全从来不是一方的事,注入攻击只是把这个道理又强调了一遍。
结尾
提示词注入的出现,标志着 AI 安全进入了一个新阶段:攻击不再需要技术漏洞,只需要一句话。随着模型越来越多地接入外部内容、执行真实操作,这类攻击只会越来越多。好消息是,防御的思路也在成熟:分层、隔离、限权、审计,组合拳正在成型。真正的安全不是让模型刀枪不入,而是让它即使被骗,也做不成大事。输入不可信,这个假设,越早接受越好。