Linux: nvmet-auth: fix out-of-bounds write in nvmet_auth_challenge()
What fixes it
- 9d61131acd742cf97ee64e453383e41b46568513LinuxCVE List
- 7fd3c363eba4f2aceb4b3f31cd1cf65e0dcbaee4LinuxCVE List
- 8a9b4c0eef19c207663c1ee888257307c869ca86LinuxCVE 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-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 ...
Text from CVE List
Affected versions 12
- Linuxaffected: db1312dd95488b5e6ff362ff66fcf953a46b1821 before ef4dfad231a787aded76e5b03788ddb18c8aebabCVE List
- Linuxaffected: db1312dd95488b5e6ff362ff66fcf953a46b1821 before 9d61131acd742cf97ee64e453383e41b46568513CVE List
- Linuxaffected: db1312dd95488b5e6ff362ff66fcf953a46b1821 before 7fd3c363eba4f2aceb4b3f31cd1cf65e0dcbaee4CVE List
- Linuxaffected: db1312dd95488b5e6ff362ff66fcf953a46b1821 before 8a9b4c0eef19c207663c1ee888257307c869ca86CVE List
- Linuxaffected: db1312dd95488b5e6ff362ff66fcf953a46b1821 before fa6778e030bed9841ddcdf96bc7018da9ac03562CVE List
- Linuxaffected: 6.0CVE List
- Linuxunaffected: all versions before 6.0CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.113 through 6.12.*CVE List
- Linuxunaffected: 6.18.56 through 6.18.*CVE List
- Linuxunaffected: 7.2.10 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/ef4dfad231a787aded76e5b03788ddb18c8aebabReferencevia CVE List
- git.kernel.org/stable/c/9d61131acd742cf97ee64e453383e41b46568513Referencevia CVE List
- git.kernel.org/stable/c/7fd3c363eba4f2aceb4b3f31cd1cf65e0dcbaee4Referencevia CVE List
- git.kernel.org/stable/c/8a9b4c0eef19c207663c1ee888257307c869ca86Referencevia CVE List
- git.kernel.org/stable/c/fa6778e030bed9841ddcdf96bc7018da9ac03562Referencevia CVE List