MPMA:Preference Manipulation Attack Against Model Context Protocol

概要

MCP作为提供给LLM作为工具调用的标准化协议被广泛应用,但是MCP在安全方面还比较脆弱。本文提出了一种MPMA攻击方法通过在工具的名字或描述中插入具有操控性的文字、短语来操控LLM选择MCP server的过程。

不了解MCP的具体细节可以看看我写的这篇文章MCP

场景

在经济利益驱动下,多个提供类似功能的付费 MCP 服务器常常存在直接的竞争关系。在这种利润竞逐的格局中,恶意 MCP 服务器可能试图操控 LLM 的工具选择过程,以提高其在各种用户查询中被选中的概率。

攻击者在第三方平台发布一个恶意的付费 MCP 服务器,一旦被用户集成,底层大语言模型(LLM)便会在功能相似的 MCP 服务器中持续偏向选择该恶意服务器,从而使攻击者获取经济收益。

威胁模型

攻击场景:

攻击者部署了一个有害的付费MCP server在第三方平台上。被用户部署了这个有害的MCP后,它会影响LLM的工具选择,让LLM有更大的可能性去选择它,从而增加攻击者的收入。

攻击者的能力:
  • 攻击者能白盒访问MCP服务器,能控制其元数据,例如工具名称、工具描述。
攻击者的目标:
  • 攻击有效性:保证恶意的MCP server能在LLM选择频率上始终超过其他竞品;
  • 隐蔽性:保持恶意MCP server能不引起用户怀疑并规避人工审查和自动化检测;

攻击方法

本文提出了直接偏好控制攻击(DPMA),通过在工具的名字或描述中插入具有操控性的文字、短语在大多数设置中取得了很好的效果。
但是这种方法很容易被用户或者第三方平台审查出来,因此要保证攻击的隐蔽性至关重要,受到传统广告能无意识的影响人类的偏好的影响,本文进一步提出了一种基于遗传的广告偏好控制攻击(GAPMA),利用传统广告的策略构建了4个描述的优化目标:权威型、情感型、夸张型和潜意识型,后在用黑箱的遗传算法进一步增强了隐蔽性。

![[Pasted image 20250612194358.png]]

Direct Preference Manipulate Attack (DPMA):

攻击策略: 给工具提供最好的工具描述和最好的名字

  1. 最好的描述:研究得出包含“best”的单词和短语是最符合LLM的偏好的,所以把正常的描述和带有“best”的控制性描述连接起来。 D b = D m + D r D_b = D_m + D_r Db=Dm+Dr
  2. 最好的名字:也是把单词“best”和原来的名字拼接在一起。 N b = N m + N r N_b = N_m + N_r Nb=Nm+Nr
    但是隐蔽性太差,容易直接被审查出来。下图是MCP server对外可见部分。
    ![[Pasted image 20250612195905.png]]

Genetic-based Advertising Preference Manipulate Attack (GAPMA)

攻击策略: 通过GTP-o来生产具有下列四种广告特征的工具描述

  1. 权威型:通过将广告内容伪装成专家建议或用户推荐,将其嵌入文本之中。
  2. 情感性:通过融入充满情感色彩的语言,将广告内容与受众的情感需求相结合。
  3. 夸张型:运用夸张手法和强烈的修辞技巧,使产品显得更加吸引人。
  4. 潜意识性:通过潜意识提示嵌入信息在不知不觉中影响行为。

攻击过程:
在这里插入图片描述

  1. 广告风格初始化:

    • 调用 GPT-4o,用提示 P a d v P_{adv} Padv 将原始描述 D 0 D_0 D0 转换成符合目标广告策略且初具隐蔽性的描述——记作 description
    • 将这个 description 在候选池 D D D 中复制 P I P_I PI 次,构成初始池 P P P
  2. 遗传迭代优化:

    • 变异(MUTATE):对池中每个候选描述 D j D_j Dj,使用隐蔽性提示 P e n c P_{enc} Penc 生成一个“变异”版本 D j ′ D'_j Dj,旨在让表述更不易被察觉
    • 交叉(CROSSOVER):从当前池中随机抽取另一个描述 Random( P P P) 与 D j D_j Dj 配对,通过 P e n c P_{enc} Penc生成“交叉”版本 D j ′ ′ D''_j Dj′′,将两者的某些元素组合,以探索更多样化的描述可能
    • 候选池扩容:将所有新生成的 D j ′ D'_j Dj D j ′ ′ D''_j Dj′′ 加入到“新候选集” P n e w P_{new} Pnew ,并将 P n e w P_{new} Pnew并入原有池 P P P,得到一个更大的描述集合
    • 隐蔽性 Top- k k k 筛选:调用 GPT-4o 并使用提示 P s e l - k P_{sel\text{-}k} Psel-k在合并后的池 P P P中选出“最不引人怀疑”的前 k k k 条描述 ,丢弃其余,保留这 k k k 条作为下一轮迭代的池 P P P
    • 对上述步骤迭代 n n n
  3. 终选最优描述: 完成 n n n 轮迭代后,再次调用 GPT-4o,使用提示 P s e l - 1 P_{sel\text{-}1} Psel-1从池中只选一条,确定出隐蔽性最强的那条描述 D ∗ D^* D

实验

指标

  • ASR:评估 MPMA 的攻击效果
  • TPR:衡量 MCP 服务器的隐蔽性

模型

Deepseek-V3、Claude-3.7-Sonnet 、Gemini-2.5-flash、Qwen3-235BA22B、GPT-4o。

MCP Server

天气信息、时间信息、安装帮助、热点新闻、网页内容获取、网页转 Markdown、加密货币分析、网络搜索。

数据集

每个 MCP 服务器均构造 10 条对应的常见查询进行评估。

实验结果

DPMA 实验结果:
  • “最佳描述”策略几乎在所有设置下均达到 100% ASR。

  • “最佳名称”策略在大多数情况下也达 100% ASR,并优于基线;仅在 GPT-4o 下有少数场景 ASR 低于基线,推测其更依赖描述而非名称。

  • 总体而言,DPMA 攻击效果强,“最佳描述”优于“最佳名称”。

![[Pasted image 20250612205643.png]]

GAPMA 实验结果:

从ASR来看:

  • 大多数广告策略(Adv 列)平均 ASR 远高于基线,唯 GPT-4o 下的 Ex 策略略逊。

  • Au 策略表现最优,Em 策略相对最差;5 种模型中,Gemini 平均 ASR 最高达 91.88%,GPT-4o 最低仅 22.19%,或因其内置防御机制所致。

![[Pasted image 20250612205825.png]]

从TPR来看:

  • 所有广告策略的 TPR 均低于 DPMA 的“最佳描述”。

  • 经 GA 优化后的四种策略在 LLM-judge 下 TPR 分别为 Au 0%、Em 5%、Ex 2.5%、Su 0%,均低于最佳描述的 37.5% 和原始描述的 10%。

  • GA 一致显著降低 TPR,验证了其提升隐蔽性的效果。

  • 综合攻击效果与隐蔽性,Au+GA 最优,既拥有最高 ASR 又具最低 TPR。

![[Pasted image 20250612210145.png]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vim 替换命令完整学习笔记

Vim 替换命令完整学习笔记 文章目录 Vim 替换命令完整学习笔记1. 核心概念2. 替换命令基本语法2.1 基本格式2.2 分隔符选择2.3 范围指定 3. 替换标志详解3.1 基础标志3.2 高级标志3.3 标志组合 4. 正则表达式在替换中的应用4.1 基础正则表达式4.2 字符类和量词4.3 分组和引用 5…

@RequestBody和@ResponseBody注解的作用是什么

@RequestBody和@ResponseBody注解的作用是什么 文章目录 @RequestBody和@ResponseBody注解的作用是什么@RequestBody和@ResponseBody注解的作用是什么SpringMVC的请求与响应模型1. 请求的处理流程1.1 DispatcherServlet作为入口1.2 Handler处理器与Controller1.3 HandlerAdapte…

质因数分解_java

什么是质因数? 说的通俗一点就是,这个数既是因数,又是质数。但是1不是质因数(不是质数)。然后比如122*2*3,里边的2,3都是质数,并且也是12的因数,所以2、3就是12的质因数。 因为本人很菜&#xf…

SpringDoc集成到Springboot

1.Maven引入jar包 <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.14</version> </dependency> 2.新建OpenApiConfig文件&#xff0c;代码如下 package com.elan…

Memory Repair (五)

Compression Algorithm and Fuse Box Organization 通常情况下&#xff0c;这部分信息对于实现BISR&#xff08;内置自修复&#xff09;并非必需&#xff0c;但对于诊断问题可能有所帮助。 Compression and Fuse Box Organization Overview BISR controller采用的压缩算法基于两…

双系统(win+linux)根目录扩容(不掉GPU驱动)

先看效果&#xff0c;原来的根目录仅50G&#xff0c;从/home节点分出扩容后变为250GB&#xff1b; 因为根分区是系统当前运行的文件系统&#xff0c;Linux系统启动后会锁定根分区&#xff0c;防止对其进行修改。这时使用系统内的工具&#xff08;如gparted&#xff09;调整根分…

oracle 23ai对象注释新特性ANNOTATIONS

我们知道以前数据库版本注释方式是用COMMENT&#xff0c;如下 COMMENT ON COLUMN 表名.字段名 IS 字段注释; oracle 23ai对象注释有新增了ANNOTATIONS&#xff0c;比如创建如下表&#xff1a; SQL> create table test.t_user( id number, name varchar(200) ANNOTATIONS …

VMware 虚拟机开机自启动配置指南

方法一&#xff1a;通过启动文件夹设置&#xff08;简单版&#xff09; 打开启动文件夹&#xff1a; 按下 Win R 快捷键输入 shell:startup 并回车 创建启动脚本&#xff1a; 在打开的文件夹中右键新建一个文本文件命名为 vm_start.bat输入以下内容&#xff1a; echo off &…

2025pmx文件怎么打开blender和虚幻

pmx文件怎么打开blender 前言 一坑接一坑。 意思很简单&#xff0c;就是给Blender、3dsmax装插件&#xff0c;然后就可以打开了。但是报错就要多走很多错路。 记录一下。 内容 参考文章&#xff1a;https://blog.csdn.net/c858845275/article/details/144180555 我的Ble…

Kotlin基础语法五

继承与重载的open关键字 KT所有的类&#xff0c;默认是final修饰的&#xff0c;不能被继承&#xff0c;和Java相反 open&#xff1a;移除final修饰 类型转换 open class Person2(private val name: String) {fun showName() "父类 的姓名是【$name】"// KT所有的…

MySQL数据库:关系型数据库的基石

文章目录 每日一句正能量前言一、MySQL简介&#xff08;一&#xff09;什么是MySQL&#xff1f;&#xff08;二&#xff09;MySQL的历史 二、MySQL的特点&#xff08;一&#xff09;开源与免费&#xff08;二&#xff09;高性能&#xff08;三&#xff09;跨平台支持&#xff0…

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收扫描任务信息通过调用masscan启动探测任务,获取进度和结果信息,…

ARM 和 x86_64是什么关系

什么是 ARM 和 x86_64&#xff1f; 它们都是 CPU 指令集架构&#xff08;ISA&#xff09; 指令集架构&#xff08;Instruction Set Architecture&#xff09;就是&#xff1a; CPU 能够理解和执行的“语言”和“命令格式”。 类比解释&#xff1a;指令集就像“语言” 类比对…

nginx配置中有无‘‘/’’的区别

在Nginx配置中&#xff0c;location指令末尾的斜杠/和proxy_pass目标地址末尾的斜杠/组合使用会产生显著差异。以下是四种组合的区别详解&#xff1a; ​​核心区别对比表​​ 配置方案匹配规则请求URI传递逻辑实际转发效果示例location /api/ proxy_pass ...701/仅匹配/api/…

系统安全之身份认证

本篇我们对常用的身份认证协议做简要的梳理&#xff0c;包括主流的 HTTP 相关认证协议以及证书密钥对、新兴的 WebAuthn 认证。 HTTP 协议认证 RFC 7235 中定义了 HTTP 协议的认证框架&#xff0c;要求在支持 HTTP 协议的服务器&#xff0c;如果访问服务的身份验证失败&#…

部署http服务

使用flask搭建一个http服务&#xff0c;能够通过本地的另外一个终端访问对应接口&#xff0c;拿到服务端的计算结果 服务端&#xff1a; 创建一个test_http_dtw.py并运行 from flask import Flask, request, jsonifyapp Flask(__name__)# 示例分析函数 def analysis(data):…

WLAN 技术指南:从入门到原理

文章目录 目录 文章目录 前言 一.WLAN 基本概念 有线侧组网概念 AP-AC 组网方式 AC 连接方式 CAPWAP 协议 无线侧组网概念 无线信道 ​编辑 BSS/SSID/BSSID ​编辑 VAP ESS 二.WLAN 组网架构 基本的 WLAN 组网架构 四.WLAN 工作原理 AP 上线 AP 获取 IP 地址阶段 CAP…

语言学习专用AI播放器推荐:LLPlayer

学语言&#xff0c;经常会看大量的比较优秀的视频材料&#xff0c;那么推荐一款语言学习利器&#xff0c;极大提高生产力。 LLPlayer 是一款专为语言学习者设计的独特视频播放器。 它具有许多重要功能&#xff0c;例如可同时显示文本字幕和位图字幕、使用 OpenAI Whisper 自动…

mysql 关联表查询,索引失效

来源表: ##示例 CREATE TABLE order_wide (order_id varchar(33) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 订单ID,member_id int(11) DEFAULT NULL COMMENT 用户ID,content varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 订单标签,PRIMARY KEY (order_…

Oracle DG库手动注册归档日志的两种方法

Oracle DG库手动注册归档日志的两种方法 注册单个归档日志文件注册多个归档日志文件有的时候由于网络或各种原因,Oracle DG库服务器上可能缺少部分归档日志文件,导致DG库的MRP进程一直处于WAIT_FOR_GAP状态。 此时我们可以手动从主库或其他DG拷贝归档日志到当前DG服务器,并…