# CVE-2026-97926: ufs: validate cylinder group metadata before caching it

> A crafted UFS filesystem image can trigger out-of-bounds memory access in the Linux kernel, potentially leading to code execution or system crashes.

- **Severity:** High 7.0 (`CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 25 Sep 2026
- **Updated:** 19 Oct 2026
- **Also known as:** AZL-104430, BELL-CVE-2026-97926, DEBIAN-CVE-2026-97926, GHSA-35q6-8fhf-pg65, UBUNTU-CVE-2026-97926

## What is CVE-2026-97926?

CVE-2026-97926 is a high-severity memory corruption vulnerability in Linux, published on 25 Sep 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.

### Official 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.

## Which versions are affected by CVE-2026-97926?


## How do I fix CVE-2026-97926?

Apply the vendor's patch.

## Is CVE-2026-97926 being exploited?

There is no known exploitation of CVE-2026-97926 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-97926 and fix it if it is affected.

What it is: CVE-2026-97926 is a high-severity memory corruption vulnerability in Linux, published on 25 Sep 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.
Exploitation: There is no known exploitation of CVE-2026-97926 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-97926/ (Markdown: https://insights.sbomify.com/CVE-2026-97926/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-97926
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-97926
- OSV: https://osv.dev/vulnerability/CVE-2026-97926

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-97926/
Summaries are generated and may contain mistakes; the official description above is the record.
