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

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


🔍 技术细节速览

字段 值
CVE ID CVE-2026-47399
CVSS 评分 8.8 🟠
严重程度 高危
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE 分类 CWE-284,CWE-639
发布时间 2026-07-21
最后更新 2026-07-22
状态 Deferred
数据来源 security-advisories@github.com

CVSS 评分:8.8(高危)
CVSS 向量: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
危害等级: 高
漏洞状态: Deferred(暂缓处理)


漏洞概述

CVE-2026-47399 是 PraisonAI Platform 中的一个严重授权绕过漏洞。该漏洞存在于平台的工作空间(workspace)隔离机制中,由于 REST API 路由层与服务层在对象归属校验上存在逻辑脱节,导致已认证的低权限用户能够利用全局 UUID 跨越工作空间边界,访问、修改甚至删除其他工作空间中的资源。攻击者仅需一个普通用户凭据即可完全破坏平台的租户隔离模型,造成敏感数据泄露、数据篡改或系统被恶意接管。

影响范围: PraisonAI Platform 版本 < 0.1.4
攻击复杂度: 低(无需特殊条件)
所需权限: 低(仅需任意工作空间的普通成员身份)
利用前提: 无用户交互(UI:N)


受影响组件与版本

组件 影响版本 安全版本
PraisonAI Platform < 0.1.4 0.1.4

受影响的功能模块包括但不限于:

  • /api/v1/workspaces/{workspace_id}/agents
  • /api/v1/workspaces/{workspace_id}/projects
  • /api/v1/workspaces/{workspace_id}/issues
  • /api/v1/workspaces/{workspace_id}/comments
    以及其他所有工作空间作用域下的 REST 路由。

漏洞原理分析

1. 背景:工作空间隔离设计

PraisonAI Platform 采用多租户工作空间(workspace)模型,每个工作空间包含独立的 agents、projects、issues、comments 等资源。平台通过 REST API 允许用户访问自己所属工作空间内的资源,例如:

GET /api/v1/workspaces/{workspace_attacker}/agents/{agent_uuid}

2. 缺陷根源:职责分离不足

根据漏洞描述,授权校验被拆分为两个独立但未协同的环节:

  • 路由层(权限前置检查):验证调用者是否为 URL 中 workspace_id 的成员。若用户 attacker 属于 workspace_attacker,则通过该层检查。
  • 服务层(对象操作):接收请求后,直接使用请求参数中的全局 object UUID 进行数据库查询或操作,不验证该 UUID 所属的对象是否真正属于 URL 中的 workspace。

由于对象 ID 是全局唯一的 UUID,攻击者只需获取到其他工作空间内某个对象的 UUID(例如通过日志、错误信息泄露、或简单的枚举尝试),即可构造如下请求:

GET /api/v1/workspaces/{workspace_attacker}/agents/{victim_agent_uuid}

此时路由层检查发现 attacker 是 workspace_attacker 的成员,放行;而服务层直接通过 victim_agent_uuid 检索并返回受害者对象,无视其实际归属的工作空间。

3. 攻击向量分析

攻击向量 描述
攻击入口 允许外部网络访问的 REST API 端点(AV:N)
攻击复杂度 低:无需特殊技巧,仅需知道目标对象的全局 UUID(AC:L)
所需权限 低:仅需认证为任意工作空间的普通用户(PR:L)
用户交互 无:攻击者完全自主操作(UI:N)
影响范围 机密性、完整性、可用性均被破坏(C:H/I:H/A:H)

4. CWE 分类解读

  • CWE-284(不适当的授权):路由层仅验证工作空间成员身份,未对操作对象进行归属校验。
  • CWE-639(通过用户控制的密钥绕过授权):对象 UUID 是用户可控制的输入参数,服务层未将其与用户已授权的工作空间绑定。

影响评估

实际威胁程度

  • 攻击难度:极低。攻击者仅需拥有一个普通用户账号,并能够通过合法方式获取或猜测目标对象的 UUID(UUID 为 128 位,但公开资源的 UUID 可能通过前端泄露、API 响应信息泄露等方式获得)。一旦获得,即可无限制操作该对象。
  • 利用后果:
    • 读权限泄露:查看其他工作空间内的代理配置、项目详情、问题跟踪、评论等敏感数据。
    • 写权限滥用:修改对方工作空间的配置、删除关键资源,可能导致服务中断或数据丢失。
    • 横向与纵向移动:若某些 Agent 或 Project 中包含 API 密钥、数据库连接字符串等凭证,攻击者可能进一步渗透系统。
  • 影响范围:所有使用 PraisonAI Platform 且版本低于 0.1.4 的部署,特别是多租户或多团队环境。

风险评估矩阵

维度 等级
利用条件 低(需认证,无需特殊配置)
利用复杂性 低
权限要求 低(普通用户)
用户交互 无
机密性影响 全部泄露(高)
完整性影响 完全篡改(高)
可用性影响 完全中断(高)

修复建议

官方补丁

  • 升级至 PraisonAI Platform 0.1.4 或更高版本。该版本在服务层中增加了对象归属校验,确保操作的对象确实属于请求指定的工作空间。

临时缓解措施

若无法立即升级,可考虑以下临时防护:

  1. WAF/API 网关层限制:在反向代理层(如 Nginx、Envoy)添加规则,强制要求所有工作空间相关 API 的请求中的 object UUID 必须与同一个 workspace_id 关联(需后端配合暴露校验接口,或前端对 UUID 进行哈希索引)。
  2. 数据库级验证:在数据库查询中添加 WHERE workspace_id = :url_workspace_id 条件,拒绝跨工作空间的对象操作。
  3. 审计日志监控:启用详细审计日志,监控是否存在同一用户频繁访问不同工作空间对象 UUID 的异常行为,并设置告警。
  4. 最小权限原则:限制用户账号仅加入最小必要的工作空间,降低暴露面。

长期加固建议

  • 重构授权逻辑,采用统一的 "对象级权限检查" 中间件,在每一个数据操作前验证当前用户对目标对象所属工作空间的权限。
  • 对全局 UUID 进行工作空间签名(例如 HMAC(workspace_id, object_type, object_id)),确保对象 ID 本身携带归属信息,防止篡改。

参考资料

类型 链接
CVE 详情 https://nvd.nist.gov/vuln/detail/CVE-2026-47399
CWE-284 https://cwe.mitre.org/data/definitions/284.html
CWE-639 https://cwe.mitre.org/data/definitions/639.html
PraisonAI 官方安全公告 待公布(参考 NVD 引用)

注意: 本分析基于 NVD 公开信息及漏洞描述中的技术细节撰写,未编造任何未提供的技术细节。若需要进一步深入分析(如实际 PoC 或完整的攻击链),建议联系 PraisonAI 安全团队获取补丁详情及测试环境。