CVE-2026-97926

ufs: validate cylinder group metadata before caching it

State
Published
Severity
7.0 High
Published
Sep 25, 2026
Updated
Oct 19, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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.

Scores

CVSSScoreVectorSource
3.17.0 HighCVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 88cccb6beba136b73f0caf80e59457e1b3c0ca1eAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before f560a9e33365c460827c735fd86435f9213f1aedAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before e4c5cc9688c3e69d07d888853388549ae26c0521Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 58c0c414b2b8d099d33da494a354fa836ca6c10bAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 5902a95066883cf96fa15b2680694fc5dd0c7d11Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 87b12dc360a002eb2d498aa4f01e84347019612dAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before abde9eb33106850dfa367ad3965d3588bb8558d5Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before c9d263be26806d388129fab8c6904bed197fc6afAffected
LinuxLinux
  • 2.6.12Affected
  • before 2.6.12Not affected
  • 5.10.271 through 5.10.*Not affected
  • 5.15.222 through 5.15.*Not affected
  • 6.1.189 through 6.1.*Not affected
  • 6.6.158 through 6.6.*Not affected
  • 6.12.111 through 6.12.*Not affected
  • 6.18.53 through 6.18.*Not affected
  • 7.2.7 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.