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

nvme-tcp: fix host memory disclosure on R2T for a read command

nvme_tcp_handle_r2t() does not check the direction of the request the
R2T refers to. A malicious controller can send an R2T for a READ and
the host will answer it: nvme_tcp_setup_h2c_data_pdu() builds the
H2CData header and nvme_tcp_try_send_data() sends the request's data
buffer. That buffer is the READ destination, so its contents go to the
controller.

The command then completes normally and nothing is logged.

Against a test controller that answers every READ with an R2T, a 4096
byte buffered read returned all 4096 bytes, split over two R2Ts. The
pages contained stale kernel data, including an array of struct page
pointers.

Reject an R2T for a request that is not a write.
Published: 2026-09-11
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Information Disclosure
Action: Patch Kernel
AI Analysis

Impact

An NVMe over TCP controller can send a Read Response (R2T) for a read command, but the Linux kernel’s nvme_tcp_handle_r2t() does not verify that the R2T corresponds to a write request. As a result, the host transmits the contents of the read buffer—kernel memory—to the controller, allowing an attacker read arbitrary host kernel memory, including stale page structures, without any logs or authentication bypass.

Affected Systems

All Linux kernel implementations that ship the default nvme over TCP module and have not been updated to include the commit that adds the R2T direction check are affected. This includes every distribution that uses the stock nvme_tcp module prior to the patch revision identified by commit 3a0b0514.

Risk and Exploitability

The CVSS base score of 7.4 indicates high severity, while the EPSS score of less than 1 % shows a very low likelihood of exploitation in the wild. The vulnerability is not listed in CISA’s KEV catalog. The likely attack vector involves a malicious NVMe controller connected to the host’s NVMe/TCP is a physical or network-level attack. Exploitation requires the controller to issue an R2T for a READ; it is not detectable in logs and does not require privileged credentials.

Generated by OpenCVE AI on September 13, 2026 at 07:04 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a Linux kernel update that includes the commit 3a0b0514 or later to enforce the R2T direction check.
  • If an immediate kernel update is not feasible, disable the nvme-tcp module by unloading it or adding it to a blacklist, thereby preventing NVMe over TCP traffic.
  • Restrict network traffic to NVMe/TCP endpoints using firewall rules or network segmentation to limit trusted controllers to a whitelist.

Generated by OpenCVE AI on September 13, 2026 at 07:04 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 13 Sep 2026 06:45:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.4, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H'}

cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'}


Sat, 12 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-201
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.4, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H'}

threat_severity

Moderate


Fri, 11 Sep 2026 23:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: nvme-tcp: fix host memory disclosure on R2T for a read command nvme_tcp_handle_r2t() does not check the direction of the request the R2T refers to. A malicious controller can send an R2T for a READ and the host will answer it: nvme_tcp_setup_h2c_data_pdu() builds the H2CData header and nvme_tcp_try_send_data() sends the request's data buffer. That buffer is the READ destination, so its contents go to the controller. The command then completes normally and nothing is logged. Against a test controller that answers every READ with an R2T, a 4096 byte buffered read returned all 4096 bytes, split over two R2Ts. The pages contained stale kernel data, including an array of struct page pointers. Reject an R2T for a request that is not a write.
Title nvme-tcp: fix host memory disclosure on R2T for a read command
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-13T06:29:50.315Z

Reserved: 2026-09-11T19:38:34.711Z

Link: CVE-2026-89481

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-11T20:19:29.600

Modified: 2026-09-13T07:17:11.337

Link: CVE-2026-89481

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-11T19:43:36Z

Links: CVE-2026-89481 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-13T07:15:17Z

Weaknesses
  • CWE-201

    Insertion of Sensitive Information Into Sent Data