🇰🇷 한글 설명
Linux 커널의 CXL(Compute Express Link) 기능 구현 중, 하드웨어 지원이 없는 경우 cxl_feature_info() 함수에 NULL 포인터가 전달되어 발생하는 NULL 포인터 역참조 취약점입니다. 이로 인해 커널 패닉(Oops)이 발생하여 시스템이 중단될 수 있습니다.
💡 쉬운 설명
컴퓨터의 특정 부품(CXL)이 없을 때 시스템이 이를 확인하지 않고 잘못된 메모리 주소를 읽으려다 시스템이 멈추는 문제입니다. 하드웨어가 없는 상태에서 관련 기능을 호출할 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cxl/features: Add check for no entries in cxl_feature_info
cxl EDAC calls cxl_feature_info() to get the feature information and
if the hardware has no Features support, cxlfs may be passed in as
NULL.
[ 51.957498] BUG: kernel NULL pointer dereference, address: 0000000000000008
[ 51.965571] #PF: supervisor read access in kernel mode
[ 51.971559] #PF: error_code(0x0000) - not-present page
[ 51.977542] PGD 17e4f6067 P4D 0
[ 51.981384] Oops: Oops: 0000 [#1] SMP NOPTI
[ 51.986300] CPU: 49 UID: 0 PID: 3782 Comm: systemd-udevd Not tainted 6.17.0dj
test+ #64 PREEMPT(voluntary)
[ 51.997355] Hardware name: <removed>
[ 52.009790] RIP: 0010:cxl_feature_info+0xa/0x80 [cxl_core]
Add a check for cxlfs before dereferencing it and return -EOPNOTSUPP if
there is no cxlfs created due to no hardware support.
📍 영향받는 시스템
CXL 기능을 사용하는 Linux 커널 (특히 6.17.0 버전 근처의 취약한 커널)
⚔️ 공격 벡터
로컬 공격자가 CXL 하드웨어가 없는 환경에서 특정 커널 모듈이나 드라이버를 호출하여 시스템을 중단시킬 수 있음
🛡️ 대응 방법
CXL 기능 관련 커널 패치를 적용하여 cxl_feature_info() 호출 시 NULL 체크 로직을 포함해야 함
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 패치 버전인지 확인합니다.