KernelScan.io

CRITICAL Introduced in 6.0

nvmet AuthChallenge Overflow

CVE-2026-98725

CVSS 9.8 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

01

In the Linux kernel, the following vulnerability has been resolved: nvmet-auth: fix out-of-bounds write in nvmet_auth_challenge() nvmet_auth_challenge() receives its output buffer as a void pointer. sizeof(*d) therefore evaluates to one with GCC and undercounts the fixed challenge header by 15 bytes. A short AUTH_RECEIVE buffer can pass the check before the challenge is copied past the end of its allocation. Use the typed challenge pointer when calculating the response size. BUG: KASAN: slab-out-of-bounds in nvmet_execute_auth_receive (drivers/nvme/target/fabrics-cmd-auth.c:442 drivers/nvme/target/fabrics-cmd-auth.c:569) Write of size 32 by task kworker/1:1H/64 Workqueue: nvmet_tcp_wq nvmet_tcp_io_work Call Trace: nvmet_execute_auth_receive (drivers/nvme/target/fabrics-cmd-auth.c:442 drivers/nvme/target/fabrics-cmd-auth.c:569) nvmet_tcp_try_recv_pdu (drivers/nvme/target/tcp.c:1119 drivers/nvme/target/tcp.c:1243) nvmet_tcp_io_work (drivers/nvme/target/tcp.c:1350 drivers/nvme/target/tcp.c:1382 drivers/nvme/target/tcp.c:1445) process_one_work (kernel/workqueue.c:3322) worker_thread (kernel/workqueue.c:3405 kernel/workqueue.c:3486) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:158) ret_from_fork_asm (arch/x86/entry/entry_64.S:245) The buggy address is located 16 bytes inside of allocated 33-byte region [ffff888000554e80, ffff888000554ea1) Kernel panic - not syncing: KASAN: panic_on_warn set ...

02

Engine v0.9.0

Risk summary

An unauthenticated network attacker can trigger a heap buffer overflow in the NVMe-oF target's authentication handshake by sending a crafted AUTH_RECEIVE command. This leads to kernel memory corruption, enabling arbitrary code execution, data theft, or denial of service. Any system running an NVMe-oF TCP target with In-Band Authentication enabled is exposed.

Affecteddrivers/nvme/target/fabrics-cmd-auth.c (nvmet)

Vulnerability analysis

The nvmet_auth_challenge() function miscalculates the size of the authentication challenge structure because it uses sizeof(*d) on a void pointer, which evaluates to 1 byte instead of the actual 16-byte structure size. This causes the bounds check to pass for undersized buffers, allowing the subsequent memcpy to write 32 bytes past the allocation boundary. The fix uses the properly typed challenge pointer to compute the correct size. The vulnerability is reachable over the network by any peer that can connect to the NVMe-oF target's TCP port and initiate authentication — no prior credentials or local access are required.

03

BranchIntroducedFixed inPatch commit
6.126.06.12.1139d61131acd74
6.186.06.18.567fd3c363eba4
6.66.06.6.160ef4dfad231a7
7.26.07.2.108a9b4c0eef19
mainline6.07.3fa6778e030be

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Affected — no CIP fix yet (latest 6.12.112-cip33)
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)