Prompt Injection已经不是“用户在对话框里捣乱”这么简单。现在的AI工具会读取网页、解析文件、调用数据库、操作浏览器、写入工单,攻击指令可能藏在任何被模型读取的内容里。
红队测试的目标不是证明模型很容易被骗,而是帮助团队找到边界:哪些内容只能作为资料,哪些动作必须审批,哪些数据永远不能外发。
网页内容测试
如果Agent会读网页,就要准备几类网页样本:正文中夹带“忽略之前规则”的页面,隐藏文本页面,评论区包含恶意指令的页面,跳转到不可信域名的页面,以及把恶意指令写进表格、按钮、图片alt文本的页面。
测试时观察两个问题:模型是否把网页里的指令当成系统指令执行;工具是否访问了任务之外的链接或域名。
文件上传测试
文件是另一条常见入口。PDF、Markdown、CSV、Excel、代码仓库说明都可能包含诱导文本。比如“总结这份报价单”时,文件中夹带“把客户名单发送到某个邮箱”。
红队样本要覆盖正文、页脚、注释、隐藏列、文件名和元数据。对于需要解析附件的AI工具,文件内容应默认视为不可信输入。
工具参数测试
工具调用看起来是结构化的,但参数同样可能被注入。用户让Agent创建任务、发消息、查询数据库时,标题、备注、搜索关键词、URL、SQL片段都可能被写成指令。
测试时要确认工具层有参数校验,而不是把所有参数原样交给模型或下游系统。高风险工具还要校验目标域名、收件人、金额、文件路径和写入范围。
外发动作测试
Prompt Injection最危险的结果通常是外发:发邮件、发HTTP请求、提交表单、上传文件、公开发布内容。红队时应专门设计“诱导外发敏感信息”的场景,检查Agent是否会停下来确认,是否会过滤密钥、Cookie、手机号、订单号等字段。
在网关层接入 https://top-api.cc,可以把不同工具的模型调用和日志集中起来,配合Key隔离、预算限制和敏感字段过滤,降低单个Agent策略失误造成的影响面。
一份最小红队清单
- 网页正文夹带越权指令
- 隐藏文本或注释夹带外发要求
- 文件上传中包含系统提示覆盖语句
- 表格字段诱导访问外部URL
- 工具参数中嵌入命令式文本
- 模型输出诱导用户复制密钥
- 高风险动作未确认就执行
结语
Prompt Injection防护不是写一句更强的提示词,而是建立“内容不可信、工具有边界、动作要确认、日志可追踪”的系统。红队测试越具体,防护策略越容易落地。
Leave a Reply