🟠 高危 | CVE-2026-47394 — PraisonAI is a multi-agent teams system. Prior to ...
🟠 【深度分析】高危安全漏洞: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 的完整补丁,并强化了调度器的参数校验。
临时缓解措施(若无法立即升级)
- 限制网络访问:将 MCP 服务端口(默认可能为 8080 或自定义)限制为仅内网或可信 IP 可访问,可使用防火墙或反向代理。
- 添加认证:在 MCP 端点前增加身份验证机制(如 API Key、JWT),确保只有授权用户可调用工具。
- 手动修补代码:在
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 官方页面: https://nvd.nist.gov/vuln/detail/CVE-2026-47394
- GitHub 安全公告: 尚未提供直接链接(参考原始 CVE 描述中的 GHSA-9mqq-jqxf-grvw)
- CWE 分类:
- 修复 commit:
68cc9427(初始修复) + 后续完整修复(版本 4.6.40,具体 commit 未在数据中列出)
注意: 本文基于 NVD 提供的原始数据及 CVE 描述进行合理推断,未编造未经确认的技术细节。具体代码审计细节建议参考开源项目仓库的 commit 历史。