🇰🇷 한글 설명
Linux 커널의 fwctl 모듈에서 클래스 초기화 순서 문제로 인해 장치 제거 시 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. CXL 드라이버가 fwctl보다 먼저 초기화되면서 fwctl 클래스가 등록되지 않은 상태에서 장치 제거가 시도될 때 시스템 충돌이 발생합니다.
💡 쉬운 설명
컴퓨터 부품을 제거할 때, 시스템이 해당 부품의 정보를 정리하는 순서가 잘못되어 컴퓨터가 갑자기 멈추거나 오류가 발생하는 문제입니다. 부품 정보가 아직 준비되지 않았는데 삭제를 시도하면서 발생하는 오류입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fwctl: Fix class init ordering to avoid NULL pointer dereference on device removal
CXL is linked before fwctl in drivers/Makefile. Both use `module_init, so
`cxl_pci_driver_init()` runs first. When `cxl_pci_probe()` calls
`fwctl_register()` and then `device_add()`, fwctl_class is not yet
registered because fwctl_init() hasn't run, causing `class_to_subsys()` to
return NULL and skip knode_class initialization.
On device removal, `class_to_subsys()` returns non-NULL, and
`device_del()` calls `klist_del()` on the uninitialized knode, triggering
a NULL pointer dereference.
📍 영향받는 시스템
Linux kernel (CXL 및 fwctl 드라이버를 사용하는 환경)
⚔️ 공격 벡터
로컬 공격자가 특정 장치(CXL 관련)를 제거하거나 비활성화하여 커널 패닉 유도
🛡️ 대응 방법
fwctl 클래스 초기화 순서가 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전인지 배포판 보안 공지를 통해 확인