CVE-2024-39301

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
25/06/2024
Last modified:
03/09/2024

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net/9p: fix uninit-value in p9_client_rpc()<br /> <br /> Syzbot with the help of KMSAN reported the following error:<br /> <br /> BUG: KMSAN: uninit-value in trace_9p_client_res include/trace/events/9p.h:146 [inline]<br /> BUG: KMSAN: uninit-value in p9_client_rpc+0x1314/0x1340 net/9p/client.c:754<br /> trace_9p_client_res include/trace/events/9p.h:146 [inline]<br /> p9_client_rpc+0x1314/0x1340 net/9p/client.c:754<br /> p9_client_create+0x1551/0x1ff0 net/9p/client.c:1031<br /> v9fs_session_init+0x1b9/0x28e0 fs/9p/v9fs.c:410<br /> v9fs_mount+0xe2/0x12b0 fs/9p/vfs_super.c:122<br /> legacy_get_tree+0x114/0x290 fs/fs_context.c:662<br /> vfs_get_tree+0xa7/0x570 fs/super.c:1797<br /> do_new_mount+0x71f/0x15e0 fs/namespace.c:3352<br /> path_mount+0x742/0x1f20 fs/namespace.c:3679<br /> do_mount fs/namespace.c:3692 [inline]<br /> __do_sys_mount fs/namespace.c:3898 [inline]<br /> __se_sys_mount+0x725/0x810 fs/namespace.c:3875<br /> __x64_sys_mount+0xe4/0x150 fs/namespace.c:3875<br /> do_syscall_64+0xd5/0x1f0<br /> entry_SYSCALL_64_after_hwframe+0x6d/0x75<br /> <br /> Uninit was created at:<br /> __alloc_pages+0x9d6/0xe70 mm/page_alloc.c:4598<br /> __alloc_pages_node include/linux/gfp.h:238 [inline]<br /> alloc_pages_node include/linux/gfp.h:261 [inline]<br /> alloc_slab_page mm/slub.c:2175 [inline]<br /> allocate_slab mm/slub.c:2338 [inline]<br /> new_slab+0x2de/0x1400 mm/slub.c:2391<br /> ___slab_alloc+0x1184/0x33d0 mm/slub.c:3525<br /> __slab_alloc mm/slub.c:3610 [inline]<br /> __slab_alloc_node mm/slub.c:3663 [inline]<br /> slab_alloc_node mm/slub.c:3835 [inline]<br /> kmem_cache_alloc+0x6d3/0xbe0 mm/slub.c:3852<br /> p9_tag_alloc net/9p/client.c:278 [inline]<br /> p9_client_prepare_req+0x20a/0x1770 net/9p/client.c:641<br /> p9_client_rpc+0x27e/0x1340 net/9p/client.c:688<br /> p9_client_create+0x1551/0x1ff0 net/9p/client.c:1031<br /> v9fs_session_init+0x1b9/0x28e0 fs/9p/v9fs.c:410<br /> v9fs_mount+0xe2/0x12b0 fs/9p/vfs_super.c:122<br /> legacy_get_tree+0x114/0x290 fs/fs_context.c:662<br /> vfs_get_tree+0xa7/0x570 fs/super.c:1797<br /> do_new_mount+0x71f/0x15e0 fs/namespace.c:3352<br /> path_mount+0x742/0x1f20 fs/namespace.c:3679<br /> do_mount fs/namespace.c:3692 [inline]<br /> __do_sys_mount fs/namespace.c:3898 [inline]<br /> __se_sys_mount+0x725/0x810 fs/namespace.c:3875<br /> __x64_sys_mount+0xe4/0x150 fs/namespace.c:3875<br /> do_syscall_64+0xd5/0x1f0<br /> entry_SYSCALL_64_after_hwframe+0x6d/0x75<br /> <br /> If p9_check_errors() fails early in p9_client_rpc(), req-&gt;rc.tag<br /> will not be properly initialized. However, trace_9p_client_res()<br /> ends up trying to print it out anyway before p9_client_rpc()<br /> finishes.<br /> <br /> Fix this issue by assigning default values to p9_fcall fields<br /> such as &amp;#39;tag&amp;#39; and (just in case KMSAN unearths something new) &amp;#39;id&amp;#39;<br /> during the tag allocation stage.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.2 (including) 4.19.316 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (including) 5.4.278 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (including) 5.10.219 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.161 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.94 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.34 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.9.5 (excluding)
cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:*