Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-31571

CVE-2026-31571: Linux Kernel Use-After-Free Vulnerability

CVE-2026-31571 is a use-after-free vulnerability in the Linux kernel's drm/i915 graphics driver affecting NV12 plane handling. This article covers the technical details, affected kernel versions, security impact, and mitigation.

Updated:

CVE-2026-31571 Overview

CVE-2026-31571 affects the Linux kernel's Intel i915 Direct Rendering Manager (DRM) driver. The vulnerability resides in the NV12 plane handling logic, where unlink_nv12_plane() clobbers parts of plane state previously configured by plane_atomic_check(). The flaw triggers when a plane previously selected as a Y plane is reconfigured as a normal plane by userspace. A removed visibility check now allows unlink_nv12_plane() to emit a WARN and overwrite valid state. The issue affects Linux kernel 6.15 and 7.0 release candidates rc1 through rc7. Exploitation requires local access and low privileges, resulting in high availability impact.

Critical Impact

Local low-privileged users can trigger kernel state corruption in the i915 graphics driver, producing kernel warnings and potential denial of service on affected Intel graphics systems.

Affected Products

  • Linux kernel 6.15
  • Linux kernel 7.0-rc1 through 7.0-rc7
  • Systems using the Intel i915 DRM graphics driver

Discovery Timeline

  • 2026-04-24 - CVE-2026-31571 published to NVD
  • 2026-04-27 - Last updated in NVD database

Technical Details for CVE-2026-31571

Vulnerability Analysis

The vulnerability resides in the Intel i915 DRM driver's atomic modesetting path. The function unlink_nv12_plane() is responsible for detaching a plane previously used as the Y component of an NV12 format buffer. The function plane_atomic_check() validates and constructs the plane state requested by userspace through the DRM atomic API.

When userspace reconfigures a plane that was previously a Y plane into a normal plane, plane_atomic_check() runs first and computes correct state. unlink_nv12_plane() then executes and overwrites portions of that freshly computed state. The original implementation skipped clearing based on plane visibility, which masked the ordering bug. Removing that check exposed the race between state computation and state teardown.

Root Cause

The root cause is an incorrect ordering of operations during atomic commit processing in the i915 driver. State cleanup logic for NV12 planes runs after state computation rather than before it. The upstream fix relocates the unlink_nv12_plane() call to execute before new plane state is computed, eliminating the clobbering condition [CWE-noinfo].

Attack Vector

The attack vector is local and requires low privileges. An attacker with access to the DRM device node, typically /dev/dri/card0, can issue crafted atomic modeset ioctls that reconfigure a plane between NV12 Y-plane usage and normal plane usage. Triggering the ordering bug produces a kernel WARN and corrupts plane state, leading to denial of service. The vulnerability does not provide confidentiality or integrity impact according to the CVSS vector.

No public exploit or proof-of-concept code has been published for this issue. The vulnerability is described in the upstream kernel commit references but no weaponized code is required to discuss the mechanism.

Detection Methods for CVE-2026-31571

Indicators of Compromise

  • Kernel ring buffer entries containing WARN traces originating from unlink_nv12_plane() in the i915 driver
  • Repeated DRM atomic commit failures associated with NV12 format plane reconfiguration
  • Unexpected display driver resets or graphics subsystem instability on Intel GPU systems

Detection Strategies

  • Monitor dmesg and journalctl -k output for i915 WARN_ON traces referencing plane state functions
  • Audit kernel versions across the fleet to identify hosts running 6.15 or 7.0 release candidates
  • Correlate display driver crashes with processes invoking DRM atomic ioctls on /dev/dri/card*

Monitoring Recommendations

  • Forward kernel logs to a centralized logging or SIEM platform and alert on WARN or BUG events from the i915 module
  • Track package versions of the Linux kernel through configuration management tooling
  • Restrict and audit local user access to DRM device nodes through group membership policies

How to Mitigate CVE-2026-31571

Immediate Actions Required

  • Upgrade to a Linux kernel release that incorporates the upstream fix referenced in commits 12f3b6cbab8f, 70e2eb91cb63, and bfa71b7a9dc6
  • Identify systems running affected kernel versions 6.15 and 7.0-rc1 through 7.0-rc7 and prioritize patching
  • Restrict local shell access on multi-user systems running affected kernels until patches are applied

Patch Information

The fix relocates the NV12 plane unlink operation to execute before new plane state computation. Patch details are available in the upstream kernel repository. See the Kernel Git Commit Details, Kernel Git Commit Update, and Kernel Git Commit Improvement. Distribution-provided stable kernel updates should be applied through standard package management channels.

Workarounds

  • Avoid running the affected kernel release candidates in production environments; revert to a stable LTS kernel
  • Restrict access to DRM device nodes by tightening group permissions on /dev/dri/card*
  • Disable the i915 driver on systems that do not require Intel graphics acceleration
bash
# Verify current kernel version and check group ownership on DRM nodes
uname -r
ls -l /dev/dri/
# Restrict access to the video group only
sudo chmod 660 /dev/dri/card0
sudo chown root:video /dev/dri/card0

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.