漏洞概述
CVE-2021-32050是一个影响多个MongoDB驱动程序的安全漏洞,该漏洞可能导致包含身份验证相关数据的安全敏感信息通过命令监听器被意外发布。当应用程序配置了命令监听器(此功能默认不启用)时,特定身份验证相关命令执行时,驱动程序可能会错误地将包含安全敏感数据的事件发布到应用程序配置的命令监听器。
如果没有适当的注意,应用程序可能会无意中暴露这些敏感信息,例如将其写入日志文件。这一问题仅当应用程序启用了命令监听器功能时才会出现(默认情况下未启用)。
受影响版本
该漏洞影响以下MongoDB驱动程序版本:
- MongoDB C Driver: 1.0.0 至 1.17.7(不含)之间的版本
- MongoDB PHP Driver: 1.0.0 至 1.9.2(不含)之间的版本
- MongoDB Swift Driver: 1.0.0 至 1.1.1(不含)之间的版本
- MongoDB Node.js Driver:
- 3.6 至 3.6.10(不含)之间的版本
- 4.0 至 4.17.0(不含)之间的版本
- 5.0 至 5.8.0(不含)之间的版本
- MongoDB C++ Driver: 依赖于C驱动1.0.0至1.17.7(不含)的版本(C++驱动3.7.0之前的版本)
该问题还会影响依赖C驱动1.0.0至1.17.7(不含)的MongoDB C++驱动用户(C++驱动3.7.0之前的版本)。
安全评估与评分
CVSS评分
MongoDB官方评估: 4.2(中危)
- CVSS向量: CVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:U/C:H/I:N/A:N
- 攻击向量: 本地(L)
- 攻击复杂度: 低(L)
- 所需权限: 高(H)
- 用户交互: 需要(R)
- 范围: 未改变(U)
- 机密性影响: 高(H)
- 完整性影响: 无(N)
- 可用性影响: 无(N)
NIST评估: 7.5(高危)
- CVSS向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
弱点枚举
- CWE-200: 向未授权参与者暴露敏感信息
- 产品将敏感信息暴露给未被明确授权访问该信息的参与者。
- CWE-532: 将敏感信息插入日志文件
- 产品将敏感信息写入日志文件。
技术详情与修复
问题根源
该漏洞的核心问题是MongoDB驱动程序未能正确地从命令监控中编辑(隐藏)敏感命令。当应用程序启用命令监听器功能时,驱动程序在处理特定身份验证相关命令(如authenticate、saslStart等)时,可能会将包含凭据或其他安全敏感数据的事件发布到应用程序配置的监听器。
修复版本
各驱动程序已发布修复版本:
- MongoDB C Driver: 1.17.7及以上版本
- MongoDB PHP Driver: 1.9.2及以上版本
- MongoDB Swift Driver: 1.1.1及以上版本
- MongoDB Node.js Driver:
- 3.6.10及以上版本(3.6.x系列)
- 4.17.0及以上版本(4.x系列)
- 5.8.0及以上版本(5.x系列)
- MongoDB C++ Driver: 3.7.0及以上版本
相关修复工作
各语言驱动的修复工作通过以下JIRA工单跟踪:
- CDRIVER-3797: 从命令监控中编辑敏感命令(C驱动)
- CXX-2028: 显式写入关注被错误地应用于collection::find_one_and_*方法(C++驱动)
- NODE-3356: Node驱动应编辑安全敏感命令(Node.js驱动)
- PHPC-1869: 从命令监控中编辑敏感命令(PHP驱动)
- SWIFT-1229: (Swift驱动相关,内容受限)
这些修复工作包括添加对安全敏感命令监控事件编辑的测试,以及对安全敏感命令回复编辑的测试。
影响范围与供应商公告
NetApp产品影响
多个NetApp产品集成了MongoDB驱动程序,因此受到此漏洞的影响。NetApp评估该漏洞的CVSS评分为7.5(高危),向量为CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N。
成功利用此漏洞可能导致敏感信息泄露。NetApp已了解此漏洞的公开讨论,并持续监控情况。
Debian安全更新
Debian LTS于2025年5月20日发布了安全更新(DLA-4175-1),针对mongo-c-driver软件包修复了包括CVE-2021-32050在内的多个漏洞。
对于Debian 11 bullseye,这些问题已在版本1.17.6-1+deb11u1中修复。建议用户升级其mongo-c-driver软件包。
缓解措施与建议
- 升级驱动程序: 将受影响的MongoDB驱动程序升级到上述修复版本。
- 审查配置: 检查应用程序是否启用了命令监听器功能,如非必要,考虑禁用此功能。
- 日志安全审查: 审查应用程序日志配置,确保不会记录敏感的身份验证信息。
- 权限最小化: 遵循最小权限原则,确保应用程序仅具有执行其功能所需的最低数据库权限。
- 持续监控: 监控MongoDB和安全公告,了解相关漏洞和修复的最新信息。