
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-64535 is a use-after-free (UAF) vulnerability in the Linux kernel's nvmet-tcp module, triggered by a data digest mismatch on NVMe/TCP connections with digest validation enabled. Discovered by Shivam Kumar via vulnerability testing and disclosed on July 27, 2026, it affects Linux kernel versions prior to 6.1.178, 6.6.145, 6.12.97, and 6.18.40. The vulnerability arises when nvmet_tcp_try_recv_ddgst() calls nvmet_req_uninit() without marking the command as completed, leading to a double percpu_ref_put during queue teardown. It carries a CVSS category estimate of Medium (GitHub Advisory, Feedly).
The root cause is improper state management in the nvmet_tcp_try_recv_ddgst() error handler (CWE classification not formally assigned). When a digest mismatch occurs on a non-final H2C_DATA PDU during an R2T-based transfer, the handler calls nvmet_req_uninit() — performing a percpu_ref_put() on the submission queue — but fails to set cqe->status, update rbytes_done, or clear relevant flags. Consequently, during subsequent fatal error-triggered queue teardown, nvmet_tcp_uninit_data_in_cmds() iterates all commands and, finding the already-uninited command still appearing to need data (rbytes_done < transfer_len and cqe->status == 0), calls nvmet_req_uninit() a second time — resulting in a double percpu_ref_put against a single percpu_ref_get, constituting a use-after-free condition (GitHub Advisory).
Successful exploitation can lead to kernel memory corruption due to the double percpu_ref_put, potentially enabling local or network-adjacent code execution at the kernel level. An attacker who can trigger a data digest mismatch on an NVMe/TCP connection with digest validation enabled may corrupt kernel memory structures, leading to system instability, privilege escalation, or arbitrary code execution. The affected asset scope is limited to Linux systems running the nvmet-tcp kernel module with data digest validation enabled (Feedly).
ddgst) enabled in the NVMe subsystem configuration.nvme-cli with digest options).nvmet_tcp_try_recv_ddgst() and causing nvmet_req_uninit() to be called without completing the command.nvmet_tcp_uninit_data_in_cmds() to iterate commands and call nvmet_req_uninit() a second time on the already-uninited command.percpu_ref_put and kernel memory corruption to achieve privilege escalation or code execution, depending on kernel heap layout and available exploitation primitives (GitHub Advisory).dmesg / /var/log/kern.log) showing percpu_ref warnings, use-after-free reports, or kernel BUG/OOPS traces originating from nvmet_tcp_try_recv_ddgst() or nvmet_tcp_uninit_data_in_cmds().nvmet-tcp with digest validation enabled; anomalous privilege escalation events following NVMe/TCP connection errors.Patches have been backported to stable kernel releases: upgrade to Linux kernel 6.1.178, 6.6.145, 6.12.97, 6.18.40, or 7.1+ to resolve the vulnerability. The specific fix commits are 96fe2513, e091ff83, 6f944298, 088ee46c, and dbbd07d0 on the stable kernel trees (GitHub Advisory). As an interim workaround where patching is not immediately possible, disable NVMe/TCP data digest validation on the target configuration (noting this reduces data integrity protection), and restrict network access to NVMe/TCP services (TCP port 4420) to trusted hosts only using firewall rules.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."