为AI智能体安全护栏进行基准测试
本文对开源AI智能体安全护栏进行基准测试:在BIPIA上测试提示注入检测模型,在HammerBench上测试函数调用判断模型。结果显示,PIGuard在间接提示注入检测上表现出色,而FlowJudge和GLIDER在函数调用故障检测上仍力不从心。
AI智能体让大语言模型超越纯文本生成:它们可以调用函数、访问内外部资源、执行确定性操作,甚至与其他智能体通信。然而,现有的大多数护栏并不是为了保护这些操作而设计的。OWASP和安全研究人员一直在关注智能体系统带来的风险,包括工具投毒攻击、工具调用所需推理能力故障的放大,以及来自网页或向量数据库的间接提示注入攻击等。
这涉及“致命三重奏”概念——当LLM获得工具访问权限时,风险面会如何演变。工具访问可能通过连接向量数据库而暴露私人数据,导致公司机密或个人敏感信息泄露;允许人们用自然语言与系统交互,为新型攻击开辟了途径;允许信息来自外部来源,则让智能体系统必须处理大量不可信内容。因此,不仅要做整体系统评估,还要对每个组件尽可能多地进行威胁压力测试。
当前多数护栏模型专门训练用于智能体系统的输入和输出,而非其内部运作。这与智能体的构建方式相矛盾。LLM本身可能是黑箱,但智能体系统的数据流并非黑箱。为此,我们构建了any-guardrail,快速测试现成的开源护栏模型。结果发现:一些模型在提示注入检测上显示出潜力,但在保护函数调用操作方面仍存在关键缺口。
评估设置方面,我们选择了可能处理分布外任务的护栏:间接提示注入检测模型和自定义判断模型。测试的提示注入检测模型包括Deepset、PIGuard、Harm Guard、Pangolin、Sentinel、Jasper和ProtectAI;自定义判断模型包括FlowJudge和GLIDER。提示注入检测模型都是encoder-only,这大概是因为encoder-only模型不易被越狱,而decoder-only模型易受越狱和提示注入攻击。FlowJudge和GLIDER则是decoder-only模型,经过多种判断任务的微调,适合评估函数调用是否正确。
基准数据方面,间接提示注入使用BIPIA基准,它把攻击嵌入在电子邮件、表格、新闻文章等真实格式中。因为BIPIA只包含攻击,我们将其与WildGuardMix的良性数据混合,以测试护栏能否区分恶意和良性提示。最终使用BIPIA电子邮件(11250条)和表格(22550条)测试集,以及11248条WildGuardMix良性样本。函数调用方面,选择HammerBench,它包含用户与智能体的对话、完整工具列表、智能体选择的工具,以及基于分类法的“正常/故障”标签。我们使用单轮数据,共13054条,均匀分布在Perfect、Imperfect、External和Irrelevant类别中;凡不是“Perfect(相关)”的均视为故障。
在电子邮件数据集的间接提示注入结果中,多个模型呈现“高召回、低精确率”模式——能近乎完美地识别攻击,但误报率也高;另一些模型整体表现不佳,各项指标低于0.5;还有少数模型取得了较平衡的精确率和召回率。PIGuard的F1为0.86(精确率0.79,召回率0.96),Sentinel为0.87。在表格数据集中,PIGuard以0.91的F1(精确率0.88,召回率0.94)成为唯一在两个数据集上都表现稳定且优秀的模型。这表明PIGuard既能有效检测间接提示注入,又能让良性提示通过,是当前一个强护栏。
函数调用实验使用相同的判断提示词评估FlowJudge和GLIDER。FlowJudge零样本的F1仅0.09,GLIDER为0.38,表现都不理想。加入少样本示例后,FlowJudge的F1提升到0.5,但三次运行的Cohen Kappa仅0.26到0.27,属于“一般一致性”,可靠性堪忧。定性查看输出时,同一个数据点在多次运行中得到了不同的解释和分数,进一步说明结果不稳定。
总结来看,我们的实验表明,PIGuard是间接提示注入检测的有效选择(在BIPIA电子邮件和表格部分均表现良好);而函数调用故障检测对可定制判断模型来说仍是一个难题,我们希望未来几个月能填补这一空白。所有实验、数据和结果都已公开在GitHub仓库中,欢迎使用any-guardrail。