CVE-2026-42584Netty是一个异步事件驱动的网络应用框架,广泛用于开发高性能协议服务器和客户端。在4.2.13.Final和4.1.133.Final版本之前,HttpClientCodec在处理HTTP/1.1流水线请求时存在严重逻辑缺陷。当客户端连续发送GET和HEAD请求,且服务器返回103 Early Hints等中间响应时,由于代码对1xx响应的处理逻辑错误,导致响应队列错误地将HEAD请求与GET请求的200响应进行配对。这会导致HEAD请求处理器错误地跳过GET响应的实体内容读取,使得数据流偏移,进而导致后续响应解析错误,可能引发拒绝服务或数据完整性问题。
该漏洞源于Netty的HttpClientCodec类在处理入站响应和出站请求配对时的实现缺陷。在默认实现中,每当收到一个响应(包括1xx中间响应),代码会调用queue.poll()来获取对应的出站请求。具体的攻击场景如下:客户端通过流水线方式先发送GET请求,紧接着发送HEAD请求。服务器首先返回103 (Early Hints) 响应,随后返回包含GET请求实体的200响应,最后返回HEAD请求的200响应。问题在于,当收到103响应时,代码消耗了队列中的一个请求(GET);当收到第一个200响应时,代码再次消耗队列中的请求(HEAD)。这导致GET请求的实体数据被错误地关联给了HEAD请求。由于HTTP协议规定HEAD响应不应包含消息体,HEAD处理逻辑会跳过读取该响应体。因此,GET请求的实体字节残留在TCP流中未被读取。当下一个响应(针对HEAD的200)到达时,解析器会从错误的偏移量开始读取,导致解析混乱。这种状态不同步可能被攻击者利用来干扰HTTP通信。