CVE-2026-80789
Received Received - Intake

Buffer Overflow in Linux Kernel NVMe/TCP

Vulnerability report for CVE-2026-80789, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-04

Last updated on: 2026-09-04

Assigner: kernel.org

Description

In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: bound SGL data length before allocating command buffers nvmet_tcp_map_data() reads the host-controlled 32-bit sgl->length and, for the in-capsule offset descriptor (type 0x01), checks it against port->inline_data_size before use. Any other SGL descriptor type -- including the non-inline transport SGL data-block descriptor (type (NVME_TRANSPORT_SGL_DATA_DESC << 4) | NVME_SGL_FMT_TRANSPORT_A, the type a real host uses for out-of-capsule writes) skips that check entirely and falls straight through to: cmd->req.sg = sgl_alloc(len, GFP_KERNEL, &cmd->req.sg_cnt); with len taken directly from the wire, unbounded up to 4 GiB. nvmet_req_init() only parses the command and never inspects sgl->length, and nvmet_check_transfer_len() -- the only other place transfer_len is validated -- runs later, from req->execute(), after the allocation has already happened. For a write command the target responds with an R2T and parks the command waiting for the host to send the data; if the host (or an unauthenticated peer that simply never follows up) never does, the sgl_alloc() buffer stays resident for the life of the command. NVMe/TCP has no mandatory authentication in the default configuration, so any peer able to reach the target portal and complete a Fabrics connect can drive this with a single crafted command, repeatable across queues and connections for amplification. This is unbounded kernel memory allocation triggered by a remote, effectively unauthenticated peer. Validate len against the same NVMET_TCP_MAXH2CDATA ceiling this file already uses to bound per-PDU H2C data, for every SGL descriptor type, before doing any allocation. This closes the gap for the non-inline descriptor while leaving the existing, tighter inline_data_size check in place for the in-capsule case. Runtime-verified on a v6.19 KASAN stand: with this bound in place, a crafted write command carrying an oversized non-inline SGL length is rejected before sgl_alloc() runs, where the same request previously drove an unbounded ~256 MiB kernel allocation (up to 4 GiB) that stayed resident pending an R2T the host never satisfies.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-04
Last Modified
2026-09-04
Generated
2026-09-04
AI Q&A
2026-09-04
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
linux linux_kernel 6.19

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability in the Linux kernel involves improper handling of SGL data length in the NVMe over TCP (nvmet-tcp) subsystem. A remote unauthenticated peer can send a crafted command with an oversized SGL length, leading to unbounded kernel memory allocation up to 4 GiB. The issue arises because the code fails to validate the SGL length for certain descriptor types before allocating memory, allowing an attacker to trigger excessive memory usage.

Detection Guidance

This vulnerability involves unbounded kernel memory allocation in the Linux kernel's NVMe/TCP subsystem. Detection requires checking for unusual memory usage patterns or kernel crashes related to NVMe/TCP operations. Monitor kernel logs for OOM (Out of Memory) events or NVMe-related errors. Use commands like 'dmesg | grep -i nvme' or 'journalctl -k | grep -i nvme' to inspect kernel logs for suspicious activity.

Impact Analysis

This vulnerability can lead to denial-of-service conditions by consuming excessive kernel memory, potentially crashing the system. An attacker could exploit it to amplify attacks by sending crafted commands repeatedly, causing resource exhaustion. Systems using NVMe over TCP without additional authentication are particularly at risk.

Mitigation Strategies

Immediate mitigation involves updating the Linux kernel to a patched version that includes the fix for this vulnerability. If updating is not immediately possible, consider disabling the NVMe/TCP target functionality if it is not required. Apply kernel patches or updates from your Linux distribution as soon as they become available.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-80789. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart