🇰🇷 한글 설명
리눅스 커널의 futex 메커니즘에서 발생한 Use-After-Free 취약점입니다. futex_private_hash_put() 함수가 참조를 해제하기 전에 mm 포인터를 평가하지 않아, 선점(preemption) 발생 시 해제된 메모리에 접근할 수 있는 문제가 있습니다.
💡 쉬운 설명
컴퓨터의 메모리 관리 과정에서 이미 사용이 끝나서 삭제된 데이터 영역을 다시 읽으려고 시도할 때 발생하는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
futex: Avoid private hash use-after-free on final put
futex_private_hash_put() drops the reference to fph before evaluating
fph->mm for wake_up_var(). futex_ref_put() enables preemption again before
returning. If that put drops the final reference and the task is preempted,
another task can pivot to the replacement hash and free the old hash after
an RCU grace period. The first task then reads fph->mm from the freed
allocation when it resumes.
KASAN reports a slab-use-after-free in futex_private_hash_put(), with the
read at offset 24 in a freed kmalloc-512 allocation. The allocation and
free stacks point to futex_hash_allocate() and the RCU free path,
respectively.
Load the mm pointer while the fph reference is still held and pass the
saved value to wake_up_var(). wake_up_var() uses the pointer as a waitqueue
key and does not dereference the mm through it.
📍 영향받는 시스템
Linux Kernel (futex 관련 모듈이 포함된 모든 버전)
⚔️ 공격 벡터
특정 조건에서 프로세스 선점을 유도하여 메모리 해제 후 접근(Use-After-Free)을 일으키는 방식
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.