CVE-2021-47343

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
21/05/2024
Last modified:
12/05/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> dm btree remove: assign new_root only when removal succeeds<br /> <br /> remove_raw() in dm_btree_remove() may fail due to IO read error<br /> (e.g. read the content of origin block fails during shadowing),<br /> and the value of shadow_spine::root is uninitialized, but<br /> the uninitialized value is still assign to new_root in the<br /> end of dm_btree_remove().<br /> <br /> For dm-thin, the value of pmd-&gt;details_root or pmd-&gt;root will become<br /> an uninitialized value, so if trying to read details_info tree again<br /> out-of-bound memory may occur as showed below:<br /> <br /> general protection fault, probably for non-canonical address 0x3fdcb14c8d7520<br /> CPU: 4 PID: 515 Comm: dmsetup Not tainted 5.13.0-rc6<br /> Hardware name: QEMU Standard PC<br /> RIP: 0010:metadata_ll_load_ie+0x14/0x30<br /> Call Trace:<br /> sm_metadata_count_is_more_than_one+0xb9/0xe0<br /> dm_tm_shadow_block+0x52/0x1c0<br /> shadow_step+0x59/0xf0<br /> remove_raw+0xb2/0x170<br /> dm_btree_remove+0xf4/0x1c0<br /> dm_pool_delete_thin_device+0xc3/0x140<br /> pool_message+0x218/0x2b0<br /> target_message+0x251/0x290<br /> ctl_ioctl+0x1c4/0x4d0<br /> dm_ctl_ioctl+0xe/0x20<br /> __x64_sys_ioctl+0x7b/0xb0<br /> do_syscall_64+0x40/0xb0<br /> entry_SYSCALL_64_after_hwframe+0x44/0xae<br /> <br /> Fixing it by only assign new_root when removal succeeds

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.4.276 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.5 (including) 4.9.276 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.10 (including) 4.14.240 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.15 (including) 4.19.198 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (including) 5.4.133 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (including) 5.10.51 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.12.18 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.13 (including) 5.13.3 (excluding)