数百万美元的企业防御策略往往会因为一个未经身份验证的容器而崩溃。上个季度,我在审计一家研究实验室时亲眼目睹了这一点。该实验室花了六个月时间加固其 Kubernetes 集群,却为了周末的演示留下了一个开放的 ComfyUI 实例。那个暴露在 8188 端口上的单一端口,足以绕过他们设置的所有网络策略。2026 年 7 月初发现的 NadMesh 僵尸网络,正处于企业安全标准与 AI 部署的狂热节奏之间的地带。
NadMesh 是一种基于 Go 语言的恶意软件家族,它优先考虑身份信息而非原始算力。以前的僵尸网络专注于劫持 GPU 进行门罗币(Monero)挖矿,而 NadMesh 背后的运营者明白,窃取的 AWS 密钥比每秒几千次哈希运算更有价值。奇安信(QiAnXin)的 XLab 在周五发布了一份报告,详细介绍了该僵尸网络如何搜寻图像生成器、本地模型运行器和工作流构建器,而工程团队通常在部署这些工具时追求速度,却在防火墙设置上滞后。
现代 AI 部署中存在一个根本性的悖论。组织在云 IAM 角色和加密存储上投入巨资,却允许开发人员直接在公共互联网上运行未经身份验证的工具,如 Ollama 或 n8n。NadMesh 利用了这种缺乏摩擦的现状。该僵尸网络使用 Shodan 收集器来保持其扫描队列,目标涵盖运行 ComfyUI、Open WebUI、Langflow 和 Gradio 的系统。这些都是现代 AI 技术栈的工具,而且很少有开箱即用的加固措施。
我最近分析了一个捕获案例,一名开发人员部署了一个 Marimo 笔记本(notebook)来测试一个新模型。他们忽略了安全警告,因为他们只需要使用一小时。但在二十分钟内,一个 NadMesh 机器人就扫描了该 IP,识别了服务并尝试利用漏洞。这种速度之所以成为可能,是因为该僵尸网络将互联网视为一个可搜索的数据库,而不是一片漫无目的游荡的广阔领土。产生成功命中的子网每五分钟会被重新采样一次。如果一个目标被标记为危险,僵尸网络会每十五分钟返回一次,并优先运行针对 AI 特定端口的高优先级扫描。
扫描逻辑是持久性的。一次完整的扫描会将过去七天内标记为危险的每个 IP 重新拖回队列顶部。作者显然知道研究人员和蜜罐正在监视。如果一个目标吸收了十次部署尝试而没有返回结果,僵尸网络会自动将其列入黑名单。这可以防止集群在诱饵上浪费资源。当队列枯竭时,机器人会生成一个随机的 /24 子网并继续搜寻。
到 7 月的第二周,推送 NadMesh 的不同源 IP 数量呈垂直增长。XLab 记录到该数量从接近零跳升到每天约 139 个。7 月 10 日捕获的运营者仪表板声称已获取 3,811 个唯一的 AWS 密钥。活跃机器人数量较少与被盗凭据数量巨大之间的差异表明,这是一个高效的自动化引擎。如果每次感染都能产生云环境的主密钥,运营者就不需要庞大的僵尸网络。
模型上下文协议(Model Context Protocol, MCP)是控制器优先级列表上的主要向量。MCP 是一项允许 AI 模型调用外部工具和访问数据源的标准。按照设计,MCP 的第一个规范将身份验证放在核心协议之外。截至 2025 年 3 月,已经存在授权流程,但规范将其描述为可选。许多开发人员为了节省配置时间而跳过它。
Censys 统计到,截至 2026 年 5 月,有超过 21,000 个可访问的 MCP 服务。其中约有 90 个广告了一个名为 execute_command 的工具。这个工具正是 NadMesh 漏洞利用表顶部的调用目标。该僵尸网络使用 JSON-RPC tools/call 来触发此命令。此活动没有相关的 CVE,因为软件正按照配置执行。问题不在于代码中的漏洞,而在于一个默认允许未经身份验证执行命令的协议。
当机器人成功入侵主机时,它不仅仅是安装一个矿工。它会编目环境。NadMesh 仪表板背后的情报流显示了 DeepSeek、GLM 和 Kimi 模型的清单。这些清单通常带有 ":cloud" 标识符。这表明机器人正在越过本地机器,识别主机可以访问哪些远程 AI 服务。
机器人传回的是组织的身份信息。它从环境变量中提取云密钥,提取 Kubernetes 服务账户令牌,并抓取 ~/.aws/config 的内容。它还针对 .env 文件和 ~/.docker/config.json。研究人员明确指出了动机:运营者追求的是云凭据和集群权限,而不是主机本身。在现代架构中,主机是可丢弃的商品,但凭据提供了对数据平面的持久访问。
由于其冗余的持久化机制,从受感染系统中移除 NadMesh 非常困难。该代理维护三种独立的方式来在重启后存活。如果管理员发现并删除了一个条目,另外两个条目仍会拉取恶意软件的新副本。这就像试图扑灭一场拥有三个独立燃料源的火。恶意软件的每个构建版本还经过 Garble 混淆和带有随机填充的 UPX 压缩。这意味着每个代理都有唯一的文件哈希。安全团队无法依靠单一哈希来发现整个网络中的感染。
目前野外运行着五个版本的僵尸网络。最常见的是 33.8-GO-TITAN。运营者使用金丝雀端点在广泛发布之前将新构建版本部署到一小部分集群中。这种 DevOps 成熟度反映了他们所针对的正规软件公司。运营者的成功是根据排除 Ollama 和 AWS 收集之外的结果白名单来评分的。这表明仪表板上的计分板仅显示了总运营规模的一小部分。
NadMesh 投掷的大部分攻击都针对留在公共互联网上可调用的管理功能。这包括 2375 端口上的开放 Docker API、Jenkins 脚本控制台和未经身份验证的 Redis 实例。没有任何补丁可以修补这些漏洞,因为它们是配置选择。为了确保环境安全,您必须将这些服务移至身份验证之后或完全移出公共互联网。优先处理 NadMesh 重新扫描任务排在首位的四个端口:8188 (ComfyUI)、11434 (Ollama)、7860 (Gradio) 和 5678 (n8n)。
还有一小部分漏洞需要立即修复。CVE-2026-39987 是 Marimo 笔记本中的一个预身份验证远程代码执行漏洞。CISA 在 4 月将其添加到“已知利用漏洞”目录中。CVE-2026-41176 也很关键,因为它允许未经身份验证的调用者翻转 rclone RC 服务器上的身份验证开关。由于 rclone 配置通常包含云凭据,这是 NadMesh 的高优先级目标。
如果您发现感染迹象,请立即隔离主机。查找 /etc/cron.d/.sys_monitor 中的持久化文件以及 /dev/shm/.a 或 /tmp/.a 中的隐藏文件。撤销凭据是唯一安全的出路。如果主机被入侵,请假设它接触过的每个 AWS 密钥、集群令牌和 .env 文件现在都掌握在运营者手中。如果恶意软件仍然存在并窃取新密钥,那么轮换密钥是不够的。在发布替换密钥之前,必须清除持久化机制。审核日志中是否存在来自 IP 209.99.186[.]235 的活动或与域名 cdnorigin[.]net 的连接。目标是验证被盗身份在生效期间的使用情况。
来源:NIST 网络安全框架、MITRE ATT&CK(资源开发、初始访问)、奇安信 XLab NadMesh 报告、Censys MCP 普查 2026。
免责声明:本文仅用于信息和教育目的,不能替代专业的网络安全审计或事件响应服务。



