🇰🇷 한글 설명
Linux 커널의 futex/requeue 메커니즘에서 self-deadlock 발생 시 remove_waiter() 함수가 NULL 포인터를 참조하여 커널 크래시를 유발하는 취약점입니다. FUTEX_CMP_REQUEUE_PI 작업 중 특정 조건에서 task 설정이 누락된 채 함수가 호출되어 발생합니다. 이를 방지하기 위해 rt_mutex_start_proxy_lock() 호출 전 self-deadlock 체크 로직이 추가되었습니다.
💡 쉬운 설명
리눅스 운영체제의 핵심 기능 중 하나에서 특정 상황이 발생하면 컴퓨터 시스템이 갑자기 멈추거나 꺼질 수 있는 오류입니다. 시스템이 스스로를 잠그는 상황을 미리 감지하지 못해 발생하는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
futex/requeue: Prevent NULL pointer dereference in remove_waiter() on self-deadlock
When FUTEX_CMP_REQUEUE_PI requeues a non-top waiter that already owns the
target PI futex, task_blocks_on_rt_mutex() returns -EDEADLK before setting
waiter->task.
The subsequent remove_waiter() in rt_mutex_start_proxy_lock() dereferences
the NULL waiter->task, causing a kernel crash.
Add a self-deadlock check for non-top waiters before calling
rt_mutex_start_proxy_lock(), analogous to the top-waiter check in
futex_lock_pi_atomic().
📍 영향받는 시스템
Linux Kernel (FUTEX_CMP_REQUEUE_PI 관련 기능이 포함된 버전)
⚔️ 공격 벡터
로컬 사용자가 특수하게 조작된 futex 시스템 호출을 통해 커널 패닉을 유도할 수 있음
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 배포판의 보안 업데이트 버전인지 확인