Skip to content
Fencer Vulns
high 7.5

CVE-2026-89968 json

nvmet-tcp: reject unsolicited H2CData PDUs

published 2026-09-16 53 d ago modified 2026-10-19 20 d ago also EUVD-2026-80568

cvss
7.5
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.8%
EPSS 0.8% chance of exploitation in 30 days, percentile 57%
public exploits
0
none known

Summary

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

nvmet-tcp: reject unsolicited H2CData PDUs

nvmet_tcp_handle_h2c_data_pdu() accepts an H2CData PDU after only checking that its TTAG is a valid in-range command index and that the command's data buffers are mapped. It never checks that the target has actually solicited that data by sending an R2T for the command.

A remote host can abuse this. It submits a write command that takes the R2T path and, before the target transmits the R2T, sends an H2CData PDU for that command's tag. The data completes the command early, and when the command then fails synchronously (e.g. a length mismatch caught by nvmet_check_transfer_len()), it is completed a second time. Each completion calls nvmet_tcp_queue_response(), so the same command is added to queue->resp_list twice while it is still linked; the second llist_add() makes the node point to itself (lentry->next == lentry).

nvmet_tcp_process_resp_list() then walks that self-referential node and adds the command to resp_send_list twice. With CONFIG_DEBUG_LIST this trips the "list_add double add" check (kernel BUG); without it the loop never terminates and the nvmet_tcp workqueue wedges (soft-lockup). It is remotely triggerable and needs no authentication on an allow_any_host subsystem.

Track whether an R2T has been transmitted for a command and reject an H2CData PDU that arrives before it. The flag is cleared on command reuse (nvmet_tcp_get_cmd() zeroes cmd->flags) and stays set across the multiple H2CData PDUs of a single solicited transfer.

Patch / fix

  • Linux Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 6.18.51, 7.2.5, 7.3
  • linux Debian 12 6.1.190-1
  • linux Debian 13 6.12.111-1
  • linux Debian 14 7.2.6-1
  • linux-6.12 Debian 12 6.12.111-1~deb12u1

debian advisories DEBIAN-CVE-2026-89968

  • linux Ubuntu 22.04 LTS 5.15.0-202.212
  • linux Ubuntu 26.04 LTS 7.0.0-42.42
  • linux-aws Ubuntu 22.04 LTS 5.15.0-1119.126
  • linux-aws Ubuntu 26.04 LTS 7.0.0-1016.17
  • linux-gcp Ubuntu 22.04 LTS 5.15.0-1120.130
  • linux-gcp Ubuntu 26.04 LTS 7.0.0-1016.18
  • linux-gke Ubuntu 22.04 LTS 5.15.0-1115.121
  • linux-ibm Ubuntu 22.04 LTS 5.15.0-1113.117

ubuntu advisories UBUNTU-CVE-2026-89968

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

  • kernel-64kb SLE Module for Basesystem 15 SP7 6.4.0-150700.53.84.1
  • kernel-syms SLE Module for Development Tools 15 SP7 6.4.0-150700.53.84.1
  • kernel-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.53.84.1
  • kernel-source SLE Module for Development Tools 15 SP7, SLE Module for Basesystem 15 SP7 6.4.0-150700.53.84.1
  • kernel-default SLE Workstation Extension 15 SP7, SLE Module for Legacy 15 SP7, SLE Module for Basesystem 15 SP7 +2 more 6.4.0-150700.53.84.1
  • kernel-zfcpdump SLE Module for Basesystem 15 SP7 6.4.0-150700.53.84.1
  • kernel-obs-build SLE Module for Development Tools 15 SP7 6.4.0-150700.53.84.1
  • kernel-default-base SLE Module for Basesystem 15 SP7 6.4.0-150700.53.84.1.150700.17.47.1

suse advisories SUSE-SU-2026:4706-1SUSE-SU-2026:4687-1SUSE-SU-2026:4668-1SUSE-SU-2026:4667-1SUSE-SU-2026:4666-1SUSE-SU-2026:4665-1

  • kernel-rt openSUSE Leap 16.0 6.12.0-160000.39.1
  • dtb-aarch64 openSUSE Leap 16.0 6.12.0-160000.39.1
  • kernel-64kb openSUSE Leap 16.0 6.12.0-160000.39.1
  • kernel-syms openSUSE Leap 16.0 6.12.0-160000.39.1
  • kernel-azure openSUSE Leap 16.0 6.12.0-160000.39.1
  • kernel-obs-qa openSUSE Leap 16.0 6.12.0-160000.39.1
  • kernel-source openSUSE Leap 16.0 6.12.0-160000.39.1
  • kernel-default openSUSE Leap 16.0 6.12.0-160000.39.1

opensuse advisories openSUSE-SU-2026:22091-1openSUSE-SU-2026:11880-1

  • kernel Azure Linux 3.0 6.6.157.1-1

azure linux advisories AZL-101328

Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2026-89968 updated cvss 7.5

kernel: nvmet-tcp: reject unsolicited H2CData PDUs

  • Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernel Red Hat OpenShift Container Platform 4 openshift/ose-rhel-coreos-8, openshift/ose-rhel-coreos-9 Red Hat OpenShift Container Platform 5 openshift/ose-rhel-coreos-9
    affected: workaround, no fix available
  • Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

Exploit prediction

0.82% chance of exploitation in the next 30 days, higher than 57% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CNA 3.1 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Affected products

  • Linux Linux

Classification

Technology feeds

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.