OpenWrt uhttpd
CVE-2026-55612
LOW
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOpen keep-alive connection to uhttpd
-
DeliverySend chunked POST with oversized chunk-length line
-
ExploitEmbed complete HTTP request in body bytes
-
ExecutionServer resets state and reparses body
-
ImpactSmuggled request processed, boundaries desynchronized
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 the uhttpd instance to accept HTTP keep-alive (persistent) connections and to process chunked transfer-encoding POST bodies, which is default behavior in affected unpatched repository snapshots. The attacker must send a chunked POST containing a valid initial chunk and then an invalid chunk-length line whose value exceeds INT_MAX (e.g. hexadecimal 80000000) to trigger the invalid-chunk branch in client_poll_post_data(), with a byte-aligned complete second HTTP request embedded in the remaining body. No authentication is needed (CVSS PR:N). Limiting factors: AC:H reflects that the attacker must precisely frame the embedded request so it aligns as a clean second request after the state reset; and in practice uhttpd commonly serves a router/device management interface that is not internet-exposed by default, so real-world reach is often confined to the LAN or to deployments where uhttpd shares a connection path with a proxy or cache. Affected: unpatched snapshots before the fix commits; fixed by setting request.connection_close on the invalid-chunk path. |
| Impact | Signals conflict sharply and must be reconciled before prioritization. The supplied NVD CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N) yields only 3.7 (Low) and treats the flaw as a network-reachable, unauthenticated issue of high attack complexity with limited integrity impact and no confidentiality or availability impact; the GitHub Security Advisory (GHSA-p55c-rmhc-qfm5), by contrast, self-rates the same bug as High (~8.1) - a large, unresolved discrepancy that security teams should note rather than treat as settled. The vuln.today decision label is 'monitor', consistent with the low NVD score and with the absence of CISA KEV listing and any supplied EPSS probability (both EPSS and KEV data are simply not provided in the input, so exploitation likelihood cannot be quantified from these sources). There is no SSVC decision content beyond the 'monitor' label. On exploit maturity: the GHSA advisory contains concrete reproduction steps and a mechanism-level description, so a public PoC reference exists, but the input does not mark it as confirmed working exploit code - treat it as a documented technique, not a verified weaponized exploit. Net read: this is a genuine request-smuggling/desync defect with a clear root cause and confirmed fix, but AC:H plus the typical LAN-only exposure of uhttpd's management interface make widespread opportunistic exploitation unlikely; the practical ceiling depends heavily on whether a given uhttpd instance sits behind a shared proxy/cache or serves multiple clients. The NVD-vs-GHSA severity gap is the single most important caveat - do not present either score as authoritative without vendor confirmation. |
| Exploit ScenarioDerived | A remote attacker opens an HTTP keep-alive connection to an unpatched uhttpd instance and sends a chunked POST whose body contains a valid first chunk followed by an oversized chunk-length line (e.g. 80000000) that trips the invalid-chunk branch; the server clears its chunked/content-length state without draining or closing, then re-parses the attacker's embedded 'GET /target HTTP/1.1' as a second request on the same socket. This yields request-boundary desynchronization and smuggling, which is most impactful when uhttpd shares the connection path with a proxy, cache, or multiple clients. A public PoC reference with reproduction steps exists in the GHSA advisory; it is not verified as standalone working exploit code, and the high attack complexity (AC:H) reflects the precise framing the body must achieve. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
HTTP request smuggling in OpenWrt uhttpd allows remote attackers to have attacker-supplied body bytes parsed as a second request on the same keep-alive connection when an invalid chunk-length line, such as a value exceeding INT_MAX, causes client_poll_post_data() to reset content_length and transfer_chunked without draining the body or closing the connection. Affected are unpatched uhttpd repository snapshots and builds predating fix commits b78f518478794e16ba3568fc1258e40bf3e8eb3b and 34460b8211d676ef1b9f40d6b775c5e112933690. The assessed vector is AV:N/AC:H/PR:N/UI:N with low confidentiality and integrity impact; exploitation is constrained by the need to align the embedded request and by typical LAN-only exposure, and there is no CISA KEV entry or confirmed working exploit, although the public advisory provides reproduction steps.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed. Apply commits b78f518478794e16ba3568fc1258e40bf3e8eb3b and 34460b8211d676ef1b9f40d6b775c5e112933690, detailed in GHSA-p55c-rmhc-qfm5 at https://github.com/openwrt/uhttpd/security/advisories/GHSA-p55c-rmhc-qfm5; the advisory's fix is to set request.connection_close = true on the invalid-chunk-length path, or to drain all remaining buffered data before allowing keep-alive reuse. Because no tagged release containing the fix is independently confirmed and package data lists the fixed version as not yet patched, deployments that cannot apply the commits should disable HTTP keep-alive on uhttpd or force connection close when a chunk-length line is invalid, accepting reduced connection reuse and possible breakage for clients that send malformed chunked bodies. Limit exposure of the uhttpd management interface to trusted LANs or place it behind a proxy that normalizes chunked framing, since the assessment notes uhttpd is commonly not internet-facing by default. Prioritization should follow the supplied monitor decision label rather than treating this as an emergency.
Affected ProductsAI
Unpatched repository snapshots of OpenWrt uhttpd before fix commits b78f518478794e16ba3568fc1258e40bf3e8eb3b and 34460b8211d676ef1b9f40d6b775c5e112933690 are affected; the advisory package data lists the vulnerable range as versions below 1b624f8f814ed568608d756512892416e0431d77 and states the package is not yet patched in a tagged release. No CPE strings were provided in the input. The vendor advisory is GHSA-p55c-rmhc-qfm5 at https://github.com/openwrt/uhttpd/security/advisories/GHSA-p55c-rmhc-qfm5, and the fixing commits are at https://github.com/openwrt/uhttpd/commit/b78f518478794e16ba3568fc1258e40bf3e8eb3b and https://github.com/openwrt/uhttpd/commit/34460b8211d676ef1b9f40d6b775c5e112933690.
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
uhttpd parses chunked transfer-encoding in client_poll_post_data() in client.c. When a chunk-size line is invalid, such as a hexadecimal length exceeding INT_MAX (for example 80000000), the function consumes only that line, clears r->content_length and r->transfer_chunked, and does not drain the buffered body or set request.connection_close. The completion check therefore treats the chunked POST as finished, keep-alive processing returns to CLIENT_STATE_INIT, and leftover body bytes that are byte-aligned as a complete HTTP request are parsed and processed as another request on the same connection. The flaw class is CWE-444, inconsistent interpretation of HTTP requests leading to request smuggling and request-boundary desynchronization. The issue was introduced by commit b7c85a28 on 2013-01-03 and is fixed by commits b78f518478794e16ba3568fc1258e40bf3e8eb3b and 34460b8211d676ef1b9f40d6b775c5e112933690; the latter sets r->connection_close = true on the invalid-chunk path. The assessed AC:H reflects the framing precision needed to align the embedded request, and the trigger depends on keep-alive and chunked POST processing, which the assessment describes as default behavior in affected unpatched snapshots.
Know when Openwrt 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:H/PR:N/UI:N/S:U/C:N/I:L/A:N
Network-reachable and unauthenticated (AV:N/PR:N); AC:H because the body must be precisely framed to align as a second request; smuggling permits request injection (I:L) and limited response/data exposure (C:L).
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
uhttpd is a small HTTP server. In unpatched repository snapshots, client_poll_post_data() in client.c consumes an invalid chunk-length line, such as a size exceeding INT_MAX, then clears r->content_length and r->transfer_chunked without draining the remaining body or setting request.connection_close. The completion check treats the chunked POST as finished and the keep-alive parser returns to CLIENT_STATE_INIT. Attacker-controlled body bytes aligned as a complete HTTP request are then parsed and processed as another request on the same connection, causing HTTP request smuggling and request-boundary desynchronization. Commits b78f518478794e16ba3568fc1258e40bf3e8eb3b and 34460b8211d676ef1b9f40d6b775c5e112933690 patch the issue.
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.
In wlan service, there is a possible out of bounds write due to improper input validation. Rated critical severity (CVSS
Stored cross-site scripting in OpenWrt's LuCI web interface lets an adjacent-network attacker inject executable HTML/Jav
An issue was discovered in OpenWrt 18.06.0 to 18.06.6 and 19.07.0, and LEDE 17.01.0 to 17.01.7. Rated high severity (CVS
An issue was discovered in OpenWrt libuci (aka Library for the Unified Configuration Interface) before 15.05.1 as used o
cgi_handle_request in uhttpd in OpenWrt through 18.06.1 and LEDE through 17.01 has unauthenticated reflected XSS via the
In wlan service, there is a possible out of bounds write due to an incorrect bounds check. Rated critical severity (CVSS
An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1
An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1
Remote privilege escalation in Android WLAN AP driver via packet injection.
In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es
In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es
In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es
NVD
CVE.org
EPSS
GitHub
Exploit-DB