Description
In the Linux kernel, the following vulnerability has been resolved: f2fs: validate orphan inode entry count f2fs_recover_orphan_inodes() trusts the orphan block entry_count when replaying orphan inodes from the checkpoint pack. A corrupted entry_count larger than F2FS_ORPHANS_PER_BLOCK makes the recovery loop read past the ino[] array and interpret footer or following data as inode numbers. On a crafted image, mounting an unpatched kernel can drive orphan recovery into f2fs_bug_on() and panic the kernel. Validate entry_count before consuming entries so corrupted checkpoint data fails the mount with -EFSCORRUPTED and requests fsck instead. Set ERROR_INCONSISTENT_ORPHAN as well, so the corruption reason can be recorded in the superblock s_errors[] field. This gives fsck a persistent hint even though mount-time orphan recovery failure may leave no chance to persist SBI_NEED_FSCK through a checkpoint.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
127e670abfa7fa150f6550d620ded930f5bdb4e7 to < 210c210c92d78fdf5051bc55c5c69044b1a2150aaffected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < ad101d15716f5a24d1fa82a849f80430c805a3ddaffected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < d18c81f5d0ecd5796aa47d66d98f2dd54d8d0f70affected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < d2f236196d542ccd8505736e41c3a1d3f0305f6faffected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < 550511a2470f6d204fa07b331f048bd2d3c51280affected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < 8aad54746c251f2c2370118df766c0c82e2d2091affected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < 2e12381d4495dc8b0ff042c6856022b2e359835caffected127e670abfa7fa150f6550d620ded930f5bdb4e7 to < 846c499a65816d13f1186e3090e825e8bb8bcb8baffected
Linux Linux
Default version status: affected
3.8affected0 to < 3.8unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.96 to ≤ 6.12.*unaffected6.18.38 to ≤ 6.18.*unaffected7.1.3 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/210c210c92d78fdf5051bc55c5c69044b1a2150a ↗
- https://git.kernel.org/stable/c/ad101d15716f5a24d1fa82a849f80430c805a3dd ↗
- https://git.kernel.org/stable/c/d18c81f5d0ecd5796aa47d66d98f2dd54d8d0f70 ↗
- https://git.kernel.org/stable/c/d2f236196d542ccd8505736e41c3a1d3f0305f6f ↗
- https://git.kernel.org/stable/c/550511a2470f6d204fa07b331f048bd2d3c51280 ↗
- https://git.kernel.org/stable/c/8aad54746c251f2c2370118df766c0c82e2d2091 ↗
- https://git.kernel.org/stable/c/2e12381d4495dc8b0ff042c6856022b2e359835c ↗
- https://git.kernel.org/stable/c/846c499a65816d13f1186e3090e825e8bb8bcb8b ↗