CVE-2026-55613
MediumCVSS 6.9Exploitation Probability (EPSS)
Low risk34th percentile - higher than 34% of all known CVEs
Summary
In unpatched uhttpd repository snapshots, `uh_ubus_data_send()` can desynchronize HTTP request boundaries when a `POST /ubus` JSON body arrives in multiple TCP segments. The unread body suffix is then processed as a new request on the same keep-alive connection.
Risk Assessment
HTTP request smuggling is possible, potentially bypassing security controls or triggering unexpected requests. The risk affects deployments with ubus enabled, including the default OpenWrt configuration.
Recommendation
Apply the patches from commits 7b1bec45826bd78c8afc993435bdc0f1df2fe399 and b2285de129b9adc8b12f84f9a27c16c21f2b57a5, or upgrade to a version containing these changes.
Other vulnerabilities in uhttpd
See all- CVE-2026-63586Critical
The web-based management interface uses a modified uhttpd server with CGI shell scripts. The HTTP Basic Authentication username, taken directly from the Authorization header without sanitization, is inserted into a shell command string executed via the system() function. By submitting a specially crafted username containing shell metacharacters, an unauthenticated attacker with network access to the device can escape the command context and execute arbitrary commands with root privileges.
- CVE-2026-55614Medium
In unpatched uhttpd repository snapshots, `client_parse_header()` compares the `Transfer-Encoding` value to `chunked` case-sensitively, although transfer-coding tokens are case-insensitive. A mixed-case token is accepted without enabling chunked handling, allowing HTTP request smuggling on keep-alive connections.
- CVE-2026-55612Low
uhttpd is a small HTTP server. In unpatched repository snapshots, client_poll_post_data() in client.c consumes an invalid chunk-length line (e.g., a size exceeding INT_MAX), then clears r->content_length and r->transfer_chunked without draining the remaining body or setting request.connection_close. 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.
Original NVD description (English source)
uhttpd is a small HTTP server. In unpatched repository snapshots, `uh_ubus_data_send()` in `ubus.c` can desynchronize HTTP request boundaries when a `POST /ubus` JSON body arrives in multiple TCP segments. An initial segment completing a JSON object sets `du->jsobj`; a later segment takes the existing-object parse-error path and returns zero bytes consumed. The caller neither drains the remaining declared `Content-Length` nor sets `connection_close`. An HTTP request embedded in the unread body suffix is consequently processed as a new request on the same keep-alive connection. The reported reproducer returned a JSON-RPC parse error followed by a second HTTP response. This application-layer body-handler flaw is distinct from Transfer-Encoding header case handling and chunk-length state reset, and affects deployments enabling ubus, including the default OpenWrt configuration and potential proxy/CDN deployments. Repository patches 7b1bec45826bd78c8afc993435bdc0f1df2fe399 and b2285de129b9adc8b12f84f9a27c16c21f2b57a5 address this issue.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

