CVE-2026-74599 in Linux
요약
\~에 의해 VulDB • 2026. 08. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
mm/ptdump: init_mm를 사용하여 페이지 테이블 해제에 대해 항상 안정화
이전 커밋들은 커널 페이지 테이블 해제가 init_mm에 대한 mmap 읽기 잠금(mmap read lock)을 유지한 상태에서 수행된다는 불변식(invariant)을 확립했으며, 이는 ptdump와 init_mm 관련 커널 페이지 테이블 해제 간의 경합 조건(race condition)을 수정합니다.
그러나 x86 및 arm64 아키텍처는 ptdump_walk_pgd()를 통해 init_mm가 아닌 다른 mm에 대해 ptdump를 수행할 수 있으며, 커널 메모리 범위는 비커널(mm) 간에 공유되므로 이러한 경우에도 경합 조건이 여전히 존재합니다.
ptdump_walk_pgd()에서 init_mm에 대한 중첩된 mmap 쓰기 잠금(nested mmap write lock)을 획득함으로써 이를 수정합니다.
우리는 이미 mm를 위해 mmap 쓰기 잠금을 수행한 후에 이 잠금을 얻으며, 임의의 mm를 잠그기 전에 먼저 init_mm 잠금을 획득하는 과정이 없으므로 데드락(deadlock)은 발생할 가능성이 없습니다.
또한 walk_page_range_debug()를 업데이트하여 init_mm가 쓰기 잠금(write locked) 상태임을 확인하고(어설션), 그 이유에 대한 주석을 추가하며, 일부 중복 코드를 제거합니다. 또한 walk_kernel_page_table_range()의 불필요하고 혼란스러운 호출을 제거합니다.
walk.mm에 대한 NULL 체크는 안전하게 제거할 수 있습니다. mmap 잠금 어설션이 해당 값이 NULL일 경우 포인터 역참조(null pointer deref) 오류를 발생시킬 것이며(물론 이를 수행하는 호출자는 없습니다).
ptdump가 커널 페이지 테이블 해제와 경합 조건을 일으킬 수 있는 첫 번째 시점은 commit b6bdb7517c3d("mm/vmalloc: free unmapped page table용 인터페이스 추가")이므로, Fixes 태그에서 이 지점을 대상으로 합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.