PubNub 熵不足漏洞 (CVE-2023-26154) 技术详情
漏洞概述
CVE-2023-26154 是一个影响多个 PubNub 软件包版本的熵不足漏洞,被评定为 中等严重程度。该漏洞存在于 getKey 函数的实现中,由于对 AES-256-CBC 加密算法的低效实现,导致加密强度降低。
受影响版本
漏洞影响以下多个生态系统的 PubNub 包:
NuGet (.NET)
- 受影响版本: Pubnub
< 6.19.0 - 已修复版本: 6.19.0
Maven (Java/Kotlin)
- com.pubnub:pubnub:所有版本均受影响 (<= 4.6.5)
- com.pubnub:pubnub-kotlin:
< 7.7.0 - 已修复版本(Kotlin): 7.7.0
Go 模块
- github.com/pubnub/go:所有版本均受影响 (
< 0.0.0-20231016150651-428517fef5b9) - github.com/pubnub/go/v5:
< 5.0.4-0.20231016150651-428517fef5b9 - github.com/pubnub/go/v6:
< 6.1.1-0.20231016150651-428517fef5b9 - github.com/pubnub/go/v7:
< 7.2.0 - 已修复版本(v7): 7.2.0
其他包管理器
- Swift (CocoaPods):
< 6.2.0→ 6.2.0 - npm (JavaScript):
< 7.4.0→ 7.4.0 - RubyGems:
< 5.3.0→ 5.3.0 - Rust (Cargo):
< 0.4.0→ 0.4.0 - Pub (Dart):
< 4.3.0→ 4.3.0 - pip (Python):
< 7.3.0→ 7.3.0 - Composer (PHP):
< 6.1.0→ 6.1.0
技术详情
漏洞原理
该漏洞源于 getKey 函数中对 AES-256-CBC 加密算法 的低效实现。具体来说:
- 在应用十六进制编码和修剪操作时,提供的
encrypt函数安全性降低 - 这导致每个编码消息或文件的密钥中有一半的位始终保持相同
- 攻击者可以通过投入资源准备攻击并暴力破解加密来利用此漏洞
弱点分类
- CWE-ID: CWE-331 - 熵不足
- 描述: 产品使用的算法或方案产生不足的熵,留下比其他值更可能出现的值模式或集群
安全评分
CVSS v3.1 分数:5.9(中等)
基础指标:
- 攻击向量:网络 (AV:N)
- 攻击复杂度:高 (AC:H)
- 所需权限:无 (PR:N)
- 用户交互:无 (UI:N)
- 范围:未改变 (S:U)
- 机密性影响:高 (C:H)
- 完整性影响:无 (I:N)
- 可用性影响:无 (A:N)
EPSS 分数:0.362%
该分数估计此漏洞在未来30天内被利用的概率(第58百分位)。
参考链接
官方漏洞数据库
修复提交
- pubnub/javascript@fb6cd04
- https://github.com/pubnub/javascript/blob/master/src/crypto/modules/web.js#L70
- pubnub/go@428517f
安全分析
Snyk 漏洞报告
- 多个生态系统报告,涵盖 CocoaPods、.NET、Go、Java、JavaScript、PHP、Pub、Python、Ruby、Rust、Swift 和 C-core
GitHub 安全通告
- GHSA-5844-q3fc-56rh
Ruby 安全数据库
时间线
- 向国家漏洞数据库发布: 2023年12月6日
- 向 GitHub 安全通告数据库发布: 2023年12月6日
- 审核时间: 2023年12月6日
- 最后更新: 2025年7月22日
建议措施
建议所有使用受影响 PubNub 版本的用户立即升级到相应的已修复版本,以确保加密功能的安全性。虽然攻击复杂度被评定为"高",且需要资源投入进行暴力破解,但降低加密强度的漏洞仍可能被有动机的攻击者利用。