CVE-2026-59726 RufRoot:Ruflo AI 智能体平台 MCP 桥接未授权 RCE 漏洞(CVSS 10.0)

开源 AI 智能体编排平台 Ruflo 的 MCP(Model Context Protocol)桥接接口被曝存在一个 CVSS 满分 10.0 的未授权远程代码执行漏洞,编号 CVE-2026-59726,代号 RufRoot。攻击者无需任何凭证,仅凭一个 POST 请求即可在容器内执行任意命令、窃取 LLM 提供商 API 密钥、读取用户对话内容、劫持正在运行的 AI 智能体,并向平台的持久化 AI 记忆库注入恶意指令。该漏洞影响 Ruflo 3.16.3 之前的所有版本,影响面涉及 GitHub 上超过 6.7 万星标的自托管企业用户。

事件概述

2026 年 8 月 5 日,安全研究机构 Noma Labs 发布研究披露,Ruflo 在 docker-compose 默认部署中将其核心 MCP 桥接服务绑定到 0.0.0.0 网络接口且未启用任何身份验证。该桥接是一个 Express.js 服务器,统一处理 AI 智能体的全部 233 个工具调用,涵盖 Shell、数据库、智能体管理与持久化记忆等接口。研究人员随后向 Ruflo 团队负责任披露,Ruflo 在数小时内发布 3.16.3 修复版本、安全公告 GHSA-c4hm-4h84-2cf3 与回滚防护 CI 回归测试。

技术细节

漏洞根因包含三个叠加缺陷:第一,ruflo/docker-compose.yml 将 MCP 桥接服务默认绑定到全网段 0.0.0.0:3001;第二,POST /mcp 端点完全跳过身份验证即可调用任何工具;第三,terminal_execute 等系统级工具默认开启,可直接调用主机 Shell。攻击者只需一行 curl:

curl -s -X POST https://<victim>:3001/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ruflo__terminal_execute","arguments":{"command":"id && hostname"}}}'

取得代码执行权限后,Noma Labs 在 AWS EC2 默认部署上演示了完整 8 步攻击链:枚举 233 个可用工具 → RCE → 通过进程环境变量一键收集 OpenAI、Anthropic、Google、OpenRouter 等所有 LLM API 密钥 → 在受害者算力上生成攻击者控制的 Agent Swarm → 通过 ruflo__agentdb_pattern-store 向持久记忆注入伪造 SOC2 合规策略污染未来 AI 输出 → 卸载 MongoDB 后导出全部用户对话 → 写入 /app/beacon.js 持久化后门 → 借助 Docker restart: unless-stopped 策略保持运行 → 清空 shell history 抹除痕迹。

影响评估

Ruflo 累计下载与部署体量较大,估算活跃自托管用户约 100 万。任何使用 3.16.3 之前版本且将管理端口暴露在企业网络可达范围的实例,都可被远程匿名攻陷。该漏洞的 CVSS v3.1 基础评分 10.0(AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H),攻击复杂度低、无需权限、无需交互,且影响范围发生 Scope 改变:从容器内 node 用户扩散到 MongoDB、LLM 凭据与下游调用链。值得注意的是,AI 记忆投毒与传统持久化不同:被污染的记忆可以长期潜伏在受信数据存储中,初始入侵结束后仍持续影响智能体后续行为。

修复建议

  • 立即升级:将所有自托管 Ruflo 实例升级到 3.16.3 或后续版本,并显式确认 MCP 桥接与 MongoDB 仅绑定到 127.0.0.1 或内部接口。
  • 阻断外围网络:关闭 3001 与 27017 端口对外可达性,禁止其在公网或办公网直接可访问。
  • 轮换凭据:将所有 LLM 提供商 API 密钥视为泄露处理,立即轮换 OpenAI、Anthropic、Google、OpenRouter 等所有配置。
  • 审计 AgentDB 与 MongoDB:检索 agentdb_pattern-store 是否存在外部植入条目、MongoDB 是否出现异常集合或数据,使用平台提供的取证脚本进行复核。仅打补丁不能消除已被植入的恶意记忆。
  • 临时缓解(无法立即升级时):在 MCP 桥接前增加 mTLS 反向代理或要求 Bearer Token;并在拒绝服务不可用的前提下,将 terminal_execute 等高危工具关闭或将最小权限原则应用于容器默认 seccomp。

参考来源