uhttpd CVE-2026-55614
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOpen keep-alive connection to uhttpd
-
DeliverySend POST with Transfer-Encoding: Chunked
-
ExploitEmbed smuggled request in unread body
-
ExecutionServer reparses body bytes as new request
-
ImpactDesynchronize connection / smuggle request
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 a keep-alive (persistent) connection on which the attacker sends a Transfer-Encoding header with a mixed-case transfer-coding token (e.g. 'Chunked') plus a chunked-shaped body and a pipelined follow-on request. No non-default server configuration, authentication, or user interaction is needed - the flaw is in uhttpd's default header-parsing path, so default deployments that accept POST bodies over keep-alive are affected. Limiting factors: the attacker must control raw request framing (a direct client, not forced through a normalizing proxy that rewrites the header), the connection must be keep-alive rather than Connection: close, and the resulting impact is request smuggling / boundary desynchronization (integrity) rather than direct disclosure or denial of service per the supplied vector. |
| Impact | This is a genuine but moderate-priority issue rather than a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a remote, unauthenticated, low-complexity flaw with no special attack requirements, and the source diff confirms the mechanism precisely: client_parse_header() compares the Transfer-Encoding value with case-sensitive strcmp(val, "chunked"), so a mixed-case 'Chunked' token bypasses chunked framing and leaves the POST body unread on a keep-alive connection. The official CVSS 4.0 score is 6.9 with impact limited to VI:L (low integrity, no confidentiality or availability), whereas the GHSA advisory estimates CVSS 3.1 ~8.1 (High) - these two figures conflict and should be treated as a known discrepancy; the lower NVD-style 4.0 figure is the one tied to the supplied vector. No EPSS score was provided and the input shows no CISA KEV listing, so there is no evidence of active exploitation; the vuln.today decision label is 'this_month', consistent with a serious-but-not-urgent classification. A detailed, reproducible PoC narrative is published in the GHSA advisory, which raises likelihood of exploitation above a purely theoretical flaw. Net: prioritize patching within the normal monthly cycle given the easy remote trigger and the broad OpenWrt footprint, but the impact is request desynchronization rather than direct code execution or data compromise. |
| Exploit ScenarioDerived | An attacker opens a single keep-alive TCP connection to a uhttpd server and sends a POST carrying 'Transfer-Encoding: Chunked' (capital C) with a chunked body, immediately followed by a pipelined request. Because the mixed-case token is not matched as chunked, r->transfer_chunked stays false, the body is never consumed, and the server reparses the leftover body bytes as a second HTTP request - enabling request smuggling and connection boundary desync. A public PoC reference with reproduction steps exists in the GHSA advisory, though it is not verified as working exploit code; the low attack complexity and lack of required privileges or user interaction make the trigger straightforward. |
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's uhttpd affects unpatched repository snapshots that predate the upstream fixes, allowing an unauthenticated remote attacker who controls raw request framing over a keep-alive connection to send a mixed-case Transfer-Encoding token such as 'Chunked' and have the chunked POST body left unread, so leftover bytes are parsed as a follow-on request. The result is boundary desynchronization with integrity impact rather than direct confidentiality or availability loss; default deployments that accept POST bodies over persistent connections are in scope. No CISA KEV listing or confirmed working exploit code is identified in the supplied data, although the upstream advisory includes reproduction steps; the supplied CVSS 4.0 score is 6.9 and the assessed CVSS 3.1 base is 5.3, aligning with a this-month priority.
RemediationAI
Apply both upstream fixes, commits ae015e099986ceace44975cb69629841a2d58d37 and 6641b050e5f7c7fd9ae92e8e119d6d6dfc6e9837; the latter changes the Transfer-Encoding comparison to strcasecmp and rejects unsupported transfer codings with 501 Not Implemented. The advisory currently states 'fixed in: not yet patched,' so no patched release version is confirmed in the provided data-build or backport the commits into the deployed uhttpd and verify that mixed-case 'Chunked' requests are rejected or handled as chunked. No vendor-documented workaround is provided; because exploitation requires the attacker to control raw framing on a keep-alive connection, restricting direct untrusted access or placing a normalizing front-end proxy that rejects or normalizes mixed-case Transfer-Encoding reduces exposure but does not substitute for the upstream fix.
Affected ProductsAI
The affected product is OpenWrt uhttpd, specifically unpatched repository snapshots in which client.c still uses strcmp for the Transfer-Encoding value. The GitHub advisory records the vulnerable range as versions before 1b624f8f814ed568608d756512892416e0431d77 and lists 'fixed in: not yet patched'; the upstream fixes are commits ae015e099986ceace44975cb69629841a2d58d37 and 6641b050e5f7c7fd9ae92e8e119d6d6dfc6e9837, and no tagged release version is confirmed in the supplied data. See https://github.com/openwrt/uhttpd/security/advisories/GHSA-mcfg-c4r7-pjpf.
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 is OpenWrt's small HTTP server. In client_parse_header() in client.c, header names are lowercased, but the Transfer-Encoding value was compared with case-sensitive strcmp(val, 'chunked'). RFC 9112 section 6.1 defines transfer-coding tokens as case-insensitive, so a value like 'Chunked' was accepted without setting r->transfer_chunked; the unread body on a keep-alive connection could then be interpreted as the next request. The upstream fix uses strcasecmp and, for any coding it does not implement, returns 501 instead of silently ignoring it, closing the CWE-444 inconsistent-interpretation gap. The advisory's reproduction uses a POST with 'Transfer-Encoding: Chunked', a chunked body, and a pipelined GET on one keep-alive TCP connection.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Remote, no privileges or interaction, simple mixed-case header trigger (AV:N/AC:L/PR:N/UI:N); impact is request smuggling affecting request integrity only, so I:L with C:N/A:N and scope unchanged.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
uhttpd is a small HTTP server. In unpatched repository snapshots, client_parse_header() in client.c lowercases header names but compares the Transfer-Encoding value to chunked using case-sensitive strcmp. A mixed-case transfer-coding token is accepted without enabling r->transfer_chunked, despite transfer-coding tokens being case-insensitive. On a keep-alive connection, the chunked POST body is left unread and request-shaped body bytes are parsed as another HTTP request, permitting HTTP request smuggling and boundary desynchronization. Commits ae015e099986ceace44975cb69629841a2d58d37 and 6641b050e5f7c7fd9ae92e8e119d6d6dfc6e9837 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