🔴 严重 | CVE-2026-47393 — PraisonAI is a multi-agent teams system. CVE-2026-...
🔴 【深度分析】严重安全漏洞:CVE-2026-47393
CVSS 评分: 严重(9.8)🔴 状态: Deferred 发布时间: 2026-07-21
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-47393 |
| CVSS 评分 | 9.8 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-306,CWE-1188 |
| 发布时间 | 2026-07-21 |
| 最后更新 | 2026-07-22 |
| 状态 | Deferred |
| 数据来源 | security-advisories@github.com |
⚠️ CVSS 9.8(严重)
向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
攻击复杂度低、无需权限、无需交互、可远程利用,且能完全危害机密性、完整性和可用性。
漏洞概述
CVE-2026-47393 是 PraisonAI(一个多智能体系统框架)中存在的一个严重安全缺陷。该漏洞源于其内置的代码生成器 praisonai.deploy.api.generate_api_server_code 生成的 Flask API 服务器默认禁用身份认证。用户若按照官方快速开始文档执行 praisonai deploy --type api 并使用推荐的 YAML 配置(绑定到 0.0.0.0),将启动一个无认证的 API 服务,暴露 /chat 和 /agents 端点,并直接运行 praisonai.run() 处理用户提交的 JSON 输入。攻击者可远程利用该服务执行 LLM 编排操作(利用环境中的 API 密钥等敏感信息),实现完全控制。
该漏洞影响所有 4.6.40 之前版本的 PraisonAI。官方在 4.6.40 版本中修复了该问题,修复方式为将认证改为默认关闭但提供显式启用选项(APIConfig(auth_enabled=True, auth_token=...))。
受影响组件与版本
| 组件 | 受影响版本 | 修复版本 |
|---|---|---|
PraisonAI 代码生成器 (praisonai.deploy.api.generate_api_server_code) |
< 4.6.40 | 4.6.40 |
说明:任何通过 praisonai deploy --type api 快速部署的用户,若未手动开启认证,均受影响。
漏洞原理分析
技术成因
该漏洞属于 CWE-306 (Missing Authentication for Critical Function) 与 CWE-1188 (Insecure Defaults) 的组合。
- 代码生成器设计缺陷:
generate_api_server_code生成的 Flask 应用代码中,auth_enabled参数默认值为False。这意味着生成的服务器在启动时不会检查任何认证令牌或会话。 - 默认绑定行为:官方推荐的示例 YAML 配置指定
host: 0.0.0.0,导致服务监听所有网络接口,方便攻击者远程访问。 - 关键端点未受保护:
/chat和/agents端点直接调用praisonai.run(),该函数会基于用户提供的 JSON 输入调用底层的 LLM 模型。由于环境变量中通常包含 API 密钥(如 OpenAI、Anthropic 等),攻击者可滥用这些密钥执行任意 LLM 任务,甚至通过 Prompt Injection 获取敏感信息。 - 身份认证缺失:整个 API 没有要求任何身份凭证(如 token、API key),攻击者无需任何权限即可发送请求。
攻击向量分析
- 扫描暴露的 PraisonAI 服务:攻击者可通过 Shodan、Censys 等搜索引擎或直接扫描公网 IP 的常见端口(如 5000、8000)发现绑定到
0.0.0.0的 Flask 服务。 - 发送恶意 JSON 载荷:向
/chat端点发送包含恶意提示的请求,如要求 LLM 输出环境变量中的 API Key、系统命令等。 - 利用 LLM 能力:由于环境中有真实 API Key,攻击者可耗尽配额、调取敏感数据,甚至通过 LLM 的插件/工具调用(如文件读取、网络请求)实现横向移动。
影响评估
利用困难程度
- 攻击复杂度 (AC:L):无需特殊技巧,仅需发送 HTTP POST 请求。
- 所需权限 (PR:N):无需任何身份认证或账户。
- 用户交互 (UI:N):无需受害者点击链接等操作。
- 攻击路径 (AV:N):远程网络可达。
潜在后果
| 方面 | 影响 |
|---|---|
| 机密性 (C:H) | 攻击者可获取环境变量中的 API 密钥、数据库凭证、内部配置等敏感信息。 |
| 完整性 (I:H) | 可通过 LLM 函数调用修改文件、执行代码,或篡改系统状态。 |
| 可用性 (A:H) | 消耗 API 配额或导致服务拒绝服务;极端情况下可删除关键资源。 |
实际威胁:任何暴露于公网的 PraisonAI 服务(未启用认证)都可能被立即攻陷,完全控制宿主机上的 AI 资源。
修复建议
官方补丁
- 升级至 4.6.40 或更高版本:该版本修改了代码生成器,要求显式通过
APIConfig(auth_enabled=True, auth_token=...)开启认证。用户需立即升级并修改部署脚本。
临时缓解措施(无法立即升级时)
- 手动启用认证:在生成服务器代码后,编辑生成的
app.py,将auth_enabled设为True并设置强随机auth_token。 - 限制网络暴露:确保服务仅绑定到
127.0.0.1(localhost),或通过反向代理(如 Nginx)添加 IP 白名单和 HTTP 基本认证。 - 删除不必要的端点:若仅需聊天功能,可注释或移除
/agents等不必要端点。 - 监控日志:检查服务器访问日志,识别可疑的未授权请求。
长期最佳实践
- 始终遵循最小权限原则,避免将 AI 服务直接暴露在公网。
- 使用 API 网关(如 Kong、AWS API Gateway)强制认证。
- 定期审计代码生成器生成的默认配置。
参考资料
| 项目 | 链接 |
|---|---|
| CVE-2026-47393 官方详情 | https://nvd.nist.gov/vuln/detail/CVE-2026-47393 |
| CWE-306 (Missing Authentication) | https://cwe.mitre.org/data/definitions/306.html |
| CWE-1188 (Insecure Defaults) | https://cwe.mitre.org/data/definitions/1188.html |
| PraisonAI GitHub 安全公告 (GHSA-6rmh-7xcm-cpxj) | 关联 CVE-2026-44338 (具体链接未提供) |
| PraisonAI 官方文档 | https://docs.praison.ai/ |
分析结论:CVE-2026-47393 是一个典型的“不安全默认值”引发的严重漏洞,攻击者无需任何权限即可完全控制暴露的 AI API 服务。所有使用版本低于 4.6.40 的用户应立即采取补救措施。