🇰🇷 한글 설명
Linux 커널의 futex 서브시스템에서 FUT_OFF_MMSHARED 처리 문제가 해결되었습니다. 공유 futex가 이미 해제된 메모리 맵(MM)을 참조할 수 있어, 같은 주소에 새로 할당된 MM을 대상으로 한 깨우기 신호를 잘못 소비할 수 있었습니다. 이를 막기 위해 MM마다 고유한 64비트 ID로 futex를 구분하도록 수정되었습니다.
💡 쉬운 설명
여러 프로그램이 같은 메모리 공간을 기다리는 동기화 장치(futex)에서, 이전 메모리가 사라진 뒤 같은 위치에 새로 만들어진 메모리로 신호가 잘못 전달될 수 있었습니다. 이번 수정으로 각 메모리 영역에 고유 번호를 부여해 이런 혼동을 막습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
futex: Fix mm reuse handling for FUT_OFF_MMSHARED
A FUT_OFF_MMSHARED futex is a shared futex that refers to an MM.
It is possible for a process to wait on a shared futex with a different MM
because a FUT_OFF_INODE waiter can be requeued onto a FUT_OFF_MMSHARED
futex by another process.
This can cause FUT_OFF_MMSHARED waiters on a freed MM to consume
wakeups intended for a newly allocated MM at the same address.
Fix it by keying FUT_OFF_MMSHARED using a unique 64-bit per-MM ID.
Leave private futexes as before to avoid influencing the performance of the
hotpath.
(Multi-threaded processes typically implicitly use FUT_OFF_MMSHARED by
setting clear_child_tid such that it points into anonymous memory, which
causes mm_release() in a multi-threaded mm to perform FUTEX_WAKE.)
📍 영향받는 시스템
수정이 적용되기 전의 Linux 커널 (정확한 영향 버전은 공개된 정보에서 확인 필요)
⚔️ 공격 벡터
로컬 사용자가 FUT_OFF_INODE 대기자를 FUT_OFF_MMSHARED futex로 requeue하여 해제된 MM의 대기자가 새 MM의 wakeup을 가로채도록 유도하는 방식으로 추정됨
🛡️ 대응 방법
배포판 제공 최신 커널 업데이트를 적용하고 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 이 CVE의 수정 버전과 비교하여, 같거나 높으면 패치가 적용된 것입니다.