Linux: nvmet: pci-epf: reject too-short SGL segments
What fixes it
- 2423a05dd0f21330c47ce0ae1cb54a8b0be821e2LinuxCVE List
- 472df1d103dbe3e9d09156f0667e36180e912c46LinuxCVE List
- 5d5fbfbbacd1efb13a9bf91317d4fde859ede4b9LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
nvmet: pci-epf: reject too-short SGL segments
The host controls an SGL segment's length. A nonzero length smaller than one SGL descriptor makes nr_descs zero, so nvmet_pci_epf_get_sgl_segment() reads the type byte of sgls[-1] outside the allocated buffer. If that byte contains a segment descriptor type, the function also copies the preceding 16 bytes and returns a negative descriptor count.
The read was reproduced in 3/3 KASAN boots with only the host transfer mocked by a KUnit test:
BUG: KASAN: slab-out-of-bounds in nvmet_pci_epf_get_sgl_segment Read of size 1 by task kunit_try_catch Call Trace: nvmet_pci_epf_get_sgl_segment nvmet_pci_epf_short_sgl_test Kernel panic - not syncing: KASAN: panic_on_warn set ...
Reject segments that cannot hold one descriptor before allocating or transferring their contents.
Text from CVE List
Affected versions 8
- Linuxaffected: 0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 before 2423a05dd0f21330c47ce0ae1cb54a8b0be821e2CVE List
- Linuxaffected: 0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 before 472df1d103dbe3e9d09156f0667e36180e912c46CVE List
- Linuxaffected: 0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 before 5d5fbfbbacd1efb13a9bf91317d4fde859ede4b9CVE List
- Linuxaffected: 6.14CVE List
- Linuxunaffected: all versions before 6.14CVE List
- Linuxunaffected: 6.18.56 through 6.18.*CVE List
- Linuxunaffected: 7.2.10 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List