CVE-2024-35995 in Linuxinfo

Summary

by MITRE • 05/20/2024

In the Linux kernel, the following vulnerability has been resolved:

ACPI: CPPC: Use access_width over bit_width for system memory accesses

To align with ACPI 6.3+, since bit_width can be any 8-bit value, it cannot be depended on to be always on a clean 8b boundary. This was uncovered on the Cobalt 100 platform.

SError Interrupt on CPU26, code 0xbe000011 -- SError CPU: 26 PID: 1510 Comm: systemd-udevd Not tainted 5.15.2.1-13 #1 Hardware name: MICROSOFT CORPORATION, BIOS MICROSOFT CORPORATION pstate: 62400009 (nZCv daif +PAN -UAO +TCO -DIT -SSBS BTYPE=--) pc : cppc_get_perf_caps+0xec/0x410 lr : cppc_get_perf_caps+0xe8/0x410 sp : ffff8000155ab730 x29: ffff8000155ab730 x28: ffff0080139d0038 x27: ffff0080139d0078 x26: 0000000000000000 x25: ffff0080139d0058 x24: 00000000ffffffff x23: ffff0080139d0298 x22: ffff0080139d0278 x21: 0000000000000000 x20: ffff00802b251910 x19: ffff0080139d0000 x18: ffffffffffffffff x17: 0000000000000000 x16: ffffdc7e111bad04 x15: ffff00802b251008 x14: ffffffffffffffff x13: ffff013f1fd63300 x12: 0000000000000006 x11: ffffdc7e128f4420 x10: 0000000000000000 x9 : ffffdc7e111badec x8 : ffff00802b251980 x7 : 0000000000000000 x6 : ffff0080139d0028 x5 : 0000000000000000 x4 : ffff0080139d0018 x3 : 00000000ffffffff x2 : 0000000000000008 x1 : ffff8000155ab7a0 x0 : 0000000000000000 Kernel panic - not syncing: Asynchronous SError Interrupt CPU: 26 PID: 1510 Comm: systemd-udevd Not tainted 5.15.2.1-13 #1 Hardware name: MICROSOFT CORPORATION, BIOS MICROSOFT CORPORATION Call trace: dump_backtrace+0x0/0x1e0 show_stack+0x24/0x30 dump_stack_lvl+0x8c/0xb8 dump_stack+0x18/0x34 panic+0x16c/0x384 add_taint+0x0/0xc0 arm64_serror_panic+0x7c/0x90 arm64_is_fatal_ras_serror+0x34/0xa4 do_serror+0x50/0x6c el1h_64_error_handler+0x40/0x74 el1h_64_error+0x7c/0x80 cppc_get_perf_caps+0xec/0x410 cppc_cpufreq_cpu_init+0x74/0x400 [cppc_cpufreq]
cpufreq_online+0x2dc/0xa30 cpufreq_add_dev+0xc0/0xd4 subsys_interface_register+0x134/0x14c cpufreq_register_driver+0x1b0/0x354 cppc_cpufreq_init+0x1a8/0x1000 [cppc_cpufreq]
do_one_initcall+0x50/0x250 do_init_module+0x60/0x27c load_module+0x2300/0x2570 __do_sys_finit_module+0xa8/0x114 __arm64_sys_finit_module+0x2c/0x3c invoke_syscall+0x78/0x100 el0_svc_common.constprop.0+0x180/0x1a0 do_el0_svc+0x84/0xa0 el0_svc+0x2c/0xc0 el0t_64_sync_handler+0xa4/0x12c el0t_64_sync+0x1a4/0x1a8

Instead, use access_width to determine the size and use the offset and width to shift and mask the bits to read/write out. Make sure to add a check for system memory since pcc redefines the access_width to subspace id.

If access_width is not set, then fall back to using bit_width.

[ rjw: Subject and changelog edits, comment adjustments ]

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 09/24/2025

The vulnerability described in CVE-2024-35995 resides within the Linux kernel's ACPI implementation, specifically affecting the CPPC (Collaborative Processor Performance Control) subsystem. This flaw manifests as an asynchronous SError interrupt on CPU26 during system memory access operations, resulting in a kernel panic and system instability. The root cause stems from improper handling of bit width versus access width parameters when reading performance capabilities from ACPI tables. The issue was particularly evident on the Cobalt 100 platform, where the bit_width parameter could assume any 8-bit value, potentially causing misalignment with memory boundaries.

The technical implementation flaw occurs in the cppc_get_perf_caps function, where the kernel incorrectly relies on bit_width for determining memory access boundaries rather than using access_width. According to ACPI specification 6.3 and later versions, access_width provides the correct memory access size information, while bit_width can be any 8-bit value and does not guarantee alignment to clean 8-bit boundaries. This misalignment leads to memory access violations that trigger SError interrupts, as evidenced by the kernel panic trace showing the fault occurring at cppc_get_perf_caps+0xec/0x410. The improper memory access pattern causes the system to enter an unrecoverable state, necessitating a complete system reboot.

The operational impact of this vulnerability extends beyond simple system crashes, representing a critical security and stability risk for embedded systems and servers utilizing the affected kernel versions. Systems running on ARM64 architectures with CPPC support are particularly vulnerable, as the ARM architecture's memory management unit (MMU) cannot properly handle misaligned memory accesses that result from this flaw. The vulnerability affects the CPU frequency scaling subsystem, potentially causing complete system hangs or unexpected behavior during CPU online/offline operations, which could compromise service availability in production environments. Organizations relying on automated system management or virtualized environments may experience cascading failures when this vulnerability triggers.

Mitigation strategies for CVE-2024-35995 involve updating to kernel versions that implement the corrected approach using access_width over bit_width for system memory accesses. The fix ensures proper handling of memory access boundaries by utilizing access_width to determine size and employing offset and width parameters to shift and mask bits correctly. Additionally, the implementation includes a fallback mechanism to bit_width when access_width is not set, maintaining backward compatibility. System administrators should also consider implementing runtime checks for system memory access patterns and monitoring for SError interrupts that could indicate this vulnerability's exploitation. Organizations should prioritize patching systems running kernel versions prior to the fix, particularly those utilizing ARM64 platforms with CPPC support, as this vulnerability represents a direct threat to system stability and could potentially be exploited for denial-of-service attacks or system compromise. This vulnerability aligns with CWE-129 and CWE-131 categories related to improper input validation and buffer overflow conditions, and could be categorized under ATT&CK technique T1499 for endpoint denial of service.

Reservation

05/17/2024

Disclosure

05/20/2024

Moderation

accepted

CPE

ready

EPSS

0.00210

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!