Skip to main content

nghttpx CVE-2026-58055

| EUVDEUVD-2026-39975 MEDIUM
HTTP Request/Response Smuggling (CWE-444)
2026-06-28 VulnCheck GHSA-xrr7-82jr-v58x
6.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send HTTP/1.1 Upgrade request with Content-Length body
  2. Delivery
    nghttpx forwards ambiguous message on keep-alive backend connection
  3. Exploit
    Backend parser treats body as second HTTP request
  4. Execution
    Injected request processed by backend
  5. Persist
    Attacker's response placed in shared response queue
  6. Impact
    Legitimate client receives attacker-controlled or leaked response

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
Exploitation Conditions

Exploitation requires that nghttpx is operating as a reverse proxy (not the HTTP/2 client or server library modes) and that backend connections are pooled and reused via HTTP keep-alive - the default configuration for nghttpx in proxy mode. The attacker must be able to send arbitrary HTTP/1.1 requests to the nghttpx listening interface (typically port 443 or 80), which is generally network-accessible by design. The critical conditional factor is backend behavior: the backend HTTP server must resolve the parsing ambiguity introduced by the Upgrade + Content-Length combination in the attacker's favor - treating the body as a separate pipelined request rather than rejecting the malformed message. This condition limits exploitation to specific backend stacks. No authentication is required at the nghttpx proxy layer (PR:N). The attack does not require user interaction (UI:N). Exploitation is not possible against HTTP/2 or HTTP/3 upstream connections where the Upgrade mechanism is not applicable; the vulnerability is specific to the HTTP/1.1 backend downstream path in shrpx_http_downstream_connection.cc.

Impact

The CVSS 4.0 score of 6.3 (Medium) reflects the real-world complexity of exploitation: AC:H correctly captures that the attack succeeds only when the downstream backend resolves the parsing ambiguity in the attacker's favor - not all backends are vulnerable to this specific interaction. The PR:N/UI:N metrics confirm unauthenticated exploitation with no victim interaction required, which elevates urgency despite the moderate score. The SI:L on the subsequent system reflects cross-client response-queue poisoning, which can leak other users' session data. The availability of a public PoC (hosted on GitHub by 'bikini/exploitarium') meaningfully raises real-world exploitation probability beyond what the CVSS score alone suggests, though no CISA KEV listing confirms active mass exploitation at time of analysis. The attack is probabilistic rather than deterministic - it depends on backend HTTP parser behavior - making this a high-priority finding for deployments where nghttpx fronts backends known to be lenient parsers (e.g., older Apache httpd, some Java servlet containers). Deployments fronting strict parsers that reject ambiguous messages are partially shielded. EPSS data was not provided in the input; exploitation probability cannot be quantified beyond 'elevated due to public PoC.'

Exploit ScenarioDerived

An unauthenticated attacker sends a crafted HTTP/1.1 request to nghttpx bearing both an Upgrade header and a Content-Length body whose bytes spell out a malicious HTTP request (e.g., a GET to an admin endpoint). nghttpx forwards the ambiguous message onto an existing keep-alive connection to a backend that interprets the Content-Length body as a second, pipelined HTTP request. The backend processes the attacker's injected request and places the response into the shared queue, where it is delivered to a different legitimate client making a concurrent request - leaking that client's session data or serving attacker-controlled content as if it were a legitimate server response. A public PoC demonstrating this queue-poisoning primitive is available at https://github.com/bikini/exploitarium/tree/main/nghttp2-nghttpx-upgrade-queue-poison-poc.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 28, 2026

HTTP request/response smuggling in nghttpx (the reverse proxy component of nghttp2 through 1.69.0) allows unauthenticated remote attackers to poison shared backend keep-alive connections by crafting an HTTP/1.1 Upgrade request that simultaneously carries a Content-Length header and body. When nghttpx forwards this ambiguous message to a backend and re-adds Connection and Upgrade headers while passing Content-Length verbatim, a backend that resolves the parsing ambiguity in the attacker's favor treats the body as a separate, attacker-controlled HTTP request - enabling cross-client response-queue poisoning. A publicly available proof-of-concept exploit exists; no CISA KEV listing at time of analysis.

RemediationAI

The primary fix is to update nghttp2 to a version that includes upstream commit ab28105c4a0197da24f8bfc414bc116055249e1e (https://github.com/nghttp2/nghttp2/commit/ab28105c4a0197da24f8bfc414bc116055249e1e); a specific tagged release version is not confirmed in the available data - verify with the nghttp2 project release page. The VulnCheck advisory at https://www.vulncheck.com/advisories/nghttp2-nghttpx-http-request-response-smuggling-via-upgrade-request-with-content-length should be monitored for a formal version number. As a compensating control where patching is not immediately possible, configure nghttpx or an upstream WAF to block or reject HTTP/1.1 Upgrade requests that also carry a Content-Length header - this disrupts the specific ambiguous message construct and prevents the smuggling vector, with the trade-off that legitimate protocol upgrade flows using body data will also be rejected. Additionally, disabling connection reuse (keep-alive) for backend connections eliminates the queue poisoning surface entirely, at the cost of increased connection overhead and latency.

Affected VersionsENISA

nghttp2 0 ≤1.69.0

Affected Packages

euvd nghttp2 no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

nghttpx is the reverse proxy binary shipped with the nghttp2 library (cpe:2.3:a:nghttp2:nghttp2:*:*:*:*:*:*:*:*), which provides HTTP/1.1 and HTTP/2 proxying. The vulnerability is rooted in CWE-444 (Inconsistent Interpretation of HTTP Requests), a class of flaws where an intermediary and a backend parse the same byte stream differently. The specific trigger is the HTTP/1.1 protocol upgrade mechanism: a client sends an Upgrade request to switch protocols, but also includes a Content-Length header with a body. RFC 7230 treats the combination as ambiguous - the body could belong to the upgrade handshake or be interpreted as the start of a new pipelined request. nghttpx failed to block or strip this body before forwarding onto a reusable keep-alive backend connection, and simultaneously re-added the Connection and Upgrade hop-by-hop headers. The commit diff (ab28105c) reveals the fix required: adding a blocked_request_buf guard in can_detach_downstream_connection() to prevent connection reuse while an Upgrade body remains unprocessed, introducing should_block_request_body() logic that holds the body until the backend confirms the upgrade, rejecting CONNECT requests carrying Content-Length with HTTP 400, and deferring blocked buffer processing until after the backend response is received via process_blocked_request_buf_on_response().

Know when Nghttp2 gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Network-accessible, no auth required, but AC:H because backend must misparse the ambiguous message; scope changes as cross-client response poisoning affects other users.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
SUSE 5.4 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
Red Hat 5.4 MEDIUM

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

1
CVSS changed
Jun 28, 2026 - 02:22 NVD
5.4 (MEDIUM) 6.3 (MEDIUM)

DescriptionCVE.org

nghttp2's nghttpx proxy through 1.69.0 forwards an HTTP/1.1 Upgrade request that also carries a Content-Length header and body onto reusable keep-alive backend connections, re-adding the Upgrade and Connection headers while passing Content-Length verbatim. A backend that resolves the resulting ambiguous message in the attacker's favor enables HTTP request/response smuggling and cross-client response-queue poisoning.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
popular HTTP/2 library with proxy component used in cloud infra
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment MSRC Vendor CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Vendor StatusVendor

Debian

Bug #1140917
nghttp2
Release Status Fixed Version Urgency
bullseye vulnerable 1.43.0-1+deb11u1 -
bullseye (security) vulnerable 1.43.0-1+deb11u3 -
bookworm vulnerable 1.52.0-1+deb12u2 -
bookworm (security) vulnerable 1.52.0-1+deb12u3 -
trixie vulnerable 1.64.0-1.1 -
trixie (security) vulnerable 1.64.0-1.1+deb13u1 -
forky, sid vulnerable 1.69.0-1 -
(unstable) fixed (unfixed) -

SUSE

Severity: Moderate
Product Status
Container suse/sl-micro/6.0/baremetal-os-container:2.1.3-6.205 Container suse/sl-micro/6.0/base-os-container:2.1.3-7.172 Container suse/sl-micro/6.0/kvm-os-container:2.1.3-6.182 Container suse/sl-micro/6.0/rt-os-container:2.1.3-7.200 Container suse/sl-micro/6.0/toolbox:13.2-9.133 Container suse/sl-micro/6.1/baremetal-os-container:2.2.1-7.138 Container suse/sl-micro/6.1/base-os-container:2.2.1-5.155 Container suse/sl-micro/6.1/kvm-os-container:2.2.1-5.158 Container suse/sl-micro/6.1/rt-os-container:2.2.1-5.152 Image SL-Micro Image SL-Micro-Base Image SL-Micro-Base-RT Image SL-Micro-Base-RT-SelfInstall Image SL-Micro-Base-RT-encrypted Image SL-Micro-Base-SelfInstall Image SL-Micro-Base-encrypted Image SL-Micro-Base-qcow Image SL-Micro-Default Image SL-Micro-Default-SelfInstall Image SL-Micro-Default-encrypted Image SL-Micro-Default-qcow Affected
Container suse/sle-micro-rancher/5.3:latest Container suse/sle-micro-rancher/5.4:5.4.4.5.146 Container suse/sle-micro/5.3/toolbox:16.3-6.11.249 Container suse/sle-micro/5.4/toolbox:16.3-5.19.250 Container suse/sle-micro/5.5/toolbox:16.3-3.12.159 Container suse/sle-micro/5.5:2.0.4-5.8.52 Container suse/sle-micro/base-5.5:2.0.4-5.8.293 Container suse/sle-micro/kvm-5.5:2.0.4-3.5.565 Container suse/sle-micro/rt-5.5:2.0.4-4.5.645 Affected
Container suse/sles/16.0/toolbox:latest Affected
SUSE Linux Enterprise Desktop 15 SP7 SUSE Linux Enterprise High Performance Computing 15 SP7 SUSE Linux Enterprise Module for Basesystem 15 SP7 SUSE Linux Enterprise Server 15 SP7 SUSE Linux Enterprise Server for SAP Applications 15 SP7 Fixed
SUSE Linux Enterprise Micro 5.3 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy