CVE-2025-38415: Squashfs: check return result of sb_min_blocksize
In the Linux kernel, the following vulnerability has been resolved:
Squashfs: check return result of sbminblocksize
Syzkaller reports an "UBSAN: shift-out-of-bounds in squashfsbioread" bug.
Syzkaller forks multiple processes which after mounting the Squashfs filesystem, issues an ioctl("/dev/loop0", LOOPSETBLOCKSIZE, 0x8000). Now if this ioctl occurs at the same time another process is in the process of mounting a Squashfs filesystem on /dev/loop0, the failure occurs. When this happens the following code in squashfsfillsuper() fails.
---- msblk->devblksize = sbminblocksize(sb, SQUASHFSDEVBLKSIZE); msblk->devblksizelog2 = ffz(~msblk->devblksize); ----
sbminblocksize() returns 0, which means msblk->devblksize is set to 0.
As a result, ffz(~msblk->devblksize) returns 64, and msblk->devblksizelog2 is set to 64.
This subsequently causes the
UBSAN: shift-out-of-bounds in fs/squashfs/block.c:195:36 shift exponent 64 is too large for 64-bit type 'u64' (aka 'unsigned long long')
This commit adds a check for a 0 return by sbminblocksize().
Other sources
In the Linux kernel, the following vulnerability has been resolved:
Squashfs: check return result of sbminblocksize
Syzkaller reports an "UBSAN: shift-out-of-bounds in squashfsbioread" bug.
Syzkaller forks multiple processes which after mounting the Squashfs filesystem, issues an ioctl("/dev/loop0", LOOPSETBLOCKSIZE, 0x8000). Now if this ioctl occurs at the same time another process is in the process of mounting a Squashfs filesystem on /dev/loop0, the failure occurs. When this happens the following code in squashfsfillsuper() fails.
---- msblk-devblksize = sbminblocksize(sb, SQUASHFSDEVBLKSIZE); msblk-devblksizelog2 = ffz(~msblk-devblksize); ----
sbminblocksize() returns 0, which means msblk-devblksize is set to 0.
As a result, ffz(~msblk-devblksize) returns 64, and msblk-devblksizelog2 is set to 64.
This subsequently causes the
UBSAN: shift-out-of-bounds in fs/squashfs/block.c:195:36 shift exponent 64 is too large for 64-bit type 'u64' (aka 'unsigned long long')
This commit adds a check for a 0 return by sbminblocksize().
— IBM
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-38415?
CVE-2025-38415 has been rated as medium severity due to potential memory corruption risks.
How do I fix CVE-2025-38415?
To fix CVE-2025-38415, update your Linux kernel to the latest version that addresses this vulnerability.
What systems are affected by CVE-2025-38415?
CVE-2025-38415 affects all versions of the Linux kernel that include the Squashfs filesystem functionality.
What are the potential consequences of CVE-2025-38415?
Exploitation of CVE-2025-38415 may lead to system crashes or arbitrary code execution.
Is there a workaround for CVE-2025-38415?
Currently, the best approach is to apply the kernel update as there are no known effective workarounds.