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

In the Linux kernel’s nvme over TCP stack, the nvme_tcp_handle_r2t() function fails to verify that an R2T request refers to a write operation. A malicious NVMe controller can therefore send an R2T for a read command. The kernel’s nvme_tcp_setup_h2c_data_pdu() and nvme_tcp_try_send_data() functions will forward the contents of the requested read buffer back to the controller. Consequently, arbitrary kernel memory—including stale page data and pointers—is exposed to the controller, which is not logged and completes normally. The weakness corresponds to CWE‑201, representing a physical information disclosure due to a read of unintended data.

Affected Systems

All Linux kernel builds that include the default nvme over TCP module and have not been updated with the commit that adds the R2T direction check (no specific version data is available).

Risk and Exploitability

The CVSS base score of 7.5 signals high severity, while the EPSS score of less than 1% indicates a very low likelihood of exploitation in the wild. This vulnerability is not listed in the CISA KEV catalog. The attack requires a malicious NVMe controller connected to the host’s NVMe/TCP interface; it exploits the lack of direction verification and can be performed without privileged credentials or visible logs, transmitting kernel memory back to the attacker’s controller.

Generated by OpenCVE AI on September 15, 2026 at 22:45 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply a Linux kernel update that includes 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 15, 2026 at 22:45 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DSA Debian DSA DSA-6528-1 linux security update
History

Mon, 14 Sep 2026 12:30:00 +0000


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-14T12:00:18.149Z

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-14T13:19:04.780

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-15T23:00:16Z

Weaknesses
  • CWE-201

    Insertion of Sensitive Information Into Sent Data