🇰🇷 한글 설명
Linux 커널의 intel_pstate cpufreq 드라이버에서 'nosmt' 또는 'maxcpus' 옵션으로 CPU 수를 제한한 시스템에서 turbo를 비활성화하면 커널 NULL 포인터 역참조로 크래시가 발생합니다. 원인은 for_each_possible_cpu()가 온라인되지 않은 CPU까지 순회하면서 all_cpu_data[] 접근 시 NULL을 참조하기 때문입니다.
💡 쉬운 설명
CPU 일부만 켜진 리눅스 시스템에서 터보 기능을 끄면 시스템이 멈추거나 재부팅될 수 있습니다. 커널이 아직 켜지지 않은 CPU의 데이터를 잘못 읽어서 발생하는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cpufreq: intel_pstate: Fix crash during turbo disable
When the system is booted with kernel command line argument "nosmt" or
"maxcpus" to limit the number of CPUs, disabling turbo via:
echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
results in a crash:
PF: supervisor read access in kernel mode
PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
Oops: Oops: 0000 [#1] SMP PTI
...
RIP: 0010:store_no_turbo+0x100/0x1f0
...
This occurs because for_each_possible_cpu() returns CPUs even if they
are not online. For those CPUs, all_cpu_data[] will be NULL. Since
commit 973207ae3d7c ("cpufreq: intel_pstate: Rearrange max frequency
updates handling code"), all_cpu_data[] is dereferenced even for CPUs
which are not online, causing the NULL pointer dereference.
To fix that, pass CPU number to intel_pstate_update_max_freq() and use
all_cpu_data[] for those CPUs for which there is a valid cpufreq policy.
📍 영향받는 시스템
CPU 수 제한 옵션(nosmt, maxcpus)을 사용하는 Intel 프로세서 기반 Linux 커널 (수정 패치 적용 이전 버전)
⚔️ 공격 벡터
로컬 관리자 권한이 있는 사용자가 no_turbo 설정 값을 변경하면 커널 크래시(서비스 거부)를 유발할 수 있습니다.
🛡️ 대응 방법
커널을 해당 취약점이 수정된 버전으로 업데이트하거나 배포판의 보안 업데이트를 적용하십시오.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지와 대조하여 CVE-2026-23332 수정 패치가 포함된 버전인지 확인하십시오.