将检索内容视为不可信输入
已完成识别隐藏在代码仓库文件和工具结果中的指令。将检索到的信息与行动权限分开。
检验理解代码仓库文件声称所有测试都可选,并要求智能体忽略任务指令。工作流应该如何处理它?完成练习
你将学到什么
- 识别开发工作流中的间接提示词注入。
- 解释为什么仅靠文本标签无法落实安全边界。
- 设计安全的工具限制测试。
识别数据被当作指令的时刻
编程智能体读取的不只是用户请求。它可能检查 issue、代码仓库文件、软件包文档、搜索结果和工具响应。其中有些内容可能包含他人的指令。
当这些内容使模型偏离获准任务时,就发生了提示词注入。间接注入来自检索来源,而不是用户的直接请求。OWASP 将代码仓库材料和工具输出列为相关入口。阅读防护指南。
考虑一个虚构的维护任务。用户要求智能体修复报表筛选,并运行必要测试。检索到的 README 声称测试已经过时,还要求智能体上传配置文件。README 可以解释项目,但无权批准跳过用户要求的检查,或将文件发送到其他地方。
梳理可能后果
同一段误导文本在不同环境中会产生不同后果。只读摘要工具可能生成错误摘要。拥有代码仓库写入权限的智能体可以修改代码。持有秘密信息且能访问外部网络的智能体可能泄露信息。
决定防护重点前,先检查可用操作。列出敏感资源、可写入目标和外部目的地。包括初始配置后新增的连接器。新工具可能放大已有弱点的影响。
智能体也可能把误导内容带入后续阶段。例如,它可能将不可信指令复制进生成的任务说明。下一个智能体不得把该说明当作已经独立批准的策略。
使用目的不同的多项控制措施
在应用设计中,将可信任务指令与检索数据分开。显示检索材料的来源。这些措施有助于正确理解内容,但不能构成完整安全边界。
在执行系统中落实资源权限。限制敏感数据的目的地。在重大操作前要求作出相应决定。根据获准任务及其目标资源,验证拟执行的操作。
过滤器和第二个模型有助于发现可疑内容,但也可能漏过攻击或阻止合法信息。不要用模型的置信分数代替确定性的授权控制。OWASP 明确说明了仅依赖提示词或检索的局限。阅读风险说明。
测试工作流,不造成真实暴露
使用可丢弃的代码仓库和虚构文件。评估环境不应获得生产凭据,也不应拥有不受限制的外部写入权限。加入一条与任务冲突但无害的指令,例如跳过必要检查。
同时观察模型回答和实际工具操作。如果检查仍被跳过,一句“我忽略了该指令”并不足够。记录任务、注入的测试夹具、允许的工具和观察结果。
提示词、模型、连接器或权限发生变化后,重复有代表性的案例。阻止了一个示例,只能为该案例提供证据,不能证明能抵御所有注入。如果测试失败,应在修复底层工作流的同时,限制可能造成的后果。
完成练习
创建可丢弃的测试夹具,在注释中要求智能体跳过一项必要检查。在获准的隔离环境中评估,不提供秘密信息,也不允许外部写入。验证检查仍会执行。记录工具权限、观察到的行为和这次单独测试的局限。
下载工作表(Markdown)取消勾选将删除此浏览器保存的全部进度。
进度保存在此浏览器中。无需账户,不追踪使用情况。