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

CVE-2026-64512: Linux Kernel ACPI CPPC UBSAN Vulnerability

CVE-2026-64512 is a UBSAN shift-out-of-bounds flaw in Linux kernel ACPI CPPC driver that occurs due to field misuse in access_width validation. This article covers the technical details, affected systems, and mitigation.

Updated:

CVE-2026-64512 Overview

CVE-2026-64512 is a Linux kernel vulnerability in the Advanced Configuration and Power Interface (ACPI) Collaborative Processor Performance Control (CPPC) subsystem. The flaw resides in drivers/acpi/cppc_acpi.c and triggers an Undefined Behavior Sanitizer (UBSAN) warning due to a shift-out-of-bounds condition. The issue occurs because the reg->access_width field has different meanings depending on the reg->space_id type. When the space type is ACPI_ADR_SPACE_PLATFORM_COMM, the field indicates the Platform Communication Channel (PCC) region rather than an access width, and values greater than 4 cause an invalid bit shift on a 32-bit integer.

Critical Impact

The vulnerability produces UBSAN warnings during CPU frequency initialization on affected ARM64 and other platforms using CPPC, potentially indicating undefined behavior in kernel execution paths.

Affected Products

  • Linux kernel versions containing the affected cppc_acpi.c implementation prior to the fix
  • Systems using ACPI CPPC with ACPI_ADR_SPACE_PLATFORM_COMM register space
  • ARM64 platforms leveraging the cppc_cpufreq driver

Discovery Timeline

  • 2026-07-25 - CVE-2026-64512 published to NVD
  • 2026-07-25 - Last updated in NVD database

Technical Details for CVE-2026-64512

Vulnerability Analysis

The vulnerability originates in the cpc_write function within drivers/acpi/cppc_acpi.c at line 1090. The ACPI CPPC subsystem uses a generic register descriptor structure where access_width is interpreted differently based on space_id. For memory-mapped I/O and system I/O regions, access_width encodes the register access size. For ACPI_ADR_SPACE_PLATFORM_COMM regions, however, it encodes the PCC subspace identifier.

When kernel code performs a bit shift operation using this field without validating the region type, values greater than 4 produce a shift exponent of 32 or larger applied to a 32-bit integer. This is undefined behavior in C and is detected by UBSAN at runtime. The kernel call trace shows the issue surfacing through cppc_cpufreq_cpu_init and cppc_set_perf during CPU frequency driver initialization.

Root Cause

The root cause is field misuse combined with missing input validation. The access_width field is polymorphic across space_id types, but the shift computation treated it uniformly. The fix validates the region type and confirms access_width holds a valid value before performing the shift, and returns bit_width directly for ACPI_ADR_SPACE_PLATFORM_COMM regions rather than applying size correction logic.

Attack Vector

This is a local, kernel-side condition triggered during hardware initialization on systems whose firmware exposes CPPC registers using the PCC address space. Exploitation requires the affected firmware configuration to be present and the CPPC cpufreq driver to load. See the Linux kernel commit fix for technical details of the corrected shift logic.

Detection Methods for CVE-2026-64512

Indicators of Compromise

  • Kernel log entries containing UBSAN: shift-out-of-bounds in drivers/acpi/cppc_acpi.c:1090
  • Messages reporting shift exponent 32 is too large for 32-bit type 'int'
  • Call traces including __ubsan_handle_shift_out_of_bounds, cpc_write, and cppc_set_perf

Detection Strategies

  • Monitor dmesg and /var/log/kern.log for UBSAN warnings referencing cppc_acpi.c
  • Query kernel version and ACPI CPPC configuration across the fleet to identify hosts running unpatched builds
  • Correlate UBSAN traces with cppc_cpufreq module loads to confirm the specific code path

Monitoring Recommendations

  • Forward kernel logs from Linux hosts to a centralized log platform for pattern matching on UBSAN signatures
  • Establish alerting on repeated shift-out-of-bounds warnings from ACPI subsystem drivers
  • Track kernel package versions and CPPC-enabled hardware inventory to prioritize patch deployment

How to Mitigate CVE-2026-64512

Immediate Actions Required

  • Apply the upstream Linux kernel patches referenced in the stable kernel commits
  • Update to a kernel release that incorporates the ACPI CPPC field validation fix
  • Verify vendor kernel builds from your Linux distribution include the backported fix

Patch Information

The fix is available through multiple stable kernel commits, including commit b54c4632, commit e904596b, commit 37f28bf8, commit 2fb80e96, commit dc066bd1, commit 1b1acf2d, and commit f29dc613. The patch validates the register region type and ensures access_width holds a valid value before the shift operation.

Workarounds

  • Where feasible, unload the cppc_cpufreq module on affected systems until a patched kernel is deployed
  • Consider selecting an alternative cpufreq governor that does not rely on CPPC on affected hardware
  • Coordinate with hardware vendors to confirm firmware ACPI table conformance for CPPC register descriptions

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.