EPSS
0.044%
Advisory Published
CVE Published
Updated

CVE-2024-35807: ext4: fix corruption during on-line resize

First published: Fri May 17 2024(Updated: )

In the Linux kernel, the following vulnerability has been resolved: ext4: fix corruption during on-line resize We observed a corruption during on-line resize of a file system that is larger than 16 TiB with 4k block size. With having more then 2^32 blocks resize_inode is turned off by default by mke2fs. The issue can be reproduced on a smaller file system for convenience by explicitly turning off resize_inode. An on-line resize across an 8 GiB boundary (the size of a meta block group in this setup) then leads to a corruption: dev=/dev/<some_dev> # should be >= 16 GiB mkdir -p /corruption /sbin/mke2fs -t ext4 -b 4096 -O ^resize_inode $dev $((2 * 2**21 - 2**15)) mount -t ext4 $dev /corruption dd if=/dev/zero bs=4096 of=/corruption/test count=$((2*2**21 - 4*2**15)) sha1sum /corruption/test # 79d2658b39dcfd77274e435b0934028adafaab11 /corruption/test /sbin/resize2fs $dev $((2*2**21)) # drop page cache to force reload the block from disk echo 1 > /proc/sys/vm/drop_caches sha1sum /corruption/test # 3c2abc63cbf1a94c9e6977e0fbd72cd832c4d5c3 /corruption/test 2^21 = 2^15*2^6 equals 8 GiB whereof 2^15 is the number of blocks per block group and 2^6 are the number of block groups that make a meta block group. The last checksum might be different depending on how the file is laid out across the physical blocks. The actual corruption occurs at physical block 63*2^15 = 2064384 which would be the location of the backup of the meta block group's block descriptor. During the on-line resize the file system will be converted to meta_bg starting at s_first_meta_bg which is 2 in the example - meaning all block groups after 16 GiB. However, in ext4_flex_group_add we might add block groups that are not part of the first meta block group yet. In the reproducer we achieved this by substracting the size of a whole block group from the point where the meta block group would start. This must be considered when updating the backup block group descriptors to follow the non-meta_bg layout. The fix is to add a test whether the group to add is already part of the meta block group or not.

Credit: 416baaa9-dc9f-4396-8d5f-8c081fb06d67 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Affected SoftwareAffected VersionHow to fix
debian/linux
5.10.218-1
5.10.221-1
6.1.94-1
6.1.99-1
6.9.10-1
6.9.12-1
ubuntu/linux<5.4.0-189.209
5.4.0-189.209
ubuntu/linux<5.15.0-116.126
5.15.0-116.126
ubuntu/linux<6.8.0-35.35
6.8.0-35.35
ubuntu/linux<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-aws<5.4.0-1128.138
5.4.0-1128.138
ubuntu/linux-aws<5.15.0-1065.71
5.15.0-1065.71
ubuntu/linux-aws<6.8.0-1009.9
6.8.0-1009.9
ubuntu/linux-aws<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-aws-5.15<5.15.0-1065.71~20.04.1
5.15.0-1065.71~20.04.1
ubuntu/linux-aws-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-aws-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-aws-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-aws-fips<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-aws-hwe<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure<5.4.0-1133.140
5.4.0-1133.140
ubuntu/linux-azure<5.15.0-1068.77
5.15.0-1068.77
ubuntu/linux-azure<6.8.0-1008.8
6.8.0-1008.8
ubuntu/linux-azure<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-4.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-5.15<5.15.0-1068.77~20.04.1
5.15.0-1068.77~20.04.1
ubuntu/linux-azure-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-5.4<5.4.0-1133.140~18.04.1
5.4.0-1133.140~18.04.1
ubuntu/linux-azure-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-fde<5.15.0-1068.77.1
5.15.0-1068.77.1
ubuntu/linux-azure-fde<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-fde-5.15<5.15.0-1068.77~20.04.1.1
5.15.0-1068.77~20.04.1.1
ubuntu/linux-azure-fde-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-azure-fips<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-bluefield<5.4.0-1088.95
5.4.0-1088.95
ubuntu/linux-bluefield<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-fips<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gcp<5.4.0-1132.141
5.4.0-1132.141
ubuntu/linux-gcp<5.15.0-1064.72
5.15.0-1064.72
ubuntu/linux-gcp<6.8.0-1008.9
6.8.0-1008.9
ubuntu/linux-gcp<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gcp-4.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gcp-5.15<5.15.0-1065.73~20.04.1
5.15.0-1065.73~20.04.1
ubuntu/linux-gcp-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gcp-5.4<5.4.0-1132.141~18.04.1
5.4.0-1132.141~18.04.1
ubuntu/linux-gcp-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gcp-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gcp-fips<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gke<5.15.0-1062.68
5.15.0-1062.68
ubuntu/linux-gke<6.8.0-1004.7
6.8.0-1004.7
ubuntu/linux-gke<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gkeop<5.4.0-1095.99
5.4.0-1095.99
ubuntu/linux-gkeop<5.15.0-1048.55
5.15.0-1048.55
ubuntu/linux-gkeop<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-gkeop-5.15<5.15.0-1048.55~20.04.1
5.15.0-1048.55~20.04.1
ubuntu/linux-gkeop-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-hwe<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-hwe-5.15<5.15.0-116.126~20.04.1
5.15.0-116.126~20.04.1
ubuntu/linux-hwe-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-hwe-5.4<5.4.0-189.209~18.04.1
5.4.0-189.209~18.04.1
ubuntu/linux-hwe-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-hwe-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-ibm<5.4.0-1075.80
5.4.0-1075.80
ubuntu/linux-ibm<5.15.0-1058.61
5.15.0-1058.61
ubuntu/linux-ibm<6.8.0-1006.6
6.8.0-1006.6
ubuntu/linux-ibm<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-ibm-5.15<5.15.0-1058.61~20.04.1
5.15.0-1058.61~20.04.1
ubuntu/linux-ibm-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-ibm-5.4<5.4.0-1075.80~18.04.1
5.4.0-1075.80~18.04.1
ubuntu/linux-ibm-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-intel<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-intel-iotg<5.15.0-1060.66
5.15.0-1060.66
ubuntu/linux-intel-iotg<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-intel-iotg-5.15<5.15.0-1060.66~20.04.1
5.15.0-1060.66~20.04.1
ubuntu/linux-intel-iotg-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-iot<5.4.0-1040.41
5.4.0-1040.41
ubuntu/linux-iot<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-kvm<5.4.0-1116.123
5.4.0-1116.123
ubuntu/linux-kvm<5.15.0-1062.67
5.15.0-1062.67
ubuntu/linux-kvm<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-laptop<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-lowlatency<5.15.0-116.126
5.15.0-116.126
ubuntu/linux-lowlatency<6.8.0-35.35.1
6.8.0-35.35.1
ubuntu/linux-lowlatency<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-lowlatency-hwe-5.15<5.15.0-116.126~20.04.1
5.15.0-116.126~20.04.1
ubuntu/linux-lowlatency-hwe-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-lowlatency-hwe-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-lts-xenial<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-nvidia<5.15.0-1060.61
5.15.0-1060.61
ubuntu/linux-nvidia<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-nvidia-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-oem-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-oem-6.8<6.8.0-1006.6
6.8.0-1006.6
ubuntu/linux-oem-6.8<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-oracle<5.4.0-1127.136
5.4.0-1127.136
ubuntu/linux-oracle<5.15.0-1063.69
5.15.0-1063.69
ubuntu/linux-oracle<6.8.0-1006.6
6.8.0-1006.6
ubuntu/linux-oracle<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-oracle-5.15<5.15.0-1063.69~20.04.1
5.15.0-1063.69~20.04.1
ubuntu/linux-oracle-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-oracle-5.4<5.4.0-1127.136~18.04.1
5.4.0-1127.136~18.04.1
ubuntu/linux-oracle-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-oracle-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-raspi<5.4.0-1112.124
5.4.0-1112.124
ubuntu/linux-raspi<5.15.0-1058.61
5.15.0-1058.61
ubuntu/linux-raspi<6.8.0-1005.5
6.8.0-1005.5
ubuntu/linux-raspi<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-raspi-5.4<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-riscv<6.8.0-35.35.1
6.8.0-35.35.1
ubuntu/linux-riscv<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-riscv-5.15<5.15.0-1061.65~20.04.1
5.15.0-1061.65~20.04.1
ubuntu/linux-riscv-5.15<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-riscv-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-starfive<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-starfive-6.5<6.9~<6.8.3
6.9~
6.8.3
ubuntu/linux-xilinx-zynqmp<5.4.0-1047.51
5.4.0-1047.51
ubuntu/linux-xilinx-zynqmp<6.9~<6.8.3
6.9~
6.8.3

Never miss a vulnerability like this again

Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.

Reference Links

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2024 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203