CVE-2026-89969

CVE-2026-89969

Critical · published September 16, 2026

CVSS v3.1
9.8
EPSS
1%
Percentile
53.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU

nvmet_tcp_try_recv_pdu() reads a PDU header into the fixed 128-byte

queue->pdu union, then computes the remaining payload length as

queue->left = hdr->hlen - queue->offset + hdgst;

and reads that many more bytes into &queue->pdu + queue->offset, without

ever bounding the result against sizeof(queue->pdu).

A struct nvme_tcp_icreq_pdu is itself 128 bytes, exactly the size of the

union. Once a header digest has been negotiated (hdgst = 4), a second

ICReq passes the hlen == nvmet_tcp_pdu_size() check but yields

queue->left = 128 - 8 + 4 = 124, so bytes 8..132 are written into the

128-byte buffer -- 4 bytes past its end, over queue->hdr_digest and

queue->data_digest. Those bytes are attacker-controlled (an ICReq

carries no digest), and the duplicate ICReq is only rejected later,

after the overflow. A remote unauthenticated host can thus corrupt

kernel memory adjacent to the receive buffer.

Reject any PDU whose declared length would read past the end of

queue->pdu before the second recv.

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00714 · 53.1th percentile
Published
2026-09-16T15:17Z
References (8)
EPSS history
Timeline
  • 18 SEP 04:02Z
    EPSS moved — → 1%
    epss
  • 16 SEP 10:32Z
    nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU
    cvelistv5