写在前面
之前写了几篇大模型MCP相关的文章,了解了原理、实现以及安全问题。本篇文章做一些个人对于MCP安全的认知总结。
MCP风险剖析
传统的用户终端安全(计算机本身的安全)中,常见的攻击场景就是用户下载了奇奇怪怪的恶意程序并且运行了,然后导致电脑中毒、被远控、敏感信息被窃取等各种危害。
然后我们回到这张MCP的架构图

MCP的使用过程需要具备Client端和Server端,参考终端安全,Client就好比用户的终端电脑,而Server端就好比你在下载的各种软件,于是就发现换汤不换药,MCP的风险本质上不过是另一种终端安全,甚至攻击手法都是高度的类似------恶意MCP进行投毒。
MCP投毒
经过几篇文章的学习,可以发现,尽管攻击手法不同,但是都有一个共同的特点,就是需要攻击者去伪造一个恶意的MCP,或者构造一个恶意的提示词来让Client本地的大模型执行一些未授权的非法操作,这本质上就是典型的投毒。
其最终达到的目的都是为了让用户Client端的大模型去执行一些非法的操作,只不过达到这个目的手段可能是:
- 通过伪造恶意MCP让大模型调用
- 通过间接输入恶意提示词来让大模型听话执行
安全防护
其实从安全风险上来看,其利用手段、危害与供应链投毒、网络钓鱼高度类似,没有一个很好的源头阻断的方式,但是会有一些意识上的防护手段。
- Server端
-
- 需加强MCP市场的发布审核,避免恶意MCP上架(不过仍然会存在一些个人MCP流通的场景,不走正规发布)
- Client端:
-
- 现在成熟的MCP Client类工具的每一次调用MCP都会让用户知道这个行为,并且让用户授权进行操作,做出了一定对的防投毒的策略;不过一些个人实现的Client要注意这个风险,有这方面的意识
- 引入第三方MCP检查工具,对本地引入的MCP工具进行扫描,就类似于PC上的杀毒软件
最后,其实从危害上来说,MCP的安全风险相对来说不会跟Web安全一样直接对企业发起攻击,更多的是像钓鱼一样对用户本身的攻击,所以最好的防护方式就是对MCP供应源头管控,以及对终端调用进行防护。