Cloudanix VulnDB

CVE-2026-98623

None

CVSS

—

EPSS

0.2%

Published

Oct 18, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the graphics driver for certain NVIDIA cards lets a local user crash the machine or read a little extra memory by feeding bad values into a debugging file.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Data Exposure
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Out-of-bounds read in nvkm_clk_ustate_update when list_for_each_entry exits without a match: the loop cursor is left pointing at the list head (cast to struct nvkm_pstate) and subsequently dereferenced, reachable by writing an arbitrary or nonexistent pstate ID into the 'pstate' debugfs file.

Why it matters to the business

On systems exposing Nouveau debugfs, an unprivileged local user can trigger kernel memory reads outside expected bounds, risking crashes, denial of service, or limited information disclosure; the issue is five days old with negligible exploit probability and no known campaigns.

How an attack unfolds

An attacker with write access to the Nouveau 'pstate' debugfs entry supplies an ID absent from clk->states (or any ID when the perf list is empty); the function skips the break path, treats the list head as a valid pstate, and performs the pstate->pstate != req comparison, producing an invalid memory access.

How to fix it

Apply the upstream fix that replaces the bare list cursor with an explicit 'found' flag; rebuild and deploy the patched kernel; if the fix is unavailable, restrict debugfs access via mount options or file permissions until the update can be installed.

How to confirm the fix worked

Confirm the presence of the 'found' variable and early break logic inside nvkm_clk_ustate_update in the running kernel source; attempt to reproduce the original condition by writing an invalid ID to the pstate debugfs file while monitoring for oops or slab warnings.

Typical attack path

  1. Locate and open /sys/kernel/debug/dri/.../pstate (or equivalent Nouveau debugfs file)
  2. Write a nonexistent or out-of-range pstate identifier to the file
  3. Kernel executes nvkm_clk_ustate_update with the attacker-supplied value
  4. list_for_each_entry completes without matching, leaving cursor at list head
  5. Subsequent pointer dereference reads outside allocated structures

How to detect it

Monitor kernel logs for oops or BUG entries referencing nvkm_clk_ustate_update or list cursor dereference near drm/nouveau; audit access attempts to the pstate debugfs file; inspect any user-space processes writing numeric IDs to Nouveau debugfs entries.

  • nvkm_clk_ustate_update
  • pstate->pstate != req
  • /sys/kernel/debug/dri/.*/pstate
  • list_for_each_entry.*clk->states

What your security team should do

  • Patch kernels within the next maintenance window given the five-day publication window
  • Temporarily restrict Nouveau debugfs exposure on multi-tenant or untrusted systems
  • Add the function name and debugfs path to existing kernel integrity monitoring
  • Re-evaluate after 30 days if EPSS remains flat and no exploitation reports appear

The record

In the Linux kernel, the following vulnerability has been resolved: drm/nouveau/clk: fix list cursor use after loop in nvkm_clk_ustate_update If list_for_each_entry() exits without hitting a break then "pstate" is not a valid pstate pointer. Introduce a "found" variable instead. The check is reachable from userspace: nvkm_clk_ustate_update() takes the pstate id straight from the 'pstate' debugfs file, so requesting an id that is not in clk->states - or any id at all when the perf tables are broken and the list is empty - makes the pstate->pstate != req test dereference the list head cast to a struct nvkm_pstate, which is an out-of-bounds read. [Francesco: rebased on drm-misc-next, expanded the commit message]

Affected packages

Ecosystem Package Introduced Fixed