🇰🇷 한글 설명
Linux 커널에서 'nosmp' 커널 옵션으로 다른 CPU가 기동되지 않을 때, ACPI CPPC 코드가 활성화되지 않은 CPU의 cpc_desc_ptr을 NULL 상태로 역참조하여 커널 패닉이 발생하는 문제입니다. 이는 NULL 포인터 역참조로 인한 서비스 거부(DoS) 취약점입니다.
💡 쉬운 설명
컴퓨터를 단일 CPU 모드로 부팅할 때 커널이 존재하지 않는 CPU의 정보를 읽으려다 시스템이 멈추는 버그입니다. 권한이 낮은 사용자가 이를 악용해 시스템을 강제로 중단시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ACPI: CPPC: Fix NULL pointer dereference when nosmp is used
With nosmp in cmdline, other CPUs are not brought up, leaving
their cpc_desc_ptr NULL. CPU0's iteration via for_each_possible_cpu()
dereferences these NULL pointers, causing panic.
Panic backtrace:
[ 0.401123] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000b8
...
[ 0.403255] [<ffffffff809a5818>] cppc_allow_fast_switch+0x6a/0xd4
...
Kernel panic - not syncing: Attempted to kill init!
[ rjw: New subject ]
📍 영향받는 시스템
ACPI CPPC를 사용하는 수정 전 Linux 커널 버전 (nosmp 옵션 사용 시)
⚔️ 공격 벡터
로컬 사용자가 부팅 옵션 nosmp를 사용하는 환경에서 CPPC 경로를 트리거하여 커널 패닉을 유발
🛡️ 대응 방법
최신 Linux 커널 보안 업데이트를 적용하여 CPPC NULL 포인터 검사가 포함된 버전으로 재부팅
🔧 검증 코드
커널 버전이 패치 적용 전 버전이고 /proc/cmdline에 nosmp가 있으며 cppc 관련 cpufreq 항목이 보이면 영향 가능성이 있으며, 배포판 보안 공지에서 해당 커널 패치 포함 여부를 확인해야 합니다.
uname -r; grep -o 'nosmp' /proc/cmdline; ls /sys/devices/system/cpu/cpufreq/ 2>/dev/null | head -n 5