🟠 【深度分析】高危安全漏洞:CVE-2026-47394

CVSS 评分: 高危(8.7)🟠  状态: Deferred  发布时间: 2026-07-21


🔍 技术细节速览

字段 值
CVE ID CVE-2026-47394
CVSS 评分 8.7 🟠
严重程度 高危
CVSS 向量 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CWE 分类 CWE-22,CWE-200,CWE-862
发布时间 2026-07-21
最后更新 2026-07-21
状态 Deferred
数据来源 security-advisories@github.com

CVSS 评分:8.7(高危)
CVSS 向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
攻击路径: 远程网络攻击
攻击复杂度: 低
所需权限: 无
用户交互: 无
影响: 机密性影响高(可读取任意文件),完整性、可用性无影响
CWE: CWE-22(路径遍历)、CWE-200(信息泄露)、CWE-862(缺少授权)

漏洞概述

CVE-2026-47394 是 PraisonAI 多智能体协作系统中的一个未授权任意文件读取漏洞。该漏洞源于对先前修复(针对 GHSA-9mqq-jqxf-grvw / CVE-2026-44336)的不完整补丁。攻击者无需任何身份验证,只需向 MCP(Model Context Protocol)服务端发送一个特制的 tools/call 请求,即可读取主机上任意可读文件(如 /etc/passwd、SSH 私钥、AWS 凭据等),造成严重的信息泄露。

受影响组件与版本

  • 组件名称: PraisonAI
  • 影响版本: < 4.6.40
  • 修复版本: 4.6.40
  • 关键文件: mcp_server/adapters/cli_tools.py、server.py

漏洞原理分析

PraisonAI 采用 MCP 协议提供远程工具调用能力。在 mcp_server/adapters/cli_tools.py 中,定义了多个处理规则和流程的 handler,例如 rules.create、rules.show、rules.delete、workflow.show、workflow.validate、deploy.validate 等。

先前针对 CVE-2026-44336 的修复(commit 68cc9427)引入了 _resolve_rule_path() 辅助函数对路径进行安全校验,并仅应用于 rules.create、rules.show、rules.delete 三个 handler。然而,workflow.show 未被修改,依然直接接受用户传入的文件路径参数,未做任何限制。更严重的是,workflow.validate 和 deploy.validate 也存在相同的模式(直接使用用户输入构造路径),但未被原始安全公告提及,也未被补丁覆盖。

此外,根因位于 server.py 第 281-298 行的 MCP 调度器(dispatcher)。该调度器在接受 params["arguments"] 时,未对传入的参数进行 input_schema 校验,允许任意键值对直接传递给底层 handler。攻击者可以构造一个 tools/call 请求,调用 praisonai.workflow.show,并利用 arguments 传入恶意文件路径(例如 ../etc/passwd),服务端会将该路径直接用于文件读取操作,导致任意文件泄露。

由于无需认证、无需用户交互,且攻击复杂度低,该漏洞可被远程利用。

影响评估

  • 攻击复杂度: 低(无需特殊工具,只需发送 HTTP POST 请求即可)
  • 所需权限: 无(服务暴露在公网即可被利用)
  • 利用条件: 目标 PraisonAI 服务的 MCP 端点(通常为 /mcp 或 /api/v1/mcp)可被网络访问
  • 潜在后果:
    • 读取系统敏感文件(如 /etc/passwd、/etc/shadow、SSH 私钥、云服务凭据)
    • 读取应用程序源代码、数据库密码、API 密钥等
    • 可能导致横向移动或进一步权限提升(若泄露凭据)
  • 影响范围: 所有未升级至 4.6.40 版本的 PraisonAI 实例

修复建议

立即升级

  • 升级至 PraisonAI 4.6.40 或更高版本。该版本包含了针对所有受影响 handler 的完整补丁,并强化了调度器的参数校验。

临时缓解措施(若无法立即升级)

  1. 限制网络访问:将 MCP 服务端口(默认可能为 8080 或自定义)限制为仅内网或可信 IP 可访问,可使用防火墙或反向代理。
  2. 添加认证:在 MCP 端点前增加身份验证机制(如 API Key、JWT),确保只有授权用户可调用工具。
  3. 手动修补代码:在 mcp_server/adapters/cli_tools.py 中,对所有涉及文件路径的 handler(包括 workflow.show、workflow.validate、deploy.validate)添加路径白名单或使用 os.path.realpath() 进行规范化并限制在指定目录内。

检查是否被利用

  • 审查服务器日志中是否有针对 /mcp 或 tools/call 的异常请求,尤其是包含 workflow.show、workflow.validate、deploy.validate 且参数含路径穿越符号(如 ../)的记录。
  • 检查 /etc/passwd、~/.ssh/ 等敏感文件是否被非授权访问。

参考资料

注意: 本文基于 NVD 提供的原始数据及 CVE 描述进行合理推断,未编造未经确认的技术细节。具体代码审计细节建议参考开源项目仓库的 commit 历史。