CVE-2026-42582CVE-2026-42582 是 Netty 网络应用框架中的一个高危安全漏洞。Netty 广泛用于高性能网络服务器开发,该漏洞影响其 HTTP/3 协议栈的实现。在 4.2.13.Final 版本之前,QPACK 解码器在处理头部块时存在逻辑缺陷:它在验证压缩数据流中是否包含足够字节数之前,就根据输入的长度值尝试分配内存。攻击者可以利用协议允许的编码特性,用极小的数据包声明极大的长度值,触发服务器分配过量内存,从而导致资源耗尽和服务不可用。
该漏洞的根源在于 Netty 框架对 HTTP/3 QPACK 头部字段的解码逻辑中存在边界检查缺失。具体受影响的代码路径位于 `io.netty.handler.codec.http3.QpackDecoder` 类的 `decodeHuffmanEncodedLiteral` 方法内部。在处理非霍夫曼编码的字面量字符串时,解码器首先从输入流中读取一个整数作为字符串的长度 `length`。随后,代码立即使用该长度值调用 `new byte[length]` 在 Java 堆中分配内存空间。关键的安全缺陷在于,内存分配操作发生在了对输入数据有效性验证之前,即代码未在分配前检查 `length` 是否小于等于输入缓冲区中实际可读的字节数 `in.readableBytes()`。由于 HTTP/3 协议的 QPACK 编码机制允许使用紧凑的整数编码方式,攻击者可以构造包含恶意长度字段的特制数据包,例如将长度设置为 Integer.MAX_VALUE,而该数值在传输层仅需极少的字节即可表示。当 Netty 服务器解析此类恶意数据包时,会尝试分配巨大的内存块,导致 JVM 堆内存迅速耗尽,抛出 OutOfMemoryError 异常,最终导致服务崩溃或完全停止响应,形成拒绝服务攻击。