[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2024111921-CVE-2024-50265-dcd9@gregkh>
Date: Tue, 19 Nov 2024 02:32:20 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2024-50265: ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove()
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove()
Syzkaller is able to provoke null-ptr-dereference in ocfs2_xa_remove():
[ 57.319872] (a.out,1161,7):ocfs2_xa_remove:2028 ERROR: status = -12
[ 57.320420] (a.out,1161,7):ocfs2_xa_cleanup_value_truncate:1999 ERROR: Partial truncate while removing xattr overlay.upper. Leaking 1 clusters and removing the entry
[ 57.321727] BUG: kernel NULL pointer dereference, address: 0000000000000004
[...]
[ 57.325727] RIP: 0010:ocfs2_xa_block_wipe_namevalue+0x2a/0xc0
[...]
[ 57.331328] Call Trace:
[ 57.331477] <TASK>
[...]
[ 57.333511] ? do_user_addr_fault+0x3e5/0x740
[ 57.333778] ? exc_page_fault+0x70/0x170
[ 57.334016] ? asm_exc_page_fault+0x2b/0x30
[ 57.334263] ? __pfx_ocfs2_xa_block_wipe_namevalue+0x10/0x10
[ 57.334596] ? ocfs2_xa_block_wipe_namevalue+0x2a/0xc0
[ 57.334913] ocfs2_xa_remove_entry+0x23/0xc0
[ 57.335164] ocfs2_xa_set+0x704/0xcf0
[ 57.335381] ? _raw_spin_unlock+0x1a/0x40
[ 57.335620] ? ocfs2_inode_cache_unlock+0x16/0x20
[ 57.335915] ? trace_preempt_on+0x1e/0x70
[ 57.336153] ? start_this_handle+0x16c/0x500
[ 57.336410] ? preempt_count_sub+0x50/0x80
[ 57.336656] ? _raw_read_unlock+0x20/0x40
[ 57.336906] ? start_this_handle+0x16c/0x500
[ 57.337162] ocfs2_xattr_block_set+0xa6/0x1e0
[ 57.337424] __ocfs2_xattr_set_handle+0x1fd/0x5d0
[ 57.337706] ? ocfs2_start_trans+0x13d/0x290
[ 57.337971] ocfs2_xattr_set+0xb13/0xfb0
[ 57.338207] ? dput+0x46/0x1c0
[ 57.338393] ocfs2_xattr_trusted_set+0x28/0x30
[ 57.338665] ? ocfs2_xattr_trusted_set+0x28/0x30
[ 57.338948] __vfs_removexattr+0x92/0xc0
[ 57.339182] __vfs_removexattr_locked+0xd5/0x190
[ 57.339456] ? preempt_count_sub+0x50/0x80
[ 57.339705] vfs_removexattr+0x5f/0x100
[...]
Reproducer uses faultinject facility to fail ocfs2_xa_remove() ->
ocfs2_xa_value_truncate() with -ENOMEM.
In this case the comment mentions that we can return 0 if
ocfs2_xa_cleanup_value_truncate() is going to wipe the entry
anyway. But the following 'rc' check is wrong and execution flow do
'ocfs2_xa_remove_entry(loc);' twice:
* 1st: in ocfs2_xa_cleanup_value_truncate();
* 2nd: returning back to ocfs2_xa_remove() instead of going to 'out'.
Fix this by skipping the 2nd removal of the same entry and making
syzkaller repro happy.
The Linux kernel CVE team has assigned CVE-2024-50265 to this issue.
Affected and fixed versions
===========================
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 4.19.324 with commit 38cbf13b2e7a
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 5.4.286 with commit 168a9b8303fc
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 5.10.230 with commit 6a7e6dcf90fe
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 5.15.172 with commit dcc8fe8c8314
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 6.1.117 with commit 86dd0e8d4282
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 6.6.61 with commit dd73c942eed7
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 6.11.8 with commit 2b5369528ee6
Issue introduced in 2.6.34 with commit 399ff3a748cf and fixed in 6.12 with commit 0b63c0e01fba
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-50265
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:
fs/ocfs2/xattr.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/38cbf13b2e7a31362babe411f7c2c3c52cd2734b
https://git.kernel.org/stable/c/168a9b8303fcb0317db4c06b23ce1c0ce2af4e10
https://git.kernel.org/stable/c/6a7e6dcf90fe7721d0863067b6ca9a9442134692
https://git.kernel.org/stable/c/dcc8fe8c83145041cb6c80cac21f6173a3ff0204
https://git.kernel.org/stable/c/86dd0e8d42828923c68ad506933336bcd6f2317d
https://git.kernel.org/stable/c/dd73c942eed76a014c7a5597e6926435274d2c4c
https://git.kernel.org/stable/c/2b5369528ee63c88371816178a05b5e664c87386
https://git.kernel.org/stable/c/0b63c0e01fba40e3992bc627272ec7b618ccaef7
Powered by blists - more mailing lists