ZeroHour

CVE-2026-89965

niche

Out-of-bounds write in Linux kernel NVDIMM BTT driver via crafted arena

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's NVDIMM Block Translation Table (BTT) driver reads the nfree field of the arena info block from the persistent-memory medium without validating it, and sizes the per-lane freelist[] and rtt[] arrays by that untrusted value, while the I/O path indexes those arrays with a lane number bounded only by the region's lane count (ND_MAX_LANES). An attacker who supplies a crafted or foreign arena whose nfree is below the lane count causes freelist[lane]/rtt[lane] to run past the end of the allocation, producing an out-of-bounds write in kernel memory. Given the CVSS vector (local attack, low privileges, no user interaction), this can lead to kernel memory corruption with high-impact confidentiality, integrity, and availability consequences such as privilege escalation or system crashes. Only systems running Linux kernels with the nvdimm BTT driver enabled and NVDIMM/persistent-memory hardware (or an emulated equivalent) presenting such an arena are affected. No public proof-of-concept or in-the-wild exploitation is known, and the flaw is not listed in CISA's KEV.

What to do: Update to a vendor kernel that includes the nvdimm/btt fix rejecting arenas whose nfree is below the lane count (check your distribution's kernel advisory for the specific fixed build). Until patched, restrict local unprivileged access on NVDIMM-equipped systems and avoid attaching or mounting BTT namespaces created from untrusted or foreign media. Administrators can use ndctl to check whether any namespaces actually run in BTT mode; hosts without NVDIMM hardware or the BTT driver are not affected.

Affected
Linux kernel (nvdimm/btt driver)Kernel versions with the nvdimm BTT driver enabled prior to the fix commit; the advisory does not state specific affected or fixed version numbers, and systems
Estimated exposure
nichelikely no more than tens of thousands of systems worldwide (exposure requires NVDIMM/persistent-memory hardware with the optional BTT layer and local access) — BTT is an optional abstraction over NVDIMM persistent-memory devices, which are installed in only a small subset of enterprise servers, and the flaw requires local low-privileged access to a crafted arena rather than any network-reachable…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: nvdimm/btt: reject an arena whose nfree is below the lane count The BTT info block's nfree field, the number of reserve free blocks, is read from the medium without validation. btt_freelist_init() and btt_rtt_init() size the per-lane freelist[] and rtt[] arrays by nfree, but the I/O path indexes them by the lane from nd_region_acquire_lane(), which is bounded by nd_region->num_lanes (ND_MAX_LANES), not by nfree. A crafted or foreign arena whose nfree is below the lane count makes freelist[lane]/rtt[lane] run past the allocation: an out-of-bounds write. btt.rst documents the nlanes = min(nfree, num_cpus) invariant, which the code does not currently honor: num_lanes is ND_MAX_LANES regardless of nfree. Reject an arena whose nfree is below num_lanes at discovery, before the per-lane arrays are allocated, enforcing that invariant.

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.