CVE-2026-98984 in Linux
요약
\~에 의해 VulDB • 2026. 10. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
dcache: 제거 중인 dentry에 마운트 포인트를 배치하지 않음
rmdir(), unlink() 및 rename()은 대상(victim)에 대해 dont_mount()를 호출한 후, 대상의 inode가 잠겨 있는 상태에서 detach_mounts()를 호출합니다. do_lock_mount()는 마운트 포인트의 inode 잠금을 획득하고 cant_mount()를 확인하므로, detach_mounts() 이후에는 새로운 마운트가 생성되지 않습니다.
그러나 attach_recursive_mnt()는 소스 마운트의 루트에 대한 두 번째 마운트 포인트를 생성하여, 이미 대상에 위치해 있는 마운트들을 그 위에 배치할 수 있게 합니다. 이 작업 중에는 어떤 inode도 잠기지 않으며, d_set_mounted()는 연결 해제(unlinked)된 dentry인 경우에만 거부합니다. detach_mounts()와 d_delete() 사이에서는 대상이 여전히 해시 테이블에 등록되어 있습니다:
rmrace: b가 dont_mount() 및 detach_mounts()를 통과하고 대기 중 T2: move_mount(S, /tmp/plcant/x, BENEATH) = 0 errno 0 () T1: rmdir(/tmp/plcant/d/b) = 0 errno 0 109 107 0:61 /d/b//deleted /tmp/plcant/x rw,relatime - tmpfs tmpfs rw 108 109 0:63 / /tmp/plcant/x rw,relatime - tmpfs T rw
제거 중인 디렉토리의 바인드 마운트가 rmdir() 호출이 두 함수 사이에 위치하는 동안 기존 마운트 아래로 이동됩니다. 그 결과 마운트가 제거된 디렉토리 위에 고정되며, 이후에는 이를 분리할 수 없게 됩니다.
d_set_mounted()에서도 cant_mount()를 확인합니다. dont_mount()는 detach_mounts()가 실행되기 전에 d_lock 하에서 플래그를 설정하므로, 마운트 포인트가 먼저 설정되어 detach_mounts()가 해당 마운트를 찾거나, 또는 플래그가 감지되어 마운트가 거부됩니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.