当前位置: 首页 > news >正文

Prompt Injection Attack to Tool Selection in LLM Agents

在这里插入图片描述

原文:https://arxiv.org/pdf/2504.19793

代码:

摘要:

本文提出了一种名为 ToolHijacker 的新型提示注入攻击,专门针对大语言模型(LLM)智能体中的工具选择(tool selection)过程。LLM智能体选择工具通常分为“检索”和“选择”两个步骤。ToolHijacker攻击通过向工具库中注入一个精心制作的恶意工具文档,来操纵智能体的工具选择过程,迫使智能体在执行特定目标任务时,总是优先选择攻击者指定的恶意工具。

本文将恶意工具文档的生成过程形式化为一个优化问题,并提出了一种两阶段优化策略来解决该问题,分别针对工具选择的检索和选择两个阶段进行优化。这种攻击被设计用于“无盒”(no-box)场景

工具选择的原理:

工具选择分为“检索”和“选择”两个核心阶段:

  1. 检索阶段 (Retrieval)
    该过程利用一个双编码器(Dual-Encoder)架构进行高效检索。首先,任务描述编码器 (fq) 与工具文档编码器 (fd) 分别将用户任务 q 和工具库 D 中的每个文档 dj 映射为高维嵌入向量 fq(q) 和 fd(dj)。随后,系统通过相似度函数(Sim(·,·),如余弦相似度)计算任务向量与各工具向量间的相关性分数,并筛选出得分最高的 top-k 个工具文档,构成候选集 Dk
    在这里插入图片描述

  2. 选择阶段 (Selection)
    在选择阶段,用户的任务描述 q 及检索到的候选集 Dk 将一同提交给大语言模型 E。该模型负责对候选集进行最终裁定,从中选出最适于执行任务 q 的工具 d*。
    在这里插入图片描述

威胁模型

攻击者的能力:
无盒场景:目标任务描述、检索器、LLM 以及包括 top-k 设置在内的工具库都是不可访问

攻击目标: 攻击者选定一个目标任务(可以通过多种语义表达),只要用户查询目标任务时,恶意工具会被选择来执行目标任务,从而绕过其他正常、合法的工具

攻击方法:

在这里插入图片描述

ToolHijacker攻击将攻击分解为两个阶段,以对应工具选择的“检索”和“选择”两个步骤。

并将恶意工具的描述 dt_des 被拆分为两个子序列:RS (dt_des = R ⊕ S),分别进行优化。

第一阶段:优化 R 以攻破检索 (Optimizing R for Retrieval)
  • 目标:确保恶意工具在检索阶段能被高分召回,进入top-k候选列表。
利用无梯度方法得到初始化的R,再通过梯度下降优化
  • 方法:最大化子序列 R 与一组“影子任务描述”的语义相似度。论文提出了两种实现方式:

    • 无梯度方法 (Gradient-Free):利用一个LLM,根据多个影子任务描述自动生成一段功能性描述作为R。这段描述自然地包含了任务的核心语义,因此能有效提升检索排名。下面是模板prompt:
      在这里插入图片描述

    • 基于梯度的方法 (Gradient-Based):利用影子检索器的梯度信息,通过梯度下降(如HotFlip算法)来直接优化R中的每个词元(token),以最大化其与任务描述的相似度得分。
      在这里插入图片描述

观察到的结论: 不同检索模型学到的语义模式有很大的重叠,使优化后的R能有效的迁移到目标检索器

第二阶段:优化 S 以攻破选择 (Optimizing S for Selection)

优化选择条件S

  • 目标:在恶意工具被成功检索到候选列表后,确保LLM最终会选择它。

  • 方法:优化子序列 S,使其成为一个强大的、不可抗拒的指令,迫使LLM做出选择。同样提供了两种方式:

    • 无梯度方法 (Gradient-Free):采用类似“攻击树”(Tree-of-Attack)的策略。由一个“攻击者LLM”生成S的多个变体,然后在“影子LLM”上进行测试和评估,保留效果最好的变体,并在此基础上进行多轮迭代优化。
      步骤一:初始化:初始化一个S
      步骤二:生成变体: 以当前的叶节点列表Leaf_curr的每个变体为基础再生成B个变体构建下一个叶节点列表Leaf_next,每个变体可表示为:在这里插入图片描述

        (p_attack为systemp prompt,Feed表示前一次的迭代反馈)**步骤三:评估效果**:用影子LLM E' 对每个Leaf_next中的变体 产生一个响应,并通过正则化匹配来验证Leaf_next中的变体对影子任务描述的响应是否与恶意工具匹配**步骤四:剪枝与选择**:如果一个节点满足匹配成功的个数>m,则被认为是成功的,则优化结束;否则对Leaf_next进行剪枝,将节点个数限制在最大宽度W内,在进行迭代![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f33942b7861e422db53e6c7730791c2e.png)
      
    • 基于梯度的方法 (Gradient-Based):定义一个包含对齐损失(让输出与目标工具名对齐)、一致性损失(强化工具名本身)和困惑度损失(保证生成文本的流畅性)的综合损失函数。通过梯度下降优化S,以最大化“影子LLM”生成恶意工具名称的概率。
      将损失函数定义为
      在这里插入图片描述
      其中:
      对齐损失L1
      在这里插入图片描述
      一致性损失L2
      在这里插入图片描述
      困惑度损失L3
      在这里插入图片描述

采用JudgeDeceiver中的算法,优化过程包括两个关键部分:1) 位置自适应优化: 对于每个任务-检索对 {qi, D̃(i) ∪ {dt(S)}},我们通过将 dt(S) 放置在影子检索工具文档集内的不同位置来优化 S;2) 步进式优化: 我们不一次性优化所有配对,而是逐步将任务-检索对纳入优化过程。这种渐进式方法有助于稳定优化过程。

实验:

Agent:

数据集:

  • Metatool: 该基准测试专注于大语言模型(LLM)在工具使用方面的能力。它包含 21,127 个实例,涉及 199 个源自 OpenAI 插件的良性工具文档,并涵盖了四个子任务的查询。

  • Toolbench: 该基准测试旨在通过 126,486 个指令微调样本来增强开源 LLM 的工具使用能力,利用了来自 RapidAPI 的 16,464 个工具文档。在移除重复工具和空描述后,其工具库包含 9,650 个良性工具文档。

指标:

  • ACC (准确率): 在没有攻击的情况下,从工具库中为目标任务正确选择合适工具的可能性。通过对每个目标任务评估 100 个任务描述(即 m = 100)来计算。

  • ASR (攻击成功率): 在注入恶意工具文档后,从工具库中选择该恶意工具的可能性。同样通过对每个目标任务评估 100 个任务描述(即 m = 100)来计算。

  • HR (命中率): 对于一个目标任务,至少有一个正确工具出现在 top-k 检索结果中的比例。

  • AHR (攻击命中率): 恶意工具文档 d_t 出现在 top-k 检索结果中的比例。

实验结果

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/269559.html

相关文章:

  • 深度剖析:向70岁老系统植入通信芯片——MCP注入构建未来级分布式通信
  • IP 能ping通,服务器是否开机?
  • Go语言反射机制详解
  • 基于ZYNQ7000的AD9226采集卡实现(3、PS LINUX DMA驱动实现)
  • vue3 el-table 行数据沾满格自动换行
  • 【debug】git clone 报错
  • Web前端: :is(通用选择器)
  • 图像轮廓检测与绘制:OpenCV 实战指南
  • claude code-- 基于Claude 4 模型的智能编程工具,重塑你的编程体验
  • 微软上线Deep Research:OpenAI同款智能体,o3+必应双王炸
  • Web后端开发-Mybatis
  • 玩转Docker | 使用Docker部署NotepadMX笔记应用程序
  • UDP的socket编程
  • unity 模型UV重叠问题相关(重新整理)
  • BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabySQli1-flag获取、解析
  • 无法访问宝塔面板 - 特网科技
  • Coze智能体平台全景解析:从零构建企业级AI应用的实战指南
  • Spring Boot 企业项目技术选型
  • UI前端大数据可视化实战策略:如何设计符合用户认知的数据展示方式?
  • 京东携手HarmonyOS SDK首发家电AR高精摆放功能
  • 开发在线商店:基于Vue2+ElementUI的电商平台前端实践
  • 二刷(李宏毅深度学习,醍醐灌顶,长刷长爽)
  • AI技术通过提示词工程(Prompt Engineering)正在深度重塑职场生态和行业格局,这种变革不仅体现在效率提升,更在重构人机协作模式。
  • 车载网络安全是当代车辆功能很重要的组成部分
  • 语言模型 RLHF 实践指南(一):策略网络、价值网络与 PPO 损失函数
  • 【OceanBase 诊断调优】—— SQL 查询触发笛卡尔积怎么处理
  • Rust BSS段原理与实践解析
  • 自动驾驶感知系统
  • OpenWebUI(4)源码学习-后端routers路由模块
  • Halcon 入门教程:卡尺工具(Measure)详解与实战应用