🟠 高危 | CVE-2026-59248 — Allocation of resources without limits vulnerabili...
🟠 《高危安全漏洞:CVE-2026-59248》
CVSS 评分: 高危(8.7) 状态: Received 发布时间: 2026-07-28
漏洞简介
CVE-2026-59248 是一个存在于 ninenines cowlib 库中的资源分配无限制漏洞(CWE-770)。该漏洞允许一个未经身份验证的远程 HTTP/2 或 HTTP/3 对等端(peer)通过发送特制的数据包,耗尽目标服务器(或客户端)的内存,从而引发拒绝服务(Denial of Service, DoS)。
漏洞的核心问题位于 HPACK 和 QPACK 前缀整数解码器函数 cow_hpack_common:dec_big_int/3 中,该函数定义在 src/cow_hpack_common.hrl 文件内。该函数被以下两个模块调用:
cow_hpack:decode/2(位于src/cow_hpack.erl)cow_qpack:decode_field_section/3(位于src/cow_qpack.erl)
解码器在处理前缀整数时,会持续读取后续的八位字节(continuation octets),直到遇到一个高位(high bit)为 0 的字节为止。在每次读取过程中,解码器会执行 Int + (Value bsl M) 运算,其中移位量 M 每处理一个八位字节增加 7。然而,该解码器没有对以下任何一项进行限制:
- 后续八位字节的数量
- 最终生成的位宽(bit width)
- 最终解码出的整数值
因此,解码器会无条件地消费对等端提供的任意长度的编码数据。
由于 Erlang 中的整数是不可变的(immutable),每次执行 Value bsl M 以及每次累加器更新时,都会分配一个全新的 bignum(大整数),其数字宽度(digit width)会随着已处理的八位字节数量线性增长。在整个解码过程中,临时 bignum 数字的物化(transient bignum digit materialization)开销与编码长度的平方成正比。
具体攻击场景:一个包含最大 HPACK 索引表示(maximal HPACK indexed representation)的 HTTP/2 HEADERS 帧,配合一个 CONTINUATION 帧(在 Cowboy 默认的 max_frame_size_received 设置下),可以强制触发数百兆字节的临时内存分配和垃圾回收(garbage-collection)开销,直到最终生成的头部表索引(header-table index)因无效而被拒绝。重复或并发连接会进一步加剧内存压力,最终导致 Erlang 虚拟机(VM)内存耗尽。
影响范围
该漏洞影响 cowlib 库的以下版本:
- 从 2.0.0 开始,至 2.19.0 之前的所有版本(即 >= 2.0.0 且 < 2.19.0)。
Cowlib 是以下组件的底层 HTTP 解析器:
- Cowboy(Erlang 高性能 HTTP 服务器)
- RabbitMQ 的管理插件(Management Plugin)
- 其他基于 Erlang 和 Elixir 的 HTTP/2 和 HTTP/3 服务器及客户端
因此,任何暴露的、接受来自不可信对等端的 HPACK 或 QPACK 数据的端点,都可能受到该漏洞的影响。
风险分析
- 攻击向量:网络远程攻击(AV:N),无需身份验证(PR:N),无需用户交互(UI:N)。
- 攻击复杂度:低(AC:L),攻击者只需构造特制的 HTTP/2 或 HTTP/3 数据帧即可触发。
- 影响后果:
- 机密性(Confidentiality):无影响(VC:N)
- 完整性(Integrity):无影响(VI:N)
- 可用性(Availability):高影响(VA:H)。攻击者可以通过耗尽服务器或客户端的内存,导致服务崩溃或无法响应合法请求,造成拒绝服务。
- CVSS 评分:根据 CVSS:4.0 向量,该漏洞的基础分值为 7.5(高危),主要威胁在于可用性损失。
总结:该漏洞是一个典型的“资源耗尽”型拒绝服务漏洞,利用 HPACK/QPACK 解码器在处理超长前缀整数时缺乏限制的缺陷,通过构造少量精心设计的网络帧即可触发大量内存分配,最终导致目标系统内存耗尽。由于 cowlib 被广泛用于 Erlang/Elixir 生态中的 HTTP/2 和 HTTP/3 实现,影响面较广。建议受影响的用户尽快升级至 cowlib 2.19.0 或更高版本。
🔍 技术细节
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-59248 |
| CVSS 评分 | 8.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-770 |
| 发布时间 | 2026-07-28 |
| 最后更新 | 2026-07-28 |
| 状态 | Received |
| 数据来源 | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db |