CVE-2022-49769
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
01/05/2025
Last modified:
02/05/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
gfs2: Check sb_bsize_shift after reading superblock<br />
<br />
Fuzzers like to scribble over sb_bsize_shift but in reality it&#39;s very<br />
unlikely that this field would be corrupted on its own. Nevertheless it<br />
should be checked to avoid the possibility of messy mount errors due to<br />
bad calculations. It&#39;s always a fixed value based on the block size so<br />
we can just check that it&#39;s the expected value.<br />
<br />
Tested with:<br />
<br />
mkfs.gfs2 -O -p lock_nolock /dev/vdb<br />
for i in 0 -1 64 65 32 33; do<br />
gfs2_edit -p sb field sb_bsize_shift $i /dev/vdb<br />
mount /dev/vdb /mnt/test && umount /mnt/test<br />
done<br />
<br />
Before this patch we get a withdraw after<br />
<br />
[ 76.413681] gfs2: fsid=loop0.0: fatal: invalid metadata block<br />
[ 76.413681] bh = 19 (type: exp=5, found=4)<br />
[ 76.413681] function = gfs2_meta_buffer, file = fs/gfs2/meta_io.c, line = 492<br />
<br />
and with UBSAN configured we also get complaints like<br />
<br />
[ 76.373395] UBSAN: shift-out-of-bounds in fs/gfs2/ops_fstype.c:295:19<br />
[ 76.373815] shift exponent 4294967287 is too large for 64-bit type &#39;long unsigned int&#39;<br />
<br />
After the patch, these complaints don&#39;t appear, mount fails immediately<br />
and we get an explanation in dmesg.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/15c83fa0fd659dd9fbdc940a560b61236e876a80
- https://git.kernel.org/stable/c/16670534c7cff1acd918a6a5ec751b14e7436b76
- https://git.kernel.org/stable/c/1ad197097343568066a8ffaa27ee7d0ae6d9f476
- https://git.kernel.org/stable/c/28275a7c84d21c55ab3282d897f284d8d527173c
- https://git.kernel.org/stable/c/5fa30be7ba81191b0a0c7239a89befc0c94286d5
- https://git.kernel.org/stable/c/670f8ce56dd0632dc29a0322e188cc73ce3c6b92
- https://git.kernel.org/stable/c/8b6534c9ae9dba5489703a19d8ba6c8f2cfa33c2
- https://git.kernel.org/stable/c/d6b1e8ea6f3418c3b461ad5a35cdc93c996b2c87