☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N 🐛 CWE-444
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-73256

CVE-2026-73256 Vulnerability in Cesanta
📅 PUBLISHED: 2026-08-20 00:00 UTC 🔄 UPDATED: 2026-10-02 23:42 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.44%
👁️
0.44% probability
11.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Affected: Mongoose — upgrade to patched release
CVSS VECTOR BREAKDOWN 9.1
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: N Availability None
9.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

CVE-2026-73256 Threat Intelligence Report


Executive Summary

CVE-2026-73256 is a critical HTTP request-smuggling vulnerability (CVSS 9.1) in Cesanta's Mongoose embedded web server and network library, affecting all versions prior to 7.22. The flaw enables a remote unauthenticated attacker to exploit a flawed HTTP/1.0 reverse-proxy deployment by sending a request with conflicting Transfer-Encoding and Content-Length framing, leading to request smuggling that can result in unauthorized access or state changes on the backend. The vulnerability stems from an unreachable code path in the http_cb() function within src/http.c, where an impossible greater-than-eight condition on the protocol length check prevents the is_http_1_0 flag from ever being set. Patches are claimed to exist in version 7.22, though this is not yet independently confirmed.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability resides in the relationship between two functions: mg_http_parse() and http_cb() in src/http.c. According to the NVD description, mg_http_parse() requires an eight-byte protocol string (i.e., "HTTP/1.0" or "HTTP/1.1") and enforces this at parse time. However, the subsequent http_cb() function contains a check that tests hm.proto.len against a condition that is mathematically impossible to satisfy, given the eight-byte protocol string constraint imposed by the parser.

Specifically, the http_cb() function tests hm.proto.len with an impossible greater-than-eight condition. Since mg_http_parse() guarantees that the protocol string is exactly eight bytes, the length can never exceed eight, meaning the condition is never true and the is_http_1_0 flag is consequently never set. This creates a logical inconsistency between the intended protocol-version detection and the actual runtime behavior.

The security consequence of this bug is significant in an HTTP/1.0 reverse-proxy deployment. When is_http_1_0 is not set, Mongoose will process requests containing Transfer-Encoding: chunked as if the proxy supports HTTP/1.1 semantics. However, an HTTP/1.0 reverse proxy does not understand or process chunked transfer encoding — it will ignore the Transfer-Encoding header entirely and rely solely on Content-Length (or the connection close delimiter) for message framing.

This discrepancy between what Mongoose interprets (chunked framing) and what the HTTP/1.0 proxy interprets (Content-Length or connection-close framing) is the core request-smuggling primitive. An attacker can craft a request where:

  1. A Content-Length header declares one message length
  2. A Transfer-Encoding: chunked header declares a different message structure

The HTTP/1.0 proxy will use the Content-Length to determine where the request ends, while Mongoose will use the chunked encoding. This desynchronization allows the attacker to "smuggle" a second request that the proxy believes is part of the first request's body, or vice versa — enabling the attacker to inject arbitrary requests that bypass proxy-level access controls, authentication checks, or routing logic.

The vulnerability class is CWE-444 (Inconsistent Interpretation of HTTP Requests — HTTP Request Smuggling). The attack vector is network-based, requires no authentication (AV:N, PR:N), and has a low attack complexity (AC:L). The complete impact on confidentiality and integrity is rated High (C:H, I:H), though the availability impact is rated None (A:N).

Exploitation Scenarios

Attack Chain (inferred from vulnerability class and NVD description):

Step 1 — Reconnaissance/Target Identification: An attacker scans the internet or a target organization's network for Mongoose-based web servers. Common fingerprints include the Server: mongoose HTTP response header or characteristic Mongoose error pages. More specifically, the attacker would look for deployments where Mongoose sits behind an HTTP/1.0 reverse proxy — a common configuration in embedded devices, IoT gateways, legacy infrastructure, or load-balancing setups that have not been upgraded to HTTP/1.1. Shodan queries such as server:"mongoose" or "mongoose" http can identify exposed instances.

Step 2 — Triggering the Flaw: The attacker determines that the target is running Mongoose prior to version 7.22. They then craft an HTTP/1.1 request to the reverse proxy that includes both a Content-Length header and a Transfer-Encoding: chunked header. Due to the unreachable is_http_1_0 flag logic, Mongoose will parse the body according to chunked semantics, while the HTTP/1.0 front-end proxy will interpret the request using Content-Length framing.

Step 3 — Payload/Execution: The attacker constructs a request where the chunked body contains an embedded second HTTP request. For example:

POST /public-endpoint HTTP/1.1
Host: target
Content-Length: 4
Transfer-Encoding: chunked

0

GET /admin/delete-user?id=1 HTTP/1.1
Host: target

The HTTP/1.0 proxy sees a request with Content-Length: 4 and forwards it. Mongoose, processing the chunked encoding, treats the first chunk as empty (0) and then interprets the smuggled GET /admin/... as a separate, legitimate request. This smuggled request bypasses any proxy-level authentication, URL filtering, or access control policies.

Step 4 — Post-Exploitation: The attacker can use request smuggling to:

  • Bypass authentication and authorization controls enforced at the proxy layer
  • Access internal or administrative endpoints (/admin, /config, /api)
  • Perform unauthorized state changes (e.g., modifying device configurations, firmware settings, or user accounts)
  • Potentially poison caches or redirect other users' requests to attacker-controlled content
  • Chain the vulnerability with other backend weaknesses (e.g., SSRF, IDOR) to achieve full system compromise

Note: No public PoC is available at the time of writing; the attack chain is inferred from the vulnerability class and the specific logic flaw described in the NVD entry. The technical details in the description (the http_cb() function, hm.proto.len check, and mg_http_parse() restriction) are sufficient to establish the mechanism with high confidence.

Impact Assessment

Business Impact: The vulnerability carries a CVSS score of 9.1 (Critical), reflecting the ease of exploitation (network-accessible, unauthenticated, low complexity) and the severe confidentiality and integrity impact (both rated High).

Affected Systems: All deployments of Mongoose version 7.21 and earlier that are fronted by an HTTP/1.0 reverse proxy are vulnerable. This configuration is common in:

  • Embedded IoT devices (routers, cameras, industrial controllers)
  • Automotive infotainment systems
  • Medical devices
  • Legacy enterprise web applications where proxy infrastructure has not been updated
  • Edge/embedded gateways that proxy requests to backend services

Blast Radius: The vulnerability is fully remote and unauthenticated. Successful exploitation can lead to:

  • Complete bypass of proxy-layer security controls
  • Unauthorized access to sensitive resources and administrative interfaces (confidentiality breach)
  • Arbitrary state changes on the backend system (integrity breach)
  • Potential pivot into broader network compromise if the backend service has additional privileges

CVSS Subscores: The vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N indicates:

  • Attack Vector: Network — exploitable remotely
  • Attack Complexity: Low — no special conditions beyond the specific deployment configuration
  • Privileges Required: None — no authentication needed
  • User Interaction: None — no victim action required
  • Scope: Unchanged — impact confined to the vulnerable component
  • Confidentiality: High — full information disclosure possible
  • Integrity: High — complete compromise of data integrity possible
  • Availability: None — no direct DoS impact

The lack of availability impact is notable; attackers interested in DoS would need to pursue other avenues. However, the high confidentiality and integrity impacts make this a critical concern for any organization running Mongoose behind HTTP/1.0 proxies.

Detection Guidance

Sigma Rule

title: Mongoose HTTP Request Smuggling Attempt (CVE-2026-73256)
id: 8f3a5c2e-9b41-4d26-8f1a-7c9e3b4d5a21
status: experimental
description: Detects HTTP requests containing conflicting Content-Length and Transfer-Encoding headers targeting Mongoose web servers.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-73256
tags:
    - attack.t1190
    - cve.2026-73256
logsource:
    category: webserver
    product: mongoose
detection:
    selection_headers:
        http.request.headers|contains|all:
            - 'Transfer-Encoding: chunked'
            - 'Content-Length:'
    selection_proxy:
        http.version: 'HTTP/1.1'
    condition: selection_headers and selection_proxy
falsepositives:
    - Legitimate clients misconfigured to send both headers
    - CDN or proxy layers that normalize headers before forwarding
level: high

YARA Rule

rule CVE_2026_73256_Mongoose_Request_Smuggling
{
    meta:
        author = "valtersit.com Threat Intel"
        description = "Detects HTTP requests with conflicting framing headers targeting Mongoose"
        cve = "CVE-2026-73256"
        date = "2026-01-01"
        severity = "critical"

    strings:
        $s1 = "Transfer-Encoding: chunked" ascii nocase
        $s2 = "Content-Length:" ascii nocase
        $s3 = "HTTP/1.1" ascii

    condition:
        all of them and #s1 < 5 and #s2 < 5
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2026-73256 Mongoose HTTP Request Smuggling Attempt"; flow:to_server,established; http.header_names; content:"Transfer-Encoding"; http.header_names; content:"|0d|Content-Length"; sid:202673256; rev:1; reference:cve,2026-73256; priority:1; classtype:attempted-admin;)

Elastic Detection

sequence by source.ip with maxspan=1s
  [network where event.action == "connection_established"]
  [http where
    http.request.method in ("POST", "PUT", "GET", "DELETE", "PATCH") and
    http.request.headers contains "Transfer-Encoding: chunked" and
    http.request.headers contains "Content-Length:" and
    user_agent.original != "*healthcheck*"]

Splunk SPL Query

index=web sourcetype=access_combined
| spath input=headers output=te path=Transfer-Encoding
| spath input=headers output=cl path=Content-Length
| where match(te, "(?i)chunked") AND isnotnull(cl)
| eval smuggle_risk = if(match(headers, "(?i)transfer-encoding.*chunked.*content-length"), "HIGH", "MEDIUM")
| stats count by src_ip, uri, smuggle_risk, _time
| where smuggle_risk = "HIGH"
| table _time, src_ip, uri, count

Wazuh OSSEC Rule

<group name="web_application,">
  <rule id="139832" level="14">
    <decoded_as>json</decoded_as>
    <field name="http.request.headers">\.*(?i)Transfer-Encoding: chunked.*Content-Length:.*</field>
    <description>CVE-2026-73256: Possible Mongoose HTTP Request Smuggling detected</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>attack.initial_access,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Status: OSV claims a fix in Mongoose version 7.22, but this has not been independently confirmed (Patch Confidence 2/4). The affected versions list shows 0→unfixed, suggesting incomplete patch data.

Vendor Fix: No direct vendor advisory is currently available. The recommended action is to upgrade to Mongoose 7.22 or later once it is verified.

Immediate Mitigations

  1. Upgrade Mongoose: Upgrade to version 7.22 immediately if your deployment uses Mongoose as an embedded web server. Verify the patch integrity before deploying.
  2. Disable or upgrade HTTP/1.0 proxies: If your infrastructure relies on HTTP/1.0 reverse proxies, upgrade them to HTTP/1.1 or HTTP/2 to eliminate the framing discrepancy.
  3. Disable Transfer-Encoding support: If possible, configure Mongoose to reject incoming Transfer-Encoding: chunked requests entirely at the front-end proxy or firewall level.
  4. Network-level filtering: Deploy WAF rules to reject any HTTP request containing both a Content-Length header and a Transfer-Encoding: chunked header. This is a common request-smuggling signature.
  5. Monitor logs: Continuously monitor access logs for requests containing both headers, especially from unexpected sources.

Patch/Upgrade Steps

  1. Obtain Mongoose 7.22 from the official Cesanta repository or package distribution channel.
  2. Test the upgrade in a staging environment replicating your production proxy topology.
  3. Validate that existing HTTP/1.0 proxy deployments still function correctly after the upgrade.
  4. Roll out to production after successful staging validation.
  5. Independently verify the patched code fixes the http_cb() condition — the claimed fix has not been independently confirmed as of this writing.

Long-Term Hardening

  1. Inventory embedded components: Maintain an up-to-date inventory of all embedded web servers and network libraries in use across your organization, including their versions.
  2. Eliminate legacy protocols: Phase out HTTP/1.0 proxies and enable HTTP/1.1 or HTTP/2 throughout the infrastructure.
  3. Proactive monitoring: Deploy the detection rules above (Sigma, YARA, Suricata, etc.) to your SIEM/IDS infrastructure.
  4. Input validation: Implement strict HTTP header validation at the network edge to reject requests with ambiguous framing.
  5. Regular security reviews: Periodically review NVD and OSV databases for new advisories affecting embedded libraries and network components.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-73256
  2. OSV Advisory: https://osv.dev/vulnerability/CVE-2026-73256 (patch source, claims fix in 7.22)
  3. Cesanta Mongoose Repository: https://github.com/cesanta/mongoose (verify patch commit and version 7.22 release)
  4. CWE-444 Reference: https://cwe.mitre.org/data/definitions/444.html (Inconsistent Interpretation of HTTP Requests)
  5. MITRE ATT&CK T1190: https://attack.mitre.org/techniques/T1190/ (Exploit Public-Facing Application)

Exploit-in-the-Wild Status: No public PoC or exploit code has been identified. CISA KEV confirms this CVE is NOT known to be exploited in the wild at the time of this report. No threat actor campaigns have been attributed to this vulnerability. The EPSS score has not yet been assigned by FIRST.org; organizations should still prioritize patching given the critical CVSS rating and ease of exploitation.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Cesanta"
title:"Cesanta"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-73256/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.