Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify libsoup service behind HTTP/1 proxy
-
DeliveryCraft request with two conflicting Content-Length headers
-
ExploitTransmit to front-end intermediary
-
InstallProxy honors first Content-Length, forwards request
-
C2libsoup honors second Content-Length, reads overflow bytes
-
ExecuteOverflow bytes interpreted as new smuggled request
-
ImpactUnauthorized request processed by backend
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 | Successful exploitation requires a two-tier HTTP/1 deployment where libsoup acts as the backend HTTP processor behind a reverse proxy, load balancer, or CDN that parses Content-Length headers differently - specifically, where the intermediary and libsoup disagree on which Content-Length value takes precedence when multiple are present. The CVSS AC:H metric directly encodes this constraint. Direct connections to libsoup without an intermediary do not produce a smuggling condition, as there is no second parser to desynchronize against. No authentication is required (PR:N), and no user interaction is needed (UI:N). The vulnerability is limited to HTTP/1 header processing; HTTP/2 connections, which frame body length differently, are not affected by this specific code path. Exploitation is not automatable per SSVC (Automatable: no), further indicating the need for precise architectural preconditions. |
| Impact | Multiple signals converge on low real-world priority. CVSS 3.7 reflects AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N - the High attack complexity (AC:H) is the critical limiting factor, requiring a specific two-tier architecture where an HTTP/1 intermediary (reverse proxy or load balancer) sits in front of a libsoup-backed service and the two components disagree on Content-Length interpretation. EPSS at 0.03% (8th percentile) indicates near-zero observed exploitation pressure. SSVC confirms exploitation: none, automatable: no, technical impact: partial - aligning with the CVSS assessment. The vulnerability is not in CISA KEV and no public exploit code has been identified. The integrity-only impact (I:L, C:N, A:N) further limits blast radius; this is a request injection path, not a code execution primitive. Real-world risk is low unless libsoup applications are deployed behind HTTP/1 proxies without header normalization - an uncommon production pattern for a desktop-oriented HTTP library. |
| Exploit ScenarioDerived | An attacker targeting an application where a front-end reverse proxy (e.g., nginx or HAProxy) forwards HTTP/1 requests to a libsoup-backed backend crafts a request containing two Content-Length headers with different values - for example, Content-Length: 0 followed by Content-Length: 44. The front-end proxy consumes the request body based on the first value (0 bytes), while libsoup reads 44 bytes from what the proxy considers the start of the next pipelined request, effectively treating the attacker-supplied data as a new HTTP request. This allows the attacker to inject an unauthorized request into the server's processing queue, potentially targeting other users' sessions or bypassing path-based access controls enforced only at the proxy layer. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 24, 2026
HTTP request smuggling in libsoup's header parsing enables unauthenticated remote attackers to inject malformed requests containing multiple conflicting Content-Length headers, potentially bypassing security controls or poisoning shared connection state in two-tier deployments. The flaw resides in soup_message_headers_append_common() within libsoup/soup-message-headers.c, which blindly appends header values without validating for duplicate or contradictory Content-Length fields - a direct violation of RFC 7230. No active exploitation has been confirmed (not in CISA KEV), EPSS stands at 0.03% (8th percentile), and SSVC rates exploitation as none with partial technical impact, placing this firmly in the low-urgency tier despite its network-accessible attack vector.
RemediationAI
An upstream fix has been submitted as GitLab merge request !513 at https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/513; however, no tagged patched release version has been independently confirmed from available data - monitor https://access.redhat.com/security/cve/CVE-2026-2708 and Red Hat Bugzilla #2440743 (https://bugzilla.redhat.com/show_bug.cgi?id=2440743) for RHEL package updates and apply them when published. As a compensating control for deployments where libsoup services sit behind a reverse proxy, configure the proxy to normalize or reject requests containing multiple Content-Length headers before forwarding - nginx's proxy_pass with default settings normalizes headers, while HAProxy can be configured with http-request deny if content-length header count gt 1; this introduces a small risk of rejecting edge-case legitimate traffic. If libsoup is used in a direct client-to-server capacity without an intermediary, the smuggling vector is unexploitable and no immediate action is required beyond applying the patch when available.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
libsoup is GNOME's HTTP client/server library, packaged across Red Hat Enterprise Linux 6 through 10 (cpe:2.3:a:red_hat:red_hat_enterprise_linux_*). The vulnerability originates in soup_message_headers_append_common() in libsoup/soup-message-headers.c, which appends every received header value without deduplicating or rejecting headers that carry conflicting semantic meaning. RFC 7230 §3.3.2 mandates that servers reject requests containing more than one Content-Length header with differing values as malformed. When libsoup silently accepts both, the length ambiguity creates an inconsistent interpretation between any upstream reverse proxy (which may honor the first Content-Length) and libsoup itself (which may honor the last). This is the classic CWE-444 (Inconsistent Interpretation of HTTP Requests - HTTP Request Smuggling) root cause: desynchronization between two HTTP processors parsing the same byte stream.
Know when Red Hat Enterprise Linux 10 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
S:C reflects smuggling impact on other users' requests; C:L added as smuggled requests may expose cross-user data; AC:H retained for mandatory two-tier proxy architecture.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
A request smuggling vulnerability exists in libsoup's HTTP/1 header parsing logic. The soup_message_headers_append_common() function in libsoup/soup-message-headers.c unconditionally appends each header value without validating for duplicate or conflicting Content-Length fields. This allows an attacker to send HTTP requests containing multiple Content-Length headers with differing values.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
Affected Products (CPE)NVD
More in Red Hat Enterprise Linux 10
View allHeap corruption via double-free in 389-ds-base's LDAP control parsing allows an unauthenticated remote attacker to crash
Remote code execution in Cockpit's web interface allows unauthenticated attackers to execute arbitrary commands on the h
Remote code execution in Samba's printing subsystem allows remote attackers to inject arbitrary shell commands via craft
Ghostscript can execute arbitrary shell commands with the privileges of its process when it renders a crafted PostScript
Use-after-free in librsvg during rendering of crafted SVG documents with nested XInclude directives and duplicate entity
A signed integer overflow vulnerability exists in the libtiff library's putcontig8bitYCbCr44tile function that leads to
The system CA trust store shipped in Red Hat's ca-certificates RPM packages includes eMudhra root authorities that signe
Authentication bypass in 389 Directory Server (shipped as Red Hat Directory Server 11-13 and within RHEL 6-10) lets remo
Remote code execution and privilege escalation in HPLIP (HP Linux Imaging and Printing) affects the hpcups print filter
Unauthenticated privilege escalation in FreeIPA (Red Hat Identity Management) allows a remote attacker to gain genuine a
A heap buffer overflow exists in libsoup's WebSocket permessage-deflate compression path: when a very large outbound mes
Remote code execution in libarchive on 32-bit systems allows unauthenticated attackers to execute arbitrary code via spe
EUVD-2026-25306
GHSA-2m77-r9w3-w44v
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB