资讯 OpenSSL 2026-08-25 公告:QUIC 畸形 INITIAL 包双重释放,EVP_Cipher() 空密文跳过 AEAD 校验

2026-09-10 21:03:00

OpenSSL 2026-08-25 公告:QUIC 畸形 INITIAL 包双重释放,EVP_Cipher() 空密文跳过 AEAD 校验

公告原文:

这一批里有两个需要优先处理:一个是 QUIC 服务端的双重释放,触发条件很低;另一个是 EVP_Cipher() 在空密文下跳过 AEAD tag 校验,属于完整性问题。

CVE-2026-18798:处理 INITIAL 包时双重释放 QRX

级别 Moderate,CWE-415。

代码路径很直接:QUIC 栈默认包处理器 port_default_packet_handler() 为了校验 INITIAL 包会创建一个 QRX(QUIC record layer RX)对象。校验通过后进入 channel(连接对象)创建流程,QRX 被传给 port_bind_channel();如果 port_bind_channel() 失败,它内部会释放这个 QRX。返回后 port_default_packet_handler() 发现失败,走到错误分支,把同一个 QRX 再释放一次。

触发不需要什么技巧,一个不符合 RFC 9000 的 INITIAL 包就够了:包携带的 DCID(destination connection ID)短于 8 字节时,port_bind_channel() 会直接跳到错误路径。

后果是堆破坏,通常表现为 QUIC 服务器进程终止,即 DoS。公告明确说明没有证据表明这个双重释放可用于远程代码执行。

FIPS 影响:无,QUIC 实现本身在 FIPS 模块边界之外。

受影响版本 4.0、3.6、3.5,不受影响 3.4、3.0、1.1.1、1.0.2。修复版本:4.0 → 4.0.2,3.6 → 3.6.4,3.5 → 3.5.8。

CVE-2026-75803:空密文下 AEAD 伪造

CWE-354(完整性校验值验证不当)。ADP 给出的 CVSS v3.1 主评分是 9.1 CRITICAL。

EVP_Cipher() 对 AEAD 算法相当于一次性加解密调用,正常路径是在解密后验证 AEAD tag。但对 AES-OCB 和 ChaCha20-Poly1305,当传入空密文时,tag 验证被跳过了。调用方如果依赖这次调用来校验 tag,就可能接受伪造消息。

FIPS 影响:无。4.0、3.6、3.5、3.4、3.0 的 FIPS 模块都不受影响,原因是这两个算法不是 FIPS 批准算法,也没有在 FIPS 模块里实现。

受影响版本范围比上面那个宽:4.0.0(4.0.2 之前)、3.6.0(3.6.4 之前)、3.5.0(3.5.8 之前)、3.4.0(3.4.7 之前)、3.0.0(3.0.22 之前)。

同批其余公告

  • CVE-2026-14456:QUIC 服务器 incoming channel 队列没有上限。服务端处理携带未知 DCID 的合法 INITIAL 包时,会不断分配并排队新的 incoming channel,内存持续增长。影响 4.0(4.0.2 之前)与 3.6(3.6.4 之前)。
  • CVE-2026-63072:CMS key unwrapping 堆缓冲区溢出(Moderate,4.0)。
  • CVE-2026-14457:RPK 服务器签名算法选择时会解引用一个缺失的证书。
  • CVE-2026-54874:为未来 epoch 缓存 DTLS 记录,导致内存占用过高(4.0、3.6、3.5)。
  • CVE-2026-63073:CMP 响应校验把不受信发送者的 DN 当作格式串使用。
  • CVE-2026-63074:CMP 缓存无限增长。
  • CVE-2026-63075:QUIC 仅 ACK 包被保留,可导致内存耗尽(4.0)。
  • CVE-2026-63076:CMP 服务器通过构造的 protectionAlg 触发非法指针解引用(4.0)。

运维动作

先确认手上的版本:

openssl version
# 需要更完整的信息
openssl version -a

然后区分暴露面,这两类判断逻辑不一样:

  • 仅 QUIC 受影响的洞(CVE-2026-18798、CVE-2026-14456、CVE-2026-63075,以及 DTLS 记录缓存的 CVE-2026-54874):只有进程启用了 QUIC 服务端或 DTLS 才落在攻击面上。不做 QUIC 服务端的话,这几个洞碰不到。
  • 调用 EVP_Cipher() 才受影响的洞(CVE-2026-75803):和是否用 QUIC 无关。只要有代码用 EVP_Cipher() 对 ChaCha20-Poly1305 或 AES-OCB 的空密文做解密,并且指望这次调用校验 tag,就在受影响范围内;3.0、3.4 分支同样中招。
  • CMS/CMP 相关(CVE-2026-63072、CVE-2026-63073、CVE-2026-63074、CVE-2026-63076):只在用到 CMS key unwrapping 或 CMP 客户端/服务端时成立。
  • 别把 FIPS 模块当成整体豁免:CVE-2026-75803 不影响 FIPS 模块是因为算法不在模块里;CVE-2026-18798 不影响 FIPS 是因为 QUIC 在边界外。

升级目标版本按分支对齐:

当前分支升级到
4.0.x4.0.2
3.6.x3.6.4
3.5.x3.5.8
3.4.x3.4.7
3.0.x3.0.22

升完再跑一次 openssl version 确认实际加载的库已经是目标版本。暂时不能升级时,先把暴露面收窄:QUIC 服务端限制可达来源,确认哪些服务真的需要走 CMS/CMP 路径,并关注 QUIC 进程是否有异常退出。

复制全文 生成海报 OpenSSL 安全 CVE 运维

推荐文章

程序员茄子在线接单