9.1
CVE-2026-64320
- EPSS 0.73%
- Veröffentlicht 25.07.2026 08:49:48
- Zuletzt bearbeitet 17.08.2026 05:17:32
- CVE-Watchlists
- Unerledigt
nvmet: fix pre-auth out-of-bounds heap read in Discovery Get Log Page
In the Linux kernel, the following vulnerability has been resolved:
nvmet: fix pre-auth out-of-bounds heap read in Discovery Get Log Page
nvmet_execute_disc_get_log_page() validates only the dword alignment
of the host-supplied Log Page Offset (lpo). The 64-bit offset is then
added to a small kzalloc'd buffer that holds the discovery log page
and the result is passed straight to nvmet_copy_to_sgl(), which
memcpy()s data_len bytes out to the host with no source-side bound
check:
u64 offset = nvmet_get_log_page_offset(req->cmd); /* 64-bit host */
size_t data_len = nvmet_get_log_page_len(req->cmd); /* 32-bit host */
...
if (offset & 0x3) { ... } /* only check */
...
alloc_len = sizeof(*hdr) + entry_size * discovery_log_entries(req);
buffer = kzalloc(alloc_len, GFP_KERNEL);
...
status = nvmet_copy_to_sgl(req, 0, buffer + offset, data_len);
The Discovery controller is unauthenticated -- nvmet_host_allowed()
returns true unconditionally for the discovery subsystem -- so the call
is reachable pre-authentication by any TCP/RDMA/FC peer that can reach
the nvmet target. With a discovery log page of ~1 KiB, an attacker
requesting up to 4 KiB starting at offset == alloc_len reads the next
slab page out and gets its content returned over the fabric (an
empirical run on a default nvmet-tcp loopback target leaked 81
canonical kernel pointers in one Get Log Page response). Pointing the
offset at unmapped kernel memory faults the in-kernel memcpy and
crashes (or panics, on panic_on_oops=1) the target host instead.
The attacker-controlled source-side offset pattern
"nvmet_copy_to_sgl(req, 0, buffer + ATTACKER_OFFSET, ...)" is unique
to nvmet_execute_disc_get_log_page in the entire nvmet codebase: every
other Get Log Page handler in admin-cmd.c either ignores lpo (and
silently starts every response at offset 0) or tracks a local
destination offset with a fixed source pointer.
Validate the host-supplied offset against the log page size, cap the
copy length to what is actually available, and zero-fill any remainder
of the host transfer buffer. The zero-fill matches the existing
short-response pattern in nvmet_execute_get_log_changed_ns()
(admin-cmd.c) and prevents leaking transport SGL contents when the
host asks for more bytes than the log page contains.Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
≫
Produkt
Linux
Default Statusunaffected
Version
a07b4970f464f13640e28e16dad6cfa33647cc99
Version <
33b974eb626154ae9348f2bac7de84cb2a3d9dd4
Status
affected
Version
a07b4970f464f13640e28e16dad6cfa33647cc99
Version <
56c021a0869260d04c4b65d1471936aaf9177114
Status
affected
Version
a07b4970f464f13640e28e16dad6cfa33647cc99
Version <
a29b316b9bbfd269f323ab4ba9906a894025680f
Status
affected
Version
a07b4970f464f13640e28e16dad6cfa33647cc99
Version <
53cd102a7a56079b11b897835bd9b94c14e6322c
Status
affected
HerstellerLinux
≫
Produkt
Linux
Default Statusaffected
Version
4.8
Status
affected
Version
0
Version <
4.8
Status
unaffected
Version <=
6.12.*
Version
6.12.96
Status
unaffected
Version <=
6.18.*
Version
6.18.39
Status
unaffected
Version <=
7.1.*
Version
7.1.4
Status
unaffected
Version <=
*
Version
7.2
Status
unaffected
VulnDex Vulnerability Enrichment
| Typ | Quelle | Score | Percentile |
|---|---|---|---|
| EPSS | FIRST.org | 0.73% | 0.504 |
| Quelle | Base Score | Exploit Score | Impact Score | Vector String |
|---|---|---|---|---|
| 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | 9.1 | 3.9 | 5.2 |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
|
https://git.kernel.org/stable/c/33b974eb626154ae9348f2bac7de84cb2a3d9dd4
https://git.kernel.org/stable/c/56c021a0869260d04c4b65d1471936aaf9177114
https://git.kernel.org/stable/c/a29b316b9bbfd269f323ab4ba9906a894025680f
https://git.kernel.org/stable/c/53cd102a7a56079b11b897835bd9b94c14e6322c