ext4: fix corruption during on-line resize
Published May 17, 2024
5.5
MEDIUMCVSS 3.1
EPSS 0.27%
Description
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.
Affected products
-
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version StatusaffectedConstraints
- Version
-
- Version 3.7StatusaffectedConstraints-
- Version 0StatusunaffectedConstraints<3.7
- Version 4.19.312StatusunaffectedConstraints<=4.19.*
- Version 5.10.215StatusunaffectedConstraints<=5.10.*
- Version 5.15.154StatusunaffectedConstraints<=5.15.*
- Version 5.4.274StatusunaffectedConstraints<=5.4.*
- Version 6.1.84StatusunaffectedConstraints<=6.1.*
- Version 6.6.24StatusunaffectedConstraints<=6.6.*
- Version 6.7.12StatusunaffectedConstraints<=6.7.*
- Version 6.8.3StatusunaffectedConstraints<=6.8.*
- Version 6.9StatusunaffectedConstraints<=*
- Version
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Linux | Linux | unaffected |
| ||||||||||||||||||||||||||||||||||||
| Linux | Linux | affected |
|
Configuration 1
- ≥ 3.7 · < 4.19.312
- ≥ 4.20 · < 5.4.274
- ≥ 5.5 · < 5.10.215
- ≥ 5.11 · < 5.15.154
- ≥ 5.16 · < 6.1.84
- ≥ 6.2 · < 6.6.24
- ≥ 6.7 · < 6.7.12
- ≥ 6.8 · < 6.8.3
Configuration 2
- 10.0
No data.
Red Hat Enterprise Linux 8
kernel-0:4.18.0-553.16.1.el8_10
Fixed · RHSA-2024:5101
Red Hat Enterprise Linux 8
kernel-rt-0:4.18.0-553.16.1.rt7.357.el8_10
Fixed · RHSA-2024:5102
Red Hat Enterprise Linux 9
kernel-0:5.14.0-503.11.1.el9_5
Fixed · RHSA-2024:9315
Red Hat Enterprise Linux 9
kernel-0:5.14.0-503.11.1.el9_5
Fixed · RHSA-2024:9315
Red Hat Enterprise Linux 9.4 Extended Update Support
kernel-0:5.14.0-427.76.1.el9_4
Fixed · RHSA-2025:10701
Red Hat Enterprise Linux 6
kernel
Out of support scope
Red Hat Enterprise Linux 7
kernel
Out of support scope
Red Hat Enterprise Linux 7
kernel-rt
Out of support scope
Red Hat Enterprise Linux 9
kernel-rt
Will not fix
| Product | Package | State | Advisory |
|---|---|---|---|
| Red Hat Enterprise Linux 8 | kernel-0:4.18.0-553.16.1.el8_10 | Fixed | RHSA-2024:5101 |
| Red Hat Enterprise Linux 8 | kernel-rt-0:4.18.0-553.16.1.rt7.357.el8_10 | Fixed | RHSA-2024:5102 |
| Red Hat Enterprise Linux 9 | kernel-0:5.14.0-503.11.1.el9_5 | Fixed | RHSA-2024:9315 |
| Red Hat Enterprise Linux 9 | kernel-0:5.14.0-503.11.1.el9_5 | Fixed | RHSA-2024:9315 |
| Red Hat Enterprise Linux 9.4 Extended Update Support | kernel-0:5.14.0-427.76.1.el9_4 | Fixed | RHSA-2025:10701 |
| Red Hat Enterprise Linux 6 | kernel | Out of support scope | n/a |
| Red Hat Enterprise Linux 7 | kernel | Out of support scope | n/a |
| Red Hat Enterprise Linux 7 | kernel-rt | Out of support scope | n/a |
| Red Hat Enterprise Linux 9 | kernel-rt | Will not fix | n/a |
No package ranges for this CVE.
Remediation
Red Hat mitigation
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.
No CWE recorded.
References (19)
- https://access.redhat.com/security/cve/CVE-2024-35807 Vendor Advisory
- https://bugzilla.redhat.com/show_bug.cgi?id=2281221 Issue Tracking
- https://cert-portal.siemens.com/productcert/html/ssa-265688.html
- https://cert-portal.siemens.com/productcert/html/ssa-398330.html
- https://euvd.enisa.europa.eu/vulnerability/EUVD-2024-35799 Advisory
- https://git.kernel.org/stable/c/239c669edb2bffa1aa2612519b1d438ab35d6be6 Patch
- https://git.kernel.org/stable/c/37b6a3ba793bbbae057f5b991970ebcc52cb3db5 Patch
- https://git.kernel.org/stable/c/722d2c01b8b108f8283d1b7222209d5b2a5aa7bd Patch
- https://git.kernel.org/stable/c/75cc31c2e7193b69f5d25650bda5bb42ed92f8a1 Patch
- https://git.kernel.org/stable/c/a6b3bfe176e8a5b05ec4447404e412c2a3fc92cc Patch
- https://git.kernel.org/stable/c/b461910af8ba3bed80f48c2bf852686d05c6fc5c Patch
- https://git.kernel.org/stable/c/e8e8b197317228b5089ed9e7802dadf3ccaa027a Patch
- https://git.kernel.org/stable/c/ee4e9c1976147a850f6085a13fca95bcaa00d84c Patch
- https://git.kernel.org/stable/c/fb1088d51bbaa0faec5a55d4f5818a9ab79e24df Patch
- https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html Third Party Advisory
- https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html Third Party Advisory
- https://lore.kernel.org/linux-cve-announce/2024051740-CVE-2024-35807-2a9e@gregkh/T
- https://nvd.nist.gov/vuln/detail/CVE-2024-35807
- https://www.cve.org/CVERecord?id=CVE-2024-35807
Change history (0)
No recorded changes yet.