CVE-2026-82391

Source
https://cve.org/CVERecord?id=CVE-2026-82391
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-82391.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-82391
Aliases
  • GHSA-8jrg-wx88-g75j
Published
2026-11-10T22:07:39Z
Modified
2026-11-11T13:25:19Z
Severity
  • 9.1 (Critical) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H CVSS Calculator
Summary
Out-of-bounds write in Zephyr HTTP/2 server static-filesystem handler via corrupted receive-buffer length
Details

The HTTP/2 front-end of the Zephyr HTTP server aliased connection receive state as a scratch output. In subsys/net/lib/http/http_server_http2.c, handle_http2_static_fs_resource() passed &client->data_len as the file_size out-parameter of http_server_find_file(). client->data_len is the count of unprocessed bytes remaining in the fixed-size per-connection receive buffer client->buffer[CONFIG_HTTP_SERVER_CLIENT_BUFFER_SIZE] (256 bytes by default), an invariant every frame handler and the socket receive path rely on. Serving any static file therefore replaced that bounded value with the file's on-disk size, and nothing resets it afterwards.

The defect is reached by an unauthenticated HTTP/2 GET for any file under the web root, in applications that register a static-filesystem resource (HTTP_RESOURCE_TYPE_STATIC_FS) with CONFIG_FILE_SYSTEM=y; CONFIG_HTTP_SERVER_VERSION_2 is enabled by default and no TLS or credentials are required on this path. Once client->data_len exceeds the buffer size, the frame dispatch loop in subsys/net/lib/http/http_server_core.c keeps parsing past the end of the received data, and the peer controls the bytes at client->cursor, so it can choose which fabricated frame the state machine consumes next by appending bytes after its request.

The inflated length defeats the only guards on the buffer. parse_http_frame_header() and the per-frame handlers read and skip up to a 24-bit frame length beyond the buffer (out-of-bounds read); the compaction memmove(client->buffer, client->cursor, client->data_len) at the end of request handling copies the file-size number of bytes into the 256-byte buffer, overflowing the rest of struct http_client_ctx — including the current_detail/current_stream pointers, the parser_settings function-pointer table and the inactivity_timer work handler — and the adjacent client contexts in static memory; and the subsequent zsock_recv(client->fd, client->buffer + client->data_len, sizeof(client->buffer) - client->data_len, 0) underflows its size argument, writing attacker-supplied data of attacker-chosen length out of bounds.

The impact is remote memory corruption in the server's single address space: at minimum a crash or hang of the device, and plausibly control-data overwrite leading to code execution. The HTTP/1 and HTTP/3 static-filesystem handlers already used a local variable and are unaffected; the fix makes the HTTP/2 handler use a local size_t file_size as well.

Database specific
{
    "cna_assigner": "zephyr",
    "cwe_ids": [
        "CWE-787"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/82xxx/CVE-2026-82391.json"
}
References

Affected packages

Git / github.com/zephyrproject-rtos/zephyr

Affected ranges

Type
GIT
Repo
https://github.com/zephyrproject-rtos/zephyr
Events
Database specific
Show details
{
    "extracted_events": [
        {
            "range": [
                {
                    "introduced": "4.0.0"
                },
                {
                    "fixed": "4.3.2"
                }
            ],
            "source": "AFFECTED_FIELD",
            "strategy": "StandardRange"
        },
        {
            "range": [
                {
                    "introduced": "4.4.0"
                },
                {
                    "fixed": "4.5.0"
                }
            ],
            "source": "AFFECTED_FIELD",
            "strategy": "StandardRange"
        },
        {
            "range": [
                {
                    "fixed": "4e0a5f38b14dba5891fb558c49a526f9f6a3cc29"
                }
            ],
            "source": "REFERENCES_COMMIT"
        }
    ]
}

Affected versions

v4.*
v4.0.0
v4.1.0
v4.1.0-rc1
v4.1.0-rc2
v4.1.0-rc3
v4.2.0
v4.2.0-rc1
v4.2.0-rc2
v4.2.0-rc3
v4.3.0
v4.3.0-rc1
v4.3.0-rc2
v4.3.0-rc3
v4.3.1
v4.3.1-rc1
v4.4.0

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-82391.json"
vanir_signatures
[
    {
        "deprecated": false,
        "digest": {
            "function_hash": "96353323809734983777847158738994580425",
            "length": 2339
        },
        "id": "CVE-2026-82391-202e3164",
        "signature_type": "Function",
        "signature_version": "v1",
        "source": "https://github.com/zephyrproject-rtos/zephyr/commit/4e0a5f38b14dba5891fb558c49a526f9f6a3cc29",
        "target": {
            "file": "subsys/net/lib/http/http_server_http2.c",
            "function": "handle_http2_static_fs_resource"
        }
    },
    {
        "deprecated": false,
        "digest": {
            "line_hashes": [
                "331692616837336972599785128611646034949",
                "260623531537493707532267351409005993642",
                "18818221601573250247411496270655769857",
                "308408105724144282773669065855376840152",
                "87762761422018736715924864930395315827",
                "234347326583590443185872953237463286428",
                "252575363533289693373843599634549722435",
                "267674360358781166785226984046099484572",
                "268061566255039288647723987588808641108",
                "72663869987188859900253768142706743234",
                "118946166383827959429370400391752725424",
                "17708829465746509409391368135409961996",
                "170343655114912040971039772558541815454",
                "47535072411875479813687998956482112336",
                "338974072496433971192570751942242052744"
            ],
            "threshold": 0.9
        },
        "id": "CVE-2026-82391-706f02a2",
        "signature_type": "Line",
        "signature_version": "v1",
        "source": "https://github.com/zephyrproject-rtos/zephyr/commit/4e0a5f38b14dba5891fb558c49a526f9f6a3cc29",
        "target": {
            "file": "subsys/net/lib/http/http_server_http2.c"
        }
    }
]
vanir_signatures_modified
"2026-11-11T13:25:19Z"