🇰🇷 한글 설명
리눅스 커널의 ACPI CPPC 드라이버에서 reg->access_width 필드 오용으로 인해 UBSAN 경고가 발생하는 취약점입니다. 특정 플랫폼 통신 영역에서 access_width 값이 4보다 클 경우 잘못된 비트 시프트 연산이 발생하여 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터의 전력 관리 기능을 담당하는 코드에서 숫자를 계산하는 방식에 오류가 있어 시스템에 경고를 발생시키는 문제입니다. 이 오류는 시스템이 예상치 못한 방식으로 동작하게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ACPI: CPPC: Suppress UBSAN warning caused by field misuse
The definition of reg->access_width changes depending on the
reg->space_id type. Type ACPI_ADR_SPACE_PLATFORM_COMM uses
access_width to indicate the PCC region, which can result in a UBSAN
if the value is greater than 4.
For example:
UBSAN: shift-out-of-bounds in drivers/acpi/cppc_acpi.c:1090:9
shift exponent 32 is too large for 32-bit type 'int'
CPU: 61 UID: 0 PID: 1220 Comm: (udev-worker) Not tainted 7.0.10-201.fc44.aarch64 #1 PREEMPT(lazy)
Hardware name: To be filled by O.E.M.
Call trace:
...(trimming)
ubsan_epilogue+0x10/0x48
__ubsan_handle_shift_out_of_bounds+0xdc/0x1e0
cpc_write+0x4d0/0x670
cppc_set_perf+0x18c/0x490
cppc_cpufreq_cpu_init+0x1c8/0x380 [cppc_cpufreq]
... (trimming)
Lets fix this by validating the region type, as well as whether
access_width has a value. Then since we are returning bit_width
directly for ACPI_ADR_SPACE_PLATFORM_COMM, drop the code correcting
the size.
📍 영향받는 시스템
Linux kernel (ACPI CPPC driver 관련 버전)
⚔️ 공격 벡터
로컬 공격자가 특수하게 조작된 ACPI 설정을 통해 커널 경고를 유발하거나 시스템 불안정을 초래할 수 있음
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.