HIGH Introduced in 2.6.12
ufs Cylinder OOB
CVE-2026-97926
CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
KernelScan AI6.8MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: ufs: validate cylinder group metadata before caching it ufs_read_cylinder() copies the cylinder group index and the rotor positions straight from the on-disk group and caches them without any check: ucpi->c_cgx = fs32_to_cpu(sb, ucg->cg_cgx); ucpi->c_rotor = fs32_to_cpu(sb, ucg->cg_rotor); ucpi->c_frotor = fs32_to_cpu(sb, ucg->cg_frotor); ucpi->c_irotor = fs32_to_cpu(sb, ucg->cg_irotor); They are then used as indices during allocation and free: - c_cgx indexes the cylinder summary array as UFS_SB(sb)->fs_cs(ucpi->c_cgx), so a value past s_ncg writes a 32 bit count outside the s_csp allocation. - c_frotor becomes a bitmap scan start, start = c_frotor >> 3, and then length = ((s_fpg + 7) >> 3) - start. A start beyond the block bitmap wraps the unsigned length to a huge value, so ubh_scanc() walks far past the cylinder group buffers. c_irotor drives the inode bitmap the same way. A crafted image can set any of these freely, turning an ordinary allocation into an out of bounds access. Reject a cylinder group whose recorded index does not match the group being read, or whose rotors fall outside the group, before the metadata is cached. Valid filesystems keep cg_cgx equal to the group number and the rotors within the group, so only malformed images are rejected.
02KernelScan AI Analysis
Risk summary
A crafted UFS filesystem image can cause the kernel to use unchecked on-disk values as array indices and bitmap scan offsets, resulting in out-of-bounds memory reads and writes in kernel heap. The bug is reachable by mounting a malicious UFS image — either through physical media (USB/SD card) that an automount daemon processes, or by a root user manually mounting the image.
Vulnerability analysis
The UFS driver copies bookkeeping numbers from a mounted disk image into kernel memory without first checking that they make sense. It then uses those numbers as positions inside internal arrays and bitmaps. A malicious filesystem image can supply out-of-range values: a fake group index makes the kernel write tracking data outside the intended summary array, and fake rotor positions make the kernel scan memory far past the end of block or inode bitmaps. The fix checks that the recorded group index matches the group actually being read and that rotor values stay within the group’s bounds before saving the metadata. An attacker can trigger the flaw by getting a crafted UFS image mounted on the target, either by inserting removable media that an automount daemon mounts automatically or by having an administrator mount it manually.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 2.6.12 | 5.10.271 | 88cccb6beba1 |
| 5.15 | 2.6.12 | 5.15.222 | f560a9e33365 |
| 6.1 | 2.6.12 | 6.1.189 | e4c5cc9688c3 |
| 6.6 | 2.6.12 | 6.6.158 | 58c0c414b2b8 |
| 6.12 | 2.6.12 | 6.12.111 | 5902a9506688 |
| 6.18 | 2.6.12 | 6.18.53 | 87b12dc360a0 |
| 7.2 | 2.6.12 | 7.2.7 | abde9eb33106 |
| mainline | 2.6.12 | 7.3-rc3 | c9d263be2680 |
| cip/6.12 | 2.6.12 | 6.12.111-cip32 | 5902a9506688 |