🇰🇷 한글 설명
Linux 커널의 Xilinx zynqmp_power 드라이버에서 이벤트 등록 시 레이스 컨디션(경쟁 상태) 취약점이 발견되었습니다. 이벤트 핸들러를 등록한 후 작업 구조체를 할당하기 때문에, 할당 전 이벤트가 발생할 경우 NULL 포인터 역참조로 인해 시스템 크래시가 발생할 수 있습니다.
💡 쉬운 설명
시스템이 특정 동작을 준비하기 전에 명령이 먼저 내려지면, 준비되지 않은 상태를 참조하려다 컴퓨터가 멈추는 문제입니다. 작업 준비를 먼저 마친 뒤에 명령을 받을 수 있도록 순서를 바로잡았습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
soc: xilinx: Fix race condition in event registration
The zynqmp_power driver registers handlers for suspend and subsystem
restart events using register_event(). However, the work structures
(zynqmp_pm_init_suspend_work and zynqmp_pm_init_restart_work) used by
these handlers were allocated and initialized after the registration
call.
This created a race window where, if the firmware triggered an event
immediately after registration but before allocation, the callback
(suspend_event_callback or subsystem_restart_event_callback) would
dereference a NULL pointer in work_pending(), leading to a crash.
Fix this by allocating and initializing the work structures before
registering the events.
📍 영향받는 시스템
Linux kernel (Xilinx zynqmp_power driver 사용 환경)
⚔️ 공격 벡터
펌웨어를 통해 이벤트 등록 직후 할당 전 단계에서 특정 이벤트를 트리거하여 시스템 크래시 유도
🛡️ 대응 방법
이벤트 등록(register_event) 호출 전에 작업 구조체(work structures)를 먼저 할당하고 초기화하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전인지 배포처의 보안 공지를 통해 확인