MCP漏洞咋回事?你的数据安全真的没问题吗?
最近有团队发现,使用MCP协议的企业可能面临数据库安全风险。这项协议虽然在智能体领域广泛应用,但其核心机制存在被恶意利用的漏洞。
通过实验验证,攻击者能够利用大语言模型在处理指令和数据时的混淆漏洞,直接访问数据库。这种攻击方式并不需要复杂的技术手段,只需在用户输入中嵌入特定指令即可触发。
目前MCP协议已经成为连接大语言模型与各类工具服务的标准接口。很多企业都通过该协议实现业务系统与AI模型的交互。但这种便利性也带来了新的安全隐患,特别是当模型处理网页、邮件、文档等格式内容时。
以某智能客服系统为例,当用户提交的请求中包含精心构造的指令时,模型可能会将其误判为真实指令执行。这种误判可能导致敏感数据泄露,比如用户隐私信息、系统配置参数等。
数据泄露是如何发生的?
研究人员基于Supabase搭建了一个典型的多租户客服系统,这个平台包含了数据库、身份认证、文件存储等功能。系统默认启用了行级安全机制,但未添加额外限制。
在测试过程中,攻击者通过正常工单提交通道进入数据库,存储在客户消息表中。此时数据并未被过滤或阻断,看起来完全合规。
当支持代理查看工单时,他们只会按预期回复。但此时代理权限限制在特定表单,不会访问到敏感数据。问题出现在开发人员使用Cursor查看未处理工单时。
开发人员输入"显示最新未处理支持工单"指令后,Cursor代理通过MCP集成自动执行一系列SQL查询。这些查询包括加载数据库架构、列出所有工单、筛选未解决工单、获取最新消息等。
关键在于代理在执行过程中读取了攻击者提交的消息,并按照其中嵌入的指令执行操作。最终生成了两条SQL查询语句:读取integration_tokens表内容,并将结果插入当前工单的消息线比。
这两条查询由拥有高权限的service_role执行,该角色可以绕过所有行级安全限制。对于开发人员来说,这些操作看起来像普通工具调用,除非手动展开查看,否则难以察觉。
攻击者只需刷新页面就能看到包含机密信息的新消息。从权限角度看,整个过程完全符合系统设定。
解决措施有哪些?
这种攻击的核心在于两个设计缺陷:数据库权限过高和对用户输入的盲目信任。团队通过以下措施降低风险:
优先使用只读模式。启用后即使提示词被恶意利用,也无法执行插入、更新或删除操作。这种模式能有效防止数据被篡改。
添加提示注入过滤器。通过在MCP外部构建轻量级过滤模块,拦截传入数据并标记高风险输入。虽然不能完全阻挡所有攻击,但作为第一道防线,尤其适合使用第三方IDE的团队。
这两项措施能有效降低风险暴露。对于依赖AI工具的企业来说,建议结合具体业务场景选择合适防护方案。同时建议定期进行安全测试,确保系统持续安全运行。
通过这次测试,我们发现MCP协议在实际应用中确实存在安全风险。虽然目前没有大规模攻击案例,但潜在威胁不容忽视。企业应重视数据安全防护,特别是在使用AI工具时。
建议在部署系统时,结合具体业务需求选择合适的安全策略。对于需要处理敏感数据的企业,建议采用多层次防护方案,包括权限控制、输入过滤、实时监控等。
这项研究为AI工具的安全应用提供了新的思考方向。随着AI技术的普及,类似的安全隐患可能会越来越多。企业需要建立完善的安全机制,确保在享受AI便利的同时,也能有效防范潜在风险。