nvmet-fc: fix invalid free in LS IOD error path
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.267, 5.15.218, 6.1.185, 6.6.154, 6.12.106, and 3 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: nvmet-fc: fix invalid free in LS IOD error path nvmet_fc_alloc_ls_iodlist() advances iod while initializing the LS IOD array. If an rqstbuf allocation or response buffer DMA mapping fails, the unwind loop decrements iod past the start of the array. The final kfree(iod) therefore frees an address before the allocated object. This can be reproduced with nvme-fcloop and failslab by setting fail-nth to 6 before creating a target port. KASAN reports: BUG: KASAN: invalid-free in nvmet_fc_register_targetport Free of addr ffff88816cf8ff48 by task nvmet_fail_nth/9552 Free the original allocation base stored in tgtport->iod instead. With this fix applied, the same sysfs write with fail-nth=6 returns -ENOMEM without any KASAN report.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in b189c6e408896ccc23d2e76d7738847cdebf1532; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in 449e9c4f8db84ad9d9bb288029b230bcf590faa2; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in 1a8f007faefe8c226ec65896589f8d59b0a8d5a5; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in d094582cce9c08516d714e7436a8f3b9211dda90; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in 371fb1bf902adaa59be32bd7e904a5317e604fd0; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in 8bce9cd08aae4283badf8ddc11fbb6f57b75a81e; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in bb9489f0dce58da730d3479588d6710d7a2c1b45; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in 94334ea92f4d7535f66f86e33681efa94827eddc; From c53432030d86429dc9fe5adc3d68cb9d1343b0b2 · fixed in ba98d6796d12258e837ece065d2ecb59d76ce4ff
- Linux Linux
4.10
- KernelLinux
From 4.10.0 · fixed in 5.10.267; From 5.11.0 · fixed in 5.15.218; From 5.16.0 · fixed in 6.1.185; From 6.2.0 · fixed in 6.6.154; From 6.7.0 · fixed in 6.12.106; From 6.13.0 · fixed in 6.18.47; From 6.19.0 · fixed in 7.1.11; From 7.2.0 · fixed in 7.2.1
References 9
git.kernel.org
- stable/c/b189c6e408896ccc23d2e76d7738847cdebf1532
- stable/c/449e9c4f8db84ad9d9bb288029b230bcf590faa2
- stable/c/1a8f007faefe8c226ec65896589f8d59b0a8d5a5
- stable/c/d094582cce9c08516d714e7436a8f3b9211dda90
- stable/c/371fb1bf902adaa59be32bd7e904a5317e604fd0
- stable/c/8bce9cd08aae4283badf8ddc11fbb6f57b75a81e
- stable/c/bb9489f0dce58da730d3479588d6710d7a2c1b45
- stable/c/94334ea92f4d7535f66f86e33681efa94827eddc
- stable/c/ba98d6796d12258e837ece065d2ecb59d76ce4ff