[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2024052138-CVE-2021-47343-1974@gregkh>
Date: Tue, 21 May 2024 16:36:17 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2021-47343: dm btree remove: assign new_root only when removal succeeds
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
dm btree remove: assign new_root only when removal succeeds
remove_raw() in dm_btree_remove() may fail due to IO read error
(e.g. read the content of origin block fails during shadowing),
and the value of shadow_spine::root is uninitialized, but
the uninitialized value is still assign to new_root in the
end of dm_btree_remove().
For dm-thin, the value of pmd->details_root or pmd->root will become
an uninitialized value, so if trying to read details_info tree again
out-of-bound memory may occur as showed below:
general protection fault, probably for non-canonical address 0x3fdcb14c8d7520
CPU: 4 PID: 515 Comm: dmsetup Not tainted 5.13.0-rc6
Hardware name: QEMU Standard PC
RIP: 0010:metadata_ll_load_ie+0x14/0x30
Call Trace:
sm_metadata_count_is_more_than_one+0xb9/0xe0
dm_tm_shadow_block+0x52/0x1c0
shadow_step+0x59/0xf0
remove_raw+0xb2/0x170
dm_btree_remove+0xf4/0x1c0
dm_pool_delete_thin_device+0xc3/0x140
pool_message+0x218/0x2b0
target_message+0x251/0x290
ctl_ioctl+0x1c4/0x4d0
dm_ctl_ioctl+0xe/0x20
__x64_sys_ioctl+0x7b/0xb0
do_syscall_64+0x40/0xb0
entry_SYSCALL_64_after_hwframe+0x44/0xae
Fixing it by only assign new_root when removal succeeds
The Linux kernel CVE team has assigned CVE-2021-47343 to this issue.
Affected and fixed versions
===========================
Fixed in 4.4.276 with commit 4c84b3e0728f
Fixed in 4.9.276 with commit c15477561918
Fixed in 4.14.240 with commit 73f27adaa73e
Fixed in 4.19.198 with commit 8fbae4a1bdb5
Fixed in 5.4.133 with commit 964d57d1962d
Fixed in 5.10.51 with commit ba47e65a5de3
Fixed in 5.12.18 with commit 89bf942314b7
Fixed in 5.13.3 with commit ad365e9351ac
Fixed in 5.14 with commit b6e58b5466b2
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-2021-47343
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:
drivers/md/persistent-data/dm-btree-remove.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/4c84b3e0728ffe10d89c633694c35a02b5c477dc
https://git.kernel.org/stable/c/c154775619186781aaf8a99333ac07437a1768d5
https://git.kernel.org/stable/c/73f27adaa73e3057a9ec464e33c4f54d34ea5de3
https://git.kernel.org/stable/c/8fbae4a1bdb5b889490cdee929e68540151536e5
https://git.kernel.org/stable/c/964d57d1962d7e68f0f578f05d9ae4a104d74851
https://git.kernel.org/stable/c/ba47e65a5de3e0e8270301a409fc63d3129fdb9e
https://git.kernel.org/stable/c/89bf942314b78d454db92427201421b5dec132d9
https://git.kernel.org/stable/c/ad365e9351ac2b450e7e79932ff6abf59342d91a
https://git.kernel.org/stable/c/b6e58b5466b2959f83034bead2e2e1395cca8aeb
Powered by blists - more mailing lists