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->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 &#39;tag&#39; and (just in case KMSAN unearths something new) &#39;id&#39;<br />
during the tag allocation stage.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
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:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/124947855564572713d705a13be7d0c9dae16a17
- https://git.kernel.org/stable/c/2101901dd58c6da4924bc5efb217a1d83436290b
- https://git.kernel.org/stable/c/25460d6f39024cc3b8241b14c7ccf0d6f11a736a
- https://git.kernel.org/stable/c/6c1791130b781c843572fb6391c4a4c5d857ab17
- https://git.kernel.org/stable/c/72c5d8e416ecc46af370a1340b3db5ff0b0cc867
- https://git.kernel.org/stable/c/89969ffbeb948ffc159d19252e7469490103011b
- https://git.kernel.org/stable/c/ca71f204711ad24113e8b344dc5bb8b0385f5672
- https://git.kernel.org/stable/c/fe5c604053c36c62af24eee8a76407d026ea5163



