🔴 严重 | CVE-2026-52782 — OpenProject is open-source, web-based project mana...
🔴 【深度分析】严重安全漏洞:CVE-2026-52782
CVSS 评分: 严重(9.9)🔴 状态: Deferred 发布时间: 2026-06-26
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-52782 |
| CVSS 评分 | 9.9 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE 分类 | CWE-639 |
| 发布时间 | 2026-06-26 |
| 最后更新 | 2026-06-26 |
| 状态 | Deferred |
| 数据来源 | security-advisories@github.com |
好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 数据,为您生成一篇关于 CVE-2026-52782 的深度分析文章。
CVE-2026-52782 深度分析:OpenProject 项目存储 IDOR 漏洞
CVSS 评分:9.9(严重)
CVSS 向量:
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H危害等级: 严重 (Critical)
漏洞概述
CVE-2026-52782 是一个存在于开源项目管理软件 OpenProject 中的不安全的直接对象引用(IDOR) 漏洞。该漏洞允许一个项目中的管理员(project-admin)通过操纵一个特定的 PATCH 请求参数,非法访问并劫持同一存储后端(如 Nextcloud 或 OneDrive)上其他项目的受管理文件夹。
成功利用此漏洞,攻击者可以完全控制目标项目的文件存储权限,导致机密性、完整性和可用性全面受损。该漏洞影响 OpenProject 17.3.3 之前的版本以及 17.4.1 之前的 17.4.x 版本。
受影响组件与版本
- 受影响软件: OpenProject
- 影响版本:
- 所有低于 17.3.3 的版本
- 所有低于 17.4.1 的 17.4.x 版本
- 修复版本:
- 17.3.3
- 17.4.1
漏洞原理分析
该漏洞属于 CWE-639:通过用户控制的密钥绕过授权机制,即不安全的直接对象引用(IDOR)。
技术成因:
不安全的直接对象引用: OpenProject 在处理对
/projects/<A>/settings/project_storages/<A_ps_id>路径的 PATCH 请求时,未能充分验证用户(项目管理员)是否有权修改指定的Storages::ProjectStorage记录。该请求用于更新项目与存储后端(如 Nextcloud)的关联配置。参数操纵: 攻击者(项目A的管理员)可以构造一个恶意的 PATCH 请求,修改
storages_project_storage[project_folder_id]参数。这个参数本应指向自己项目(项目A)在存储后端上的文件夹ID。然而,由于缺乏权限校验,攻击者可以将此参数的值替换为受害者项目(项目B)的project_folder_id。权限劫持: 通过上述操作,攻击者成功地将项目A的
Storages::ProjectStorage记录中的project_folder_id指向了项目B的受管理文件夹。这意味着,从 OpenProject 的角度看,项目A现在“拥有”了项目B的文件夹。ACL 覆盖: 当 OpenProject 执行下一次“受管理文件夹同步”(managed-folder sync)操作时,它会根据项目A的用户列表,重新设置该文件夹的访问控制列表(ACL)。这会导致项目B的文件夹权限被覆盖,项目B的原始管理员和用户可能失去访问权限,而项目A的用户(包括攻击者)则获得访问权限。
攻击向量分析:
- 攻击复杂度(AC:L): 攻击者只需要了解 HTTP 请求的构造方式,并知道目标项目(项目B)的
project_folder_id。这个ID可能通过信息泄露、枚举或社会工程学手段获得。 - 所需权限(PR:L): 攻击者只需要拥有一个项目(项目A)的管理员权限即可发起攻击。这是一个相对较低的权限要求。
- 用户交互(UI:N): 攻击无需受害者进行任何操作。
- 影响范围(S:C): 漏洞影响从项目A扩展到项目B,改变了受影响资源(项目B的文件夹)的安全边界。
影响评估
实际威胁:极高
- 攻击复杂度低: 攻击者无需高级技术能力,只需发送一个精心构造的 HTTP 请求。
- 所需权限低: 仅需一个项目的管理员权限,这在大型组织中可能是一个相对容易获得或攻陷的账户。
- 无需用户交互: 攻击过程完全自动化,受害者无法察觉。
- 后果严重: 成功利用后,攻击者可以:
- 机密性丧失: 读取受害者项目中的所有文件。
- 完整性丧失: 修改、删除或替换受害者项目中的文件。
- 可用性丧失: 通过修改 ACL,可能导致受害者项目成员无法访问其文件,造成业务中断。
- 权限提升: 从一个项目的管理员权限,间接获得了对另一个项目存储资源的完全控制权。
利用条件:
- 攻击者拥有一个 OpenProject 项目的管理员权限。
- 目标项目(受害者)与攻击者项目共享同一个外部存储后端(如同一个 Nextcloud 实例)。
- 目标项目已配置了受管理的文件夹同步功能。
修复建议
官方补丁
强烈建议所有受影响的用户立即升级到以下修复版本:
- 升级到 OpenProject 17.3.3 或更高版本
- 升级到 OpenProject 17.4.1 或更高版本
这些版本中已修复了在 PATCH 请求中对 project_folder_id 的权限校验逻辑,确保只有项目管理员只能修改属于自己项目的存储配置。
临时缓解措施
如果无法立即升级,可以考虑以下临时措施:
- 限制项目管理员权限: 审查并最小化项目管理员角色的权限。考虑创建一个权限更少的“项目存储管理员”角色,或者仅在绝对必要时授予项目管理员权限。
- 监控异常 API 请求: 在 Web 服务器或应用防火墙(WAF)层面,监控对
/projects/*/settings/project_storages/*路径的 PATCH 请求。特别关注project_folder_id参数值的变化,并设置告警。 - 审计日志: 启用并定期审计 OpenProject 的日志,查找任何异常的
Storages::ProjectStorage记录修改行为。 - 隔离存储后端: 如果业务允许,为不同的项目或项目组使用不同的存储后端实例,以限制单个漏洞的影响范围。
参考资料
- CVE 详情页: https://nvd.nist.gov/vuln/detail/CVE-2026-52782
- CWE 分类: CWE-639: Authorization Bypass Through User-Controlled Key
- OpenProject 官方安全公告: (请参考 OpenProject 官方发布的安全公告或 GitHub 安全通告页面)
- OpenProject 发布说明: (请参考 OpenProject 17.3.3 和 17.4.1 的发布说明)