🇰🇷 한글 설명
리눅스 커널의 futex/pi 메커니즘에서 서로 다른 메모리 공간(mm)을 가진 프로세스 간에 프라이빗 futex 소유권을 허용하는 취약점이 발견되었습니다. 이로 인해 소유자 프로세스가 종료될 때 대기 중인 프로세스의 메모리 해제 과정과 충돌하여 Use-After-Free와 같은 메모리 오류가 발생할 수 있습니다.
💡 쉬운 설명
서로 다른 프로그램이 공유해서는 안 되는 개인용 잠금 장치를 잘못 공유할 때 발생하는 문제입니다. 이 과정에서 프로그램이 갑자기 종료되면 컴퓨터 메모리가 꼬여서 시스템이 불안정해지거나 오류가 날 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
futex/pi: Reject cross-mm private futex owners
A private futex key borrows the waiter's mm without taking an mm_users
reference. Nevertheless, attach_to_pi_owner() currently accepts an owner
from a different address space and copies the private key into the owner's
PI state.
When that owner exits, exit_pi_state_list() uses the saved key to find the
hash bucket and acquires a reference to the waiter's private hash. If the
last user of the waiter's mm exits concurrently, futex_hash_free() frees
the hash while the owner still uses its bucket and reference.
Prevent this by validating in attach_to_pi_owner() that, for private
futexes, the owner mm and waiter mm are the same. Perform the check with
the owner's pi_lock held and after validating owner::futex::state to
serialize against a concurrent PI-state exit cleanup.
[ tglx: Amended comment ]
📍 영향받는 시스템
Linux Kernel (futex/pi 관련 기능이 포함된 버전)
⚔️ 공격 벡터
서로 다른 주소 공간을 가진 프로세스 간의 잘못된 futex 소유권 할당을 유도하여 메모리 참조 오류 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 attach_to_pi_owner()의 검증 로직 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.