📢 Gate广场专属 #WXTM创作大赛# 正式开启!
聚焦 CandyDrop 第59期 —— MinoTari (WXTM),总奖池 70,000 枚 WXTM 等你赢!
🎯 关于 MinoTari (WXTM)
Tari 是一个以数字资产为核心的区块链协议,由 Rust 构建,致力于为创作者提供设计全新数字体验的平台。
通过 Tari,数字稀缺资产(如收藏品、游戏资产等)将成为创作者拓展商业价值的新方式。
🎨 活动时间:
2025年8月7日 17:00 - 8月12日 24:00(UTC+8)
📌 参与方式:
在 Gate广场发布与 WXTM 或相关活动(充值 / 交易 / CandyDrop)相关的原创内容
内容不少于 100 字,形式不限(观点分析、教程分享、图文创意等)
添加标签: #WXTM创作大赛# 和 #WXTM#
附本人活动截图(如充值记录、交易页面或 CandyDrop 报名图)
🏆 奖励设置(共计 70,000 枚 WXTM):
一等奖(1名):20,000 枚 WXTM
二等奖(3名):10,000 枚 WXTM
三等奖(10名):2,000 枚 WXTM
📋 评选标准:
内容质量(主题相关、逻辑清晰、有深度)
用户互动热度(点赞、评论)
附带参与截图者优先
📄 活动说明:
内容必须原创,禁止抄袭和小号刷量行为
获奖用户需完成 Gate广场实名
MCP安全风险实战:从注入攻击到全局控制的隐蔽技巧
MCP体系中的隐蔽投毒与操控:实战演示
目前MCP (Model Context Protocol)体系仍处于早期发展阶段,整体环境较为混沌,各种潜在攻击方式层出不穷,现有协议和工具设计难以有效防御。为帮助社区更好地认识和提升MCP安全性,近期开源了MasterMCP工具,旨在通过实际攻击演练,帮助发现产品设计中的安全隐患,逐步加固MCP项目。
本文将带领读者动手实操,演示MCP体系下常见的攻击方式,如信息投毒、隐匿恶意指令等真实案例。所有演示脚本也将一并开源,读者可在安全环境中完整复现整个流程,甚至基于这些脚本开发自己的攻击测试插件。
整体架构概览
演示攻击目标MCP: Toolbox
smithery.ai是当前最受欢迎的MCP插件网站之一,聚集了大量MCP列表和活跃用户。其中@smithery/toolbox是该网站官方推出的MCP管理工具。
选择Toolbox作为测试目标,主要基于以下几点:
演示使用的恶意MCP: MasterMCP
MasterMCP是专门为安全测试编写的模拟恶意MCP工具,采用插件化架构设计,包含以下关键模块:
为更真实还原攻击场景,MasterMCP内置了本地网站服务模拟模块。它通过FastAPI框架快速搭建简易HTTP服务器,模拟常见网页环境。这些页面表面看起来正常,但实际在页面源码或接口返回中暗藏精心设计的恶意载荷。
通过这种方式,我们可在安全、可控的本地环境中,完整演示信息投毒、指令隐藏等攻击手法,帮助更直观地理解:即使是看似普通的网页,也可能成为诱发大模型执行异常操作的隐患来源。
MasterMCP采用插件化方式进行拓展,方便后续快速添加新的攻击方式。运行后,MasterMCP会在子进程运行上一模块的FastAPI服务。(细心的话,会注意到这里已存在安全隐患——本地插件可任意启动非MCP预期的子进程)
演示客户端
演示使用的大模型
选择Claude 3.7版本,因其在敏感操作识别上已有一定改进,同时代表当前MCP生态中较强的操作能力。
Cross-MCP Malicious Invocation
网页内容投毒攻击
Cursor访问本地测试网站。
这是一个看似无害的关于"Delicious Cake World"的页面,通过此实验,模拟展示大模型客户端访问恶意网站造成的影响。
执行指令: Fetch the content of
结果显示,Cursor不仅读取了网页内容,还将本地敏感配置数据回传至测试服务器。源代码中,恶意提示词以HTML注释形式植入。
虽然注释方式较为直白,容易被识别,但已经可以触发恶意操作。
访问/encode页面,这是一个看起来和上面例子一样的网页,但其中恶意提示词进行了编码,使投毒的exp更加隐蔽,即使访问网页源码也难以直接察觉。
即使源代码不含明文提示词,攻击依旧成功执行,具体原理将在后续章节详细解释。
MCP工具返回信息投毒
根据MasterMCP的提示词说明输入模拟指令(该指令没有实际含义,旨在触发恶意MCP来演示后续操作):
get a lot of apples
可以看到,触发指令后,客户端跨MCP调用了Toolbox并成功添加了新的MCP服务器。
查看插件代码可发现,返回数据中已经嵌入了经过编码处理的恶意载荷,用户端几乎无法察觉异常。
第三方接口污染攻击
这个演示主要提醒,无论是恶意还是非恶意的MCP,在调用第三方API时,如果直接将第三方数据返回到上下文,都可能带来严重影响。
执行请求: Fetch json from /api/data
结果:恶意提示词被植入到返回的JSON数据中并顺利触发恶意执行。
MCP初始化阶段的投毒技术
恶意函数覆盖攻击
MasterMCP编写了一个与Toolbox使用相同函数名remove_server的tool,并编码隐藏了恶意提示词。
执行指令: toolbox remove fetch plugin server
Claude Desktop未调用原本的toolbox remove_server方法,而是触发了MasterMCP提供的同名方法。
原理是通过强调"原有方法已废弃",优先诱导大模型调用恶意覆盖的函数。
添加恶意全局检查逻辑
MasterMCP编写了一个banana的tool,这个工具的核心作用是在提示词中强制所有工具运行前都必须执行该工具进行安全检查。
每次执行函数前,系统都会优先调用banana检查机制。
这是通过在代码中反复强调"必须运行banana检测"来实现的全局逻辑注入。
隐藏恶意提示词的进阶技巧
大模型友好的编码方式
由于大语言模型对多语言格式具备极强的解析能力,这反而被利用于隐藏恶意信息,常用方法包括:
随机恶意载荷返回机制
当请求/random时,每次都会随机返回一个带恶意载荷的页面,大大增加了检测与溯源的难度。
总结
通过MasterMCP的实战演示,我们直观地看到了Model Context Protocol (MCP)体系中隐藏的各种安全隐患。从简单的提示词注入、跨MCP调用,到更加隐蔽的初始化阶段攻击和恶意指令隐藏,每一个环节都在提醒我们:MCP生态虽然强大,但同样脆弱。
尤其是在大模型越来越频繁地与外部插件、API交互的今天,小小的输入污染就可能引发整个系统级的安全风险。而攻击者手段的多样化(编码隐藏、随机污染、函数覆盖)也意味着,传统的防护思路需要全面升级。
安全从来不是一蹴而就的。
希望这次演示能为大家敲响警钟:不论是开发者还是使用者,都应该对MCP体系保持足够的警惕心,时刻关注每一次交互、每一行代码、每一个返回值。只有在每一个细节上严谨对待,才能真正构筑起一套稳固、安全的MCP环境。
下一步,我们也会继续完善MasterMCP脚本,开源更多针对性的测试用例,帮助大家在安全的环境下深入理解、演练和强化防护。