In the Linux kernel, the following vulnerability has been resolved:
dosysnametohandle(): use kzalloc() to fix kernel-infoleak
syzbot identified a kernel information leak vulnerability in dosysnametohandle() and issued the following report [1].
[1] "BUG: KMSAN: kernel-infoleak in instrumentcopytouser include/linux/instrumented.h:114 [inline] BUG: KMSAN: kernel-infoleak in copytouser+0xbc/0x100 lib/usercopy.c:40 instrumentcopytouser include/linux/instrumented.h:114 [inline] copytouser+0xbc/0x100 lib/usercopy.c:40 copytouser include/linux/uaccess.h:191 [inline] dosysnametohandle fs/fhandle.c:73 [inline] __dosysname_tohandleat fs/fhandle.c:112 [inline] __sesysname_tohandleat+0x949/0xb10 fs/fhandle.c:94 _x64sysnametohandleat+0xe4/0x140 fs/fhandle.c:94 ...
Uninit was created at: slabpostallochook+0x129/0xa70 mm/slab.h:768 slaballoc_node mm/slub.c:3478 [inline] __kmemcachealloc_node+0x5c9/0x970 mm/slub.c:3517 __dokmallocnode mm/slab_common.c:1006 [inline] __kmalloc+0x121/0x3c0 mm/slabcommon.c:1020 kmalloc include/linux/slab.h:604 [inline] dosysnameto_handle fs/fhandle.c:39 [inline] __dosysnametohandle_at fs/fhandle.c:112 [inline] __sesysnametohandle_at+0x441/0xb10 fs/fhandle.c:94 _x64sysnametohandleat+0xe4/0x140 fs/fhandle.c:94 ...
Bytes 18-19 of 20 are uninitialized Memory access of size 20 starts at ffff888128a46380 Data copied to user address 0000000020000240"
Per Chuck Lever's suggestion, use kzalloc() instead of kmalloc() to solve the problem.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/26xxx/CVE-2024-26901.json",
"cna_assigner": "Linux"
}