CVE-2026-22998 nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec
A remote attacker can cause a kernel crash by sending malformed NVMe-TCP PDUs before proper initialization, affecting Linux systems using NVMe over TCP.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-22998?
CVE-2026-22998 is a high-severity vulnerability in Linux kernel, published on 25 Jan 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
In the Linux kernel, the following vulnerability has been resolved:
nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec
Commit efa56305908b ("nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length") added ttag bounds checking and data_offset validation in nvmet_tcp_handle_h2c_data_pdu(), but it did not validate whether the command's data structures (cmd->req.sg and cmd->iov) have been properly initialized before processing H2C_DATA PDUs.
The nvmet_tcp_build_pdu_iovec() function dereferences these pointers without NULL checks. This can be triggered by sending H2C_DATA PDU immediately after the ICREQ/ICRESP handshake, before sending a CONNECT command or NVMe write command.
Attack vectors that trigger NULL pointer dereferences: 1. H2C_DATA PDU sent before CONNECT → both pointers NULL 2. H2C_DATA PDU for READ command → cmd->req.sg allocated, cmd->iov NULL 3. H2C_DATA PDU for uninitialized command slot → both pointers NULL
The fix validates both cmd->req.sg and cmd->iov before calling nvmet_tcp_build_pdu_iovec(). Both checks are required because: - Uninitialized commands: both NULL - READ commands: cmd->req.sg allocated, cmd->iov NULL - WRITE commands: both allocated
Weakness: CWE-476
Which versions are affected by CVE-2026-22998?
It affects 1 product.
Products include Linux kernel.
How do I fix CVE-2026-22998?
Apply the vendor's patch.
Is CVE-2026-22998 being exploited?
There is no known exploitation of CVE-2026-22998 in the wild and no public exploit code.
Other vulnerabilities in Linux kernel
Sources
Also known as AZL-78482, AZL-78491, BELL-CVE-2026-22998, DEBIAN-CVE-2026-22998, GHSA-xjx5-8v38-q6gh, ROOT-OS-DEBIAN-11-CVE-2026-22998 and 5 more.