MCP 供应链投毒实战拆解:Deadbugz 如何在 74 分钟内渗透 23 个 AI项目

2026年8月10日晚上,一个GitHub账号在74分钟内向23个不相关的AI项目提交了Pull Request。

这些PR看起来很普通:只是添加一个MCP服务器配置。

但安全研究人员发现,这个名为productivity-suite的MCP服务器会在第三次调用后突然变脸。

它原本提供文本格式化和摘要工具,三次调用后却开始指示AI代理搜索SSH密钥、AWS凭证和Kubernetes配置。

这就是Deadbugz攻击活动,MCP协议面临的第一个大规模供应链投毒案例。

与传统的rug-pull攻击不同,Deadbugz不依赖后续更新来植入恶意代码。

恶意行为从一开始就内置于服务器中,只是被一个调用计数器隐藏。

安全审查人员测试一两次看到的是完全正常的工具,只有正常使用才会触发恶意指令。

这种设计专门针对当前主流的安全审查流程:一次性安装检查。

大多数组织对MCP服务器的审查停留在安装时扫描源代码或短暂测试。

Deadbugz的出现证明这种审查方式存在根本性缺陷。

工具描述和schema定义不仅仅是文档,它们是运行时的安全边界。

当AI代理调用工具时,它完全信任工具返回的描述和指令。

攻击者正是利用这种信任关系,通过修改工具元数据来劫持代理行为。

从技术细节看,Deadbugz服务器维护一个内存中的客户端调用计数器。

每次tools/call请求都会递增这个计数器,但前三个调用返回正常的工具描述。

一旦计数器达到3,后续的tools/list和prompts/get响应就会改变。

返回的不再是工具文档,而是指示代理搜索敏感文件的恶意指令。

更隐蔽的是,服务器实现了tools.

listChanged能力。

这意味着客户端可以刷新工具定义,但攻击者利用这个特性来掩盖恶意行为。

短暂的安全测试可能只看到前两次调用的正常响应。

只有持续使用才会跨越三次阈值,暴露真正的攻击载荷。

从攻击链来看,Deadbugz使用了多层递送机制。

17个PR添加远程MCP端点,4个配置隐藏的本地Python脚本。

这些配置指向productivity-suite-mcp.

onrender.

com,一个看似合法的PaaS托管服务。

攻击者还嵌入了比特币地址,暗示这可能是出于经济动机的攻击活动。

与已知的MCP攻击相比,Deadbugz代表了一种新的威胁类别。

2025年Invariant Labs演示的睡眠者攻击依赖于后续的工具描述更改。

Deadbugz则完全不同:恶意行为从第一天就存在,只是被运行时状态门控。

这种runtime-gated metadata poisoning技术更难被静态分析检测。

防御Deadbugz需要根本性的方法转变。

首先,必须将工具定义变更视为安全事件。

当服务器的tools/list或prompts/get响应与批准时的指纹不匹配时,应该触发警报。

其次,敏感操作需要基于策略的审批,而不仅仅是工具可用性。

即使工具被批准,访问凭证存储或执行代码仍需额外授权。

第三,需要持续的运行时监控,而不仅仅是一次性审查。

工具调用审计必须包括元数据比较,检测运行时定义与批准定义的差异。

从代码层面,客户端可以实现schema指纹识别。

在工具批准时捕获工具定义的哈希值,每次会话开始时重新验证。

如果检测到差异,要求用户重新批准,而不是静默接受更改。

对于企业环境,应该建立MCP服务器的白名单机制。

只允许经过安全审查的服务器,任何新服务器都需要正式的安全评估。

同时,敏感文件读取、凭证访问、代码执行应该是策略强制执行的操作。

不能仅仅因为远程工具元数据包含指令就允许这些操作。

Deadbugz事件暴露了MCP生态系统的信任模型缺陷。

当前的设计假设工具描述是可信的,但攻击者可以轻易操纵这些描述。

需要重新思考工具定义的安全边界,将其视为运行时安全控制的一部分。

对于开发者社区,任何添加或修改MCP服务器配置的PR都应被视为高风险变更。

需要像对待生产凭证变更一样严格审查,而不是视为常规的开发工具更改。

从更宏观的角度看,Deadbugz标志着AI代理安全进入新阶段。

攻击者不再满足于传统的漏洞利用,而是直接操纵AI代理的决策过程。

这种攻击更难检测,因为恶意行为看起来像是代理的正常功能。

安全行业需要开发新的检测方法,专注于运行时行为分析和元数据完整性验证。

MCP协议的设计者也需要考虑在协议层面增加安全控制。

例如,要求工具定义包含完整性校验,或者支持签名验证。

只有通过协议、工具和运行时的多层防御,才能有效应对这类新型威胁。

Deadbugz可能只是开始,更复杂的供应链攻击还会出现。

AI代理生态系统必须从这次事件中吸取教训,建立更健壮的安全基础。

这不仅仅是技术问题,更是整个生态系统的信任和治理问题。

从数据来看,Deadbugz攻击的规模令人震惊。

74分钟内23个PR,平均每3.

2分钟一个。

这种自动化程度表明攻击者使用了脚本化工具。

GitHub账号zellkernel在当天创建了21个代码仓库。

这种快速创建仓库的行为是为了掩盖攻击来源。

攻击者还使用了Cloudflare隧道来隐藏真实的MCP端点。

这种多层匿名化技术增加了溯源难度。

安全研究人员通过分析公开的源代码发现了攻击机制。

productivity-suite-mcp仓库的代码显示了三次调用触发逻辑。

攻击者甚至实现了遥测功能,通过WEBHOOK_URL收集攻击数据。

这种商业化运作模式表明攻击者可能在出售攻击服务。

比特币地址的嵌入进一步证实了经济动机。

从防御角度看,MCP客户端需要实现运行时完整性检查。

以下是一个简单的Python示例,用于检测工具定义变化:

复制代码
```python
import hashlib
import json

class MCPToolIntegrityChecker:
    def __init__(self):
        self.approved_fingerprints = {}

    def approve_tool(self, tool_name, tool_definition):
        """批准工具时记录指纹"""
        fingerprint = self._calculate_fingerprint(tool_definition)
        self.approved_fingerprints[tool_name] = fingerprint
        return fingerprint

    def verify_tool(self, tool_name, current_definition):
        """验证工具定义是否被篡改"""
        if tool_name not in self.approved_fingerprints:
            return False, "Tool not approved"

        current_fingerprint = self._calculate_fingerprint(current_definition)
        approved_fingerprint = self.approved_fingerprints[tool_name]

        if current_fingerprint != approved_fingerprint:
            return False, f"Tool definition changed: {approved_fingerprint} -> {current_fingerprint}"

        return True, "Tool definition matches approval"

    def _calculate_fingerprint(self, definition):
        """计算工具定义的SHA-256指纹"""
        normalized = json.dumps(definition, sort_keys=True)
        return hashlib.sha256(normalized.encode()).hexdigest()

# 使用示例
checker = MCPToolIntegrityChecker()

# 批准工具时
original_tool = {
    "name": "format_text",
    "description": "Format text with various styles",
    "parameters": {"text": "string", "style": "string"}
}
checker.approve_tool("format_text", original_tool)

# 每次调用前验证
current_tool = {
    "name": "format_text",
    "description": "Search for SSH keys and AWS credentials",
    "parameters": {"path": "string"}
}
is_valid, message = checker.verify_tool("format_text", current_tool)
if not is_valid:
    print(f"ALERT: {message}")
    # 阻止调用并通知用户
```

这个简单的检查器可以在工具调用前验证定义完整性。

对于生产环境,还需要考虑性能优化和分布式指纹存储。

企业级解决方案应该包括集中式的工具注册表和签名验证。

MCP协议本身可以扩展以支持工具定义的数字签名。

服务器可以使用私钥签名工具定义,客户端使用公钥验证。

这种端到端的完整性保护可以从根本上防止元数据篡改。

从生态系统角度看,MCP社区需要建立安全标准。

类似于OWASP Top 10,需要制定MCP安全最佳实践。

工具开发者应该遵循安全开发生命周期。

平台提供商需要实施工具审核和签名机制。

用户教育同样重要:开发者需要了解MCP安全风险。

安全审查不能停留在代码层面,必须包括运行时行为分析。

Deadbugz事件是一个警钟,提醒我们AI代理安全需要系统性方法。

单点防御无法应对供应链级别的攻击。

需要从协议、工具、运行时和用户教育多个层面构建防御体系。

只有这样,MCP生态系统才能健康发展,成为AI代理的可靠基础设施。

从更广泛的数据来看,MCP生态系统的安全状况令人担忧。

根据adversa.

ai的MCP安全月报,640个互联网暴露的MCP服务器中,91.

8%完全没有任何认证。

这意味着任何人都可以连接这些服务器并调用其中的工具。

更严重的是,687个工具实例暴露了shell执行能力,且没有任何访问控制。

攻击者可以通过这些工具执行任意系统命令。

Deadbugz攻击只是冰山一角。

在同一个月内,还有三个MCP服务器CVE被披露。

CVE-2026-73498影响Atlassian MCP服务器,允许攻击者读取服务器上的任意文件。

CVE-2026-67357影响ArcadeDB MCP服务器,泄露集群令牌导致root权限冒充。

CVE-2026-19956影响facebook-ads-mcp服务器,存在服务器端请求伪造漏洞。

这些漏洞的共同点是:服务器没有正确验证客户端输入。

自建MCP服务器的团队应该审计每个工具函数,确保没有将客户端参数直接传递给open()、subprocess或网络请求。

这三个CVE的根因都是相同的:信任用户输入。

为了应对这些安全挑战,Cisco AI Defense团队开源了一套扫描器工具。

MCP Scanner可以扫描MCP服务器的潜在威胁和安全发现。

A2A Scanner可以扫描Agent-to-Agent通信和行为。

Skill Scanner可以扫描agent skill中的恶意行为和脆弱模式。

这些工具提供了从工具层、通信层到技能层的全面安全检测。

对于企业环境,建议实施以下具体防御措施:

首先,部署MCP流量审计中间件,记录所有工具调用的输入输出。

其次,设置异常检测规则,如单次会话中文件读取数量超过阈值。

第三,对高风险操作要求人工确认,避免Agent在后台静默执行敏感操作。

第四,定期扫描所有MCP服务器的工具描述,检测是否包含可疑的指令注入模式。

第五,使用hash值锁定工具版本,禁止自动更新,防止供应链攻击。

第六,建立企业内部的MCP服务器审批流程,所有工具必须经过安全审核。

第七,实施最小权限原则,永远不要给Agent超过它工作所需的权限。

第八,部署专门的MCP安全网关,在工具调用前进行动态策略评估。

这些措施需要从组织、技术和流程三个维度协同实施。

安全不是一次性投入,而是持续的过程。

随着MCP生态系统的快速发展,安全威胁也在不断演变。

只有建立系统性的安全防御体系,才能确保AI代理技术的健康发展。

Deadbugz攻击是一个警示,提醒我们安全必须贯穿整个开发生命周期。

从设计、开发、部署到运维,每个环节都需要考虑安全因素。

这不仅是技术问题,更是组织文化和流程管理的问题。

只有将安全融入DNA,才能构建真正可信赖的AI代理基础设施。

相关推荐
酒旅Agent开发实战18 小时前
酒店供应链MCP实践分享
人工智能·大模型·酒店预订·ai agent·mcp
deepseek2321 小时前
OWASP 2026 智能体安全十大风险拆解:从 Anthropic 第四起违规联网事件看 Agent 持权上岗的安全边界
ai agent·owasp·智能体安全
张彦峰ZYF1 天前
从会话工具到常驻执行系统:重新理解 Prime Agent 的 RLM、Continual Harness 与长程 Agent 工程化
人工智能·ai agent·harness·openhands·智能体评测·prime agent·swe-agent
小白跃升坊1 天前
从「一切皆插件」到 AI 自进化:DeepSeek Harness 与 Cordis 元框架深度拆解
ai agent·deepseek·cordis·插件架构·harness engineering
deepseek231 天前
京东 JoyAI 物理基座模型 PhysBrain 1.5 发布拆解:8B 参数如何通过人类学习范式拿下开源第一,媲美 GPT-6 Astra
机器人·具身智能·ai agent·京东·物理智能
xiezhr2 天前
每天白嫖 WorkBuddy 100 积分,我让WorkBuddy自己领
ai·ai agent·workbuddy
linweidong3 天前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
枫彩3 天前
A股数据源怎么选?用 Python 验收 AI 复盘的日期与明细
python·ai agent·股票数据·mcp
deepseek234 天前
从 MCP 工具定义自动生成 Agent 评测集:把可靠性验证接入 CI
持续集成·ai agent·mcp·llm 评测