🔴 【深度分析】严重安全漏洞:CVE-2026-47410

CVSS 评分: 严重(9.8)🔴  状态: Deferred  发布时间: 2026-07-21


🔍 技术细节速览

字段 值
CVE ID CVE-2026-47410
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-321,CWE-798
发布时间 2026-07-21
最后更新 2026-07-22
状态 Deferred
数据来源 security-advisories@github.com

⚠️ CVSS 评分:9.8(严重)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
危害等级: 紧急(可远程未授权获取管理员权限)


漏洞概述

PraisonAI Platform 是 PraisonAI 多智能体协作系统的平台层。其所有版本(低于 0.1.4)在默认配置下使用了一个硬编码的 JWT 签名密钥 "dev-secret-change-me"。当环境变量 PLATFORM_JWT_SECRET 未设置时,该密钥被直接用于签发和验证 JSON Web Token(JWT)。尽管代码中存在一个安全校验逻辑,但该逻辑仅在 PLATFORM_ENV != "dev" 时生效,而 PLATFORM_ENV 的默认值恰好为 "dev",因此该检查被完全绕过。

攻击者可通过读取公开源代码获取该硬编码密钥,然后构造任意 JWT(伪造 sub 和 email 声明),从而以任意已有用户身份进行认证,包括工作区所有者和管理员。漏洞 CVSS 评分高达 9.8,属于严重级别,且攻击复杂度低、无需认证、无需用户交互,可导致完全的信息泄露、篡改和拒绝服务。


受影响组件与版本

组件 受影响版本 修复版本
PraisonAI Platform < 0.1.4 0.1.4

注意:所有未显式设置 PLATFORM_JWT_SECRET 环境变量且 PLATFORM_ENV 保持默认值 "dev" 的部署均受影响。即使在生产环境中,只要没有按预期修改默认环境变量,漏洞依然存在。


漏洞原理分析

漏洞成因

PraisonAI Platform 的 JWT 签名逻辑中采用了以下模式(根据公开源码及描述推断):

# 伪代码示意
import os

PLATFORM_JWT_SECRET = os.getenv('PLATFORM_JWT_SECRET', 'dev-secret-change-me')
PLATFORM_ENV = os.getenv('PLATFORM_ENV', 'dev')

# 安全校验(本意是在非 dev 环境中禁止使用默认密钥)
if PLATFORM_ENV != 'dev' and PLATFORM_JWT_SECRET == 'dev-secret-change-me':
    raise Exception("Insecure default JWT secret in production!")

问题在于:

  1. 默认 PLATFORM_ENV 为 "dev",因此上述条件永远不会满足,校验被架空。
  2. 即使部署在生产环境,只要管理员未主动将 PLATFORM_ENV 设置为 "production" 或其他非 dev 的值,该安全检查便不会执行。
  3. 攻击流程极为简单:
    • 从 GitHub 等公开仓库(PraisonAI 代码)获取 dev-secret-change-me。
    • 使用该密钥签发一个 JWT,payload 中包含任意 sub(用户ID)和 email。
    • 将此 JWT 作为身份凭证发送至平台 API,即可模拟任意用户,获取其权限。

攻击向量

  • 攻击入口:直接向平台暴露的 API 端点(如 /api/login、/api/auth/verify)发送伪造的 JWT。
  • 利用条件:攻击者仅需网络可达、无需任何认证或用户交互。
  • 触发点:服务器端 JWT 验证函数使用预设密钥对 token 进行签名校验,而攻击者持有的密钥恰好与服务器相同。

与 CWE 的对应关系

  • CWE-321:使用硬编码的加密密钥
    核心问题:PLATFORM_JWT_SECRET 的默认值为硬编码字符串,而非随机生成或由管理员安全配置。
  • CWE-798:使用硬编码的凭据
    密钥本身被当作凭据硬编码在源代码中,攻击者可直接获取。

影响评估

评估维度 分析
攻击复杂度 低(AC:L)—— 密钥为公开字符串,无需特殊技术能力。
所需权限 无(PR:N)—— 无需任何预先认证或访问权限。
用户交互 无(UI:N)—— 攻击不依赖受害者任何操作。
攻击向量 网络(AV:N)—— 通过互联网远程实施。
影响范围 机密性、完整性、可用性(C:H/I:H/A:H)—— 攻击者可读取所有用户数据、伪造任意操作、甚至删除或修改系统配置,导致完全失陷。
实际威胁 极高。该漏洞允许任意用户接管管理员账号,从而控制整个平台所有智能体团队。若平台管理敏感数据(如业务文档、内部系统凭证),后果尤为严重。
利用难度 极低。已有公开概念验证(PoC)的可能性很大,大量存量部署可能仍在使用默认配置。

修复建议

1. 立即升级版本

将 PraisonAI Platform 升级到 v0.1.4 或更高版本。官方在该版本中移除了硬编码默认密钥,并强制要求在生产环境中通过环境变量提供安全的 JWT 密钥。

2. 变更配置(临时缓解措施)

若无法立即升级,可采取以下临时措施:

  • 设置环境变量:
    在部署环境中显式设置 PLATFORM_JWT_SECRET 为一个强随机值(至少 256 位,建议使用 openssl rand -hex 32 生成)。
  • 设置环境变量:
    同时设置 PLATFORM_ENV 为 "production" 或其他非 "dev" 的标识,以触发原有的安全校验逻辑,防止默认密钥被误用。
  • 验证配置:
    在启动日志中确认系统未使用 dev-secret-change-me,可尝试用已知密钥签发 JWT 测试是否被接受。

3. 应急响应

  • 检查现有 JWT:如果已部署过 0.1.4 以下版本,应假设所有现有 JWT 可能已被泄露。立即让所有用户撤销并重新签发其会话 token。
  • 审计日志:检查服务器日志中是否存在异常身份认证记录,特别是使用 sub 字段为 admin 或 owner 的请求。
  • 旋转所有涉及的用户凭证:包括 API 密钥、系统间通讯 token 等,以防攻击者早已利用该漏洞植入后门。

参考资料

类型 链接
NVD 官方页面 https://nvd.nist.gov/vuln/detail/CVE-2026-47410
CWE-321 https://cwe.mitre.org/data/definitions/321.html
CWE-798 https://cwe.mitre.org/data/definitions/798.html
官方安全公告(推测) 暂未发布公开公告,建议关注 GitHub 仓库安全 advisories。
相关源码提交 版本 0.1.4 的修复 commit 可在 PraisonAI Platform 的 GitHub 仓库查看(未公开,但 NVD 引用 security-advisories@github.com)。

备注:本分析基于 NVD 公开数据及 CVSS 向量进行合理推断,未添加未经确认的技术细节。建议安全团队参考官方仓库的补丁 diff 进行深度验证。


总结
CVE-2026-47410 是典型的硬编码凭据漏洞,因默认配置不当导致攻击者可远程获取最高权限。虽然官方已在 0.1.4 中修复,但大量历史部署可能仍暴露于风险中。请运维人员立即排查并修复,不可因“只是开发环境”而掉以轻心——默认环境变量值使得生产环境同样脆弱。