PubNub多个SDK熵不足漏洞 (CVE-2023-26154) 技术分析

本文详细分析了PubNub多个SDK中存在的加密熵不足漏洞(CVE-2023-26154),该漏洞源于AES-256-CBC算法在`getKey`函数中的低效实现,导致加密密钥一半位固定,降低了安全性。

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 加密算法 的低效实现。具体来说:

  1. 在应用十六进制编码和修剪操作时,提供的 encrypt 函数安全性降低
  2. 这导致每个编码消息或文件的密钥中有一半的位始终保持相同
  3. 攻击者可以通过投入资源准备攻击并暴力破解加密来利用此漏洞

弱点分类

  • 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百分位)。

参考链接

官方漏洞数据库

修复提交

安全分析

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 版本的用户立即升级到相应的已修复版本,以确保加密功能的安全性。虽然攻击复杂度被评定为"高",且需要资源投入进行暴力破解,但降低加密强度的漏洞仍可能被有动机的攻击者利用。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计