Skip to main content

OpenWrt uhttpd EUVDEUVD-2026-114522

| CVE-2026-55613 MEDIUM
HTTP Request/Response Smuggling (CWE-444)
2026-10-30 security-advisories@github.com
6.9
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Open keep-alive connection to /ubus
  2. Delivery
    Send POST with split JSON body
  3. Exploit
    Complete {} in first TCP segment
  4. Execution
    Later segment hits parse-error zero-consume desync
  5. Persist
    Unread body suffix parsed as new request
  6. Impact
    Smuggled request served across boundary

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

Requires the ubus endpoint to be enabled and the /ubus URL reachable - this is the default in standard OpenWrt deployments. The attacker sends a POST /ubus with Content-Type: application/json and a Content-Length spanning a '{}' prefix plus a smuggled HTTP request suffix, and must control TCP segmentation so the '{}' completes in one segment and the remainder arrives in a later segment on a keep-alive connection; this segmentation is trivially controllable by a direct attacker. No authentication is required (PR:N) and no user interaction is needed. Limiting factors: the flaw only materially crosses a security boundary when uhttpd is behind a reverse proxy or CDN that reuses the connection - against uhttpd directly the smuggled request is processed as the attacker's own with little gain; ubus must be enabled (default); and the keep-alive connection must be reused. Updating to the patched repository commits is the fix stated by the vendor.

Impact

This is a genuine but moderate-priority issue, not an emergency. The CVSS 4.0 base is 6.9 (the GHSA independently estimates CVSS 3.1 ~5.9, medium), and the vuln.today Decision label is 'this_month' - meaning remediate within a normal patch window rather than immediately. The signals are internally consistent: attack vector is network (AV:N), complexity is low (AC:L - the attacker fully controls TCP segmentation and the ~100ms pause; this is not a race or an attacker-uncontrolled timing condition), no privileges (PR:N) and no user interaction (UI:N) are needed, but the technical impact is limited to request-integrity (CWE-444 HTTP request smuggling), with no confidentiality or availability impact in the supplied vector. No EPSS score and no CISA KEV entry are present in the input, so there is no evidence of active exploitation. A PoC reference exists - the GHSA documents exact reproduction steps and the reporter states they hold a complete ~130-line Python PoC - but it is attached to an email and is not verified as publicly available working exploit code. The real-world danger is amplified mainly when uhttpd sits behind a reverse proxy or CDN, where a smuggled request can cross a user/security boundary; against uhttpd directly the smuggled request is processed as the attacker's own and the impact is minimal. Note one data conflict to verify: the description states repository patch commits already address the issue, while the GHSA package field reads 'fixed in: not yet patched', implying the fix commits may not yet be in a tagged OpenWrt release - confirm release status with the vendor.

Exploit ScenarioDerived

An attacker opens a keep-alive connection to a uhttpd instance with ubus enabled and sends a POST /ubus request whose Content-Length covers both a complete '{}' JSON object and a trailing smuggled 'GET / HTTP/1.1' request. They deliver the '{}' in the first TCP segment, pause ~100ms, then send the remainder; uhttpd emits a JSON-RPC parse error, consumes zero further bytes, fails to drain the body or close the connection, and processes the smuggled suffix as a second HTTP request. Reproduction steps are documented publicly in the GHSA and the reporter states a full PoC script exists, though it is not published; impact is greatest when uhttpd is fronted by a reverse proxy or CDN.

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

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

Alert me

AnalysisAIv1 – Oct 30, 2026

HTTP request smuggling in OpenWrt's uhttpd allows a remote attacker to desynchronize request boundaries on a keep-alive connection by delivering the JSON body of a POST /ubus across multiple TCP segments, so the unread body suffix is parsed as a brand-new request and the server emits two responses for one exchange (a JSON-RPC parse error followed by the smuggled request's response). The defect is in the application-layer body handler uh_ubus_data_send() in ubus.c and affects unpatched repository snapshots; the /ubus endpoint is enabled in the default OpenWrt configuration, and the impact matters most where uhttpd is deployed behind a reverse proxy or CDN that reuses backend connections. Reported severity is CVSS 4.0 6.9 (the independent assessment uses CVSS 3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N, integrity-only with a scope change), the reporter described a Python PoC script but it is not verified as working, generally available exploit code, there is no CISA KEV entry, and the issue is fixed in upstream repository commits rather than a confirmed tagged release.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - apply repository commits 7b1bec45826bd78c8afc993435bdc0f1df2fe399 (https://github.com/openwrt/uhttpd/commit/7b1bec45826bd78c8afc993435bdc0f1df2fe399) and b2285de129b9adc8b12f84f9a27c16c21f2b57a5 (https://github.com/openwrt/uhttpd/commit/b2285de129b9adc8b12f84f9a27c16c21f2b57a5), the first of which sets cl->request.connection_close = true in the ubus parse-error path so the unread Content-Length suffix cannot be reinterpreted as a new request; the advisory's alternative is to have uh_request_done() drain any remaining body bytes when content_length > 0, and the advisory states updating to the patched commits is the fix. Because no tagged release is confirmed, operators on packaged OpenWrt should track their distro backport rather than assume the shipped binary is fixed; verify by re-running the two-response reproducer against the patched build. Where an immediate rebuild is not possible, the exposure is bounded by the documented prerequisites: the flaw requires the /ubus URL to be reachable, so removing ubus from the build or restricting /ubus to trusted management networks removes the trigger at the cost of losing the JSON-RPC/ubus web interface, and fronting uhttpd with a proxy or CDN that does not reuse backend keep-alive connections for /ubus reduces the chance that a desynchronized suffix is attributed to another client - both are containment measures only, not substitutes for the commits.

Affected VersionsENISA

uhttpd < 7b1bec45826bd78c8afc993435bdc0f1df2fe399

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 the small HTTP server shipped with OpenWrt and many embedded router firmwares; when built with ubus support it exposes a POST /ubus endpoint that speaks JSON-RPC over HTTP and hands request bodies to uh_ubus_data_send() in ubus.c. That handler keeps parser state in du->jsobj: if an initial TCP segment completes a JSON object, jsobj becomes non-NULL, and when a later segment for the same body arrives the function takes its existing-object parse-error path, emits a JSON-RPC parse error and returns zero bytes consumed. The caller neither drains the remainder of the declared Content-Length nor sets cl->request.connection_close, so the still-unread body suffix is interpreted as the start of the next request on the same persistent connection. This is the classic CWE-444 dual-parser/desync class: two components disagree about where a message ends, and the resulting boundary confusion produces a smuggled request. The advisory explicitly distinguishes it from two earlier uhttpd reports - Transfer-Encoding header case sensitivity in HTTP header parsing and chunk-length state reset in chunked transfer-coding handling - because this one is purely an application-layer body-handler flaw reachable over plain JSON POSTs. Attack prerequisites come from the assessed vector rather than the metrics alone: ubus must be enabled and /ubus reachable (the default), the attacker must control TCP segmentation so the '{}' prefix lands in one segment and the rest arrives later, and a keep-alive connection must be reused; against uhttpd directly the smuggled request is processed as the attacker's own with limited gain, whereas a fronting reverse proxy or CDN that pools backend connections is where the boundary crossing becomes meaningful.

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

Vendor (github) PRIMARY 6.9 MEDIUM
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
vuln.today AI 5.8 MEDIUM

Network, no auth and no UI (AV:N/PR:N/UI:N); attacker fully controls TCP segmentation so AC:L; request smuggling crosses the request-interpretation boundary (S:C) with integrity-only impact (I:L).

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 23:03 EUVD
CVE Published
Oct 30, 2026 - 22:16 cve.org
MEDIUM 6.9

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
High
default web server in OpenWrt router/embedded firmware, broad deployed footprint
Data Quality
3 sources
Confidence: Low

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 No
EPSS 0.4%
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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
High

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
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.

CVE-2024-20017 CRITICAL POC
9.8 Mar 04

In wlan service, there is a possible out of bounds write due to improper input validation. Rated critical severity (CVSS

CVE-2026-61876 CRITICAL POC
9.4 Jul 12

Stored cross-site scripting in OpenWrt's LuCI web interface lets an adjacent-network attacker inject executable HTML/Jav

CVE-2020-7982 HIGH POC
8.1 Mar 16

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

CVE-2019-15513 HIGH POC
7.5 Aug 23

An issue was discovered in OpenWrt libuci (aka Library for the Unified Configuration Interface) before 15.05.1 as used o

CVE-2018-19630 MEDIUM POC
6.1 Nov 28

cgi_handle_request in uhttpd in OpenWrt through 18.06.1 and LEDE through 17.01 has unauthenticated reflected XSS via the

CVE-2025-20654 CRITICAL
9.8 Apr 07

In wlan service, there is a possible out of bounds write due to an incorrect bounds check. Rated critical severity (CVSS

CVE-2019-5102 MEDIUM POC
5.9 Nov 18

An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1

CVE-2019-5101 MEDIUM POC
5.9 Nov 18

An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1

CVE-2025-20674 CRITICAL
9.8 Jun 02

Remote privilege escalation in Android WLAN AP driver via packet injection.

CVE-2025-20683 CRITICAL
9.8 Jul 08

In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es

CVE-2025-20682 CRITICAL
9.8 Jul 08

In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es

CVE-2025-20681 CRITICAL
9.8 Jul 08

In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es

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