[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2024062549-CVE-2024-39301-6610@gregkh>
Date: Tue, 25 Jun 2024 16:22:57 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2024-39301: net/9p: fix uninit-value in p9_client_rpc()
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
net/9p: fix uninit-value in p9_client_rpc()
Syzbot with the help of KMSAN reported the following error:
BUG: KMSAN: uninit-value in trace_9p_client_res include/trace/events/9p.h:146 [inline]
BUG: KMSAN: uninit-value in p9_client_rpc+0x1314/0x1340 net/9p/client.c:754
trace_9p_client_res include/trace/events/9p.h:146 [inline]
p9_client_rpc+0x1314/0x1340 net/9p/client.c:754
p9_client_create+0x1551/0x1ff0 net/9p/client.c:1031
v9fs_session_init+0x1b9/0x28e0 fs/9p/v9fs.c:410
v9fs_mount+0xe2/0x12b0 fs/9p/vfs_super.c:122
legacy_get_tree+0x114/0x290 fs/fs_context.c:662
vfs_get_tree+0xa7/0x570 fs/super.c:1797
do_new_mount+0x71f/0x15e0 fs/namespace.c:3352
path_mount+0x742/0x1f20 fs/namespace.c:3679
do_mount fs/namespace.c:3692 [inline]
__do_sys_mount fs/namespace.c:3898 [inline]
__se_sys_mount+0x725/0x810 fs/namespace.c:3875
__x64_sys_mount+0xe4/0x150 fs/namespace.c:3875
do_syscall_64+0xd5/0x1f0
entry_SYSCALL_64_after_hwframe+0x6d/0x75
Uninit was created at:
__alloc_pages+0x9d6/0xe70 mm/page_alloc.c:4598
__alloc_pages_node include/linux/gfp.h:238 [inline]
alloc_pages_node include/linux/gfp.h:261 [inline]
alloc_slab_page mm/slub.c:2175 [inline]
allocate_slab mm/slub.c:2338 [inline]
new_slab+0x2de/0x1400 mm/slub.c:2391
___slab_alloc+0x1184/0x33d0 mm/slub.c:3525
__slab_alloc mm/slub.c:3610 [inline]
__slab_alloc_node mm/slub.c:3663 [inline]
slab_alloc_node mm/slub.c:3835 [inline]
kmem_cache_alloc+0x6d3/0xbe0 mm/slub.c:3852
p9_tag_alloc net/9p/client.c:278 [inline]
p9_client_prepare_req+0x20a/0x1770 net/9p/client.c:641
p9_client_rpc+0x27e/0x1340 net/9p/client.c:688
p9_client_create+0x1551/0x1ff0 net/9p/client.c:1031
v9fs_session_init+0x1b9/0x28e0 fs/9p/v9fs.c:410
v9fs_mount+0xe2/0x12b0 fs/9p/vfs_super.c:122
legacy_get_tree+0x114/0x290 fs/fs_context.c:662
vfs_get_tree+0xa7/0x570 fs/super.c:1797
do_new_mount+0x71f/0x15e0 fs/namespace.c:3352
path_mount+0x742/0x1f20 fs/namespace.c:3679
do_mount fs/namespace.c:3692 [inline]
__do_sys_mount fs/namespace.c:3898 [inline]
__se_sys_mount+0x725/0x810 fs/namespace.c:3875
__x64_sys_mount+0xe4/0x150 fs/namespace.c:3875
do_syscall_64+0xd5/0x1f0
entry_SYSCALL_64_after_hwframe+0x6d/0x75
If p9_check_errors() fails early in p9_client_rpc(), req->rc.tag
will not be properly initialized. However, trace_9p_client_res()
ends up trying to print it out anyway before p9_client_rpc()
finishes.
Fix this issue by assigning default values to p9_fcall fields
such as 'tag' and (just in case KMSAN unearths something new) 'id'
during the tag allocation stage.
The Linux kernel CVE team has assigned CVE-2024-39301 to this issue.
Affected and fixed versions
===========================
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 4.19.316 with commit 72c5d8e416ec
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 5.4.278 with commit 2101901dd58c
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 5.10.219 with commit 124947855564
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 5.15.161 with commit 89969ffbeb94
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 6.1.94 with commit ca71f204711a
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 6.6.34 with commit 6c1791130b78
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 6.9.5 with commit fe5c604053c3
Issue introduced in 3.2 with commit 348b59012e5c and fixed in 6.10-rc2 with commit 25460d6f3902
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2024-39301
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
net/9p/client.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/72c5d8e416ecc46af370a1340b3db5ff0b0cc867
https://git.kernel.org/stable/c/2101901dd58c6da4924bc5efb217a1d83436290b
https://git.kernel.org/stable/c/124947855564572713d705a13be7d0c9dae16a17
https://git.kernel.org/stable/c/89969ffbeb948ffc159d19252e7469490103011b
https://git.kernel.org/stable/c/ca71f204711ad24113e8b344dc5bb8b0385f5672
https://git.kernel.org/stable/c/6c1791130b781c843572fb6391c4a4c5d857ab17
https://git.kernel.org/stable/c/fe5c604053c36c62af24eee8a76407d026ea5163
https://git.kernel.org/stable/c/25460d6f39024cc3b8241b14c7ccf0d6f11a736a
Powered by blists - more mailing lists