CVE-2026-98991 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 23.

리눅스 커널에서 다음 취약점이 해결되었습니다:

네임스페이스: 마운트 알림을 위해 마운트를 한 번만 큐에 추가함

mnt_notify_add()는 notify_list에 마운드를 추가합니다. 그러나 해당 마운트가 이미 목록에 있는지 확인하지 않습니다. 이는 모든 마운드가 namespace_sem 잠금 유지 기간 동안 최대 한 번씩만 큐에 추가되는 경우에만 문제없습니다. 하지만 그렇지 않습니다.

propagate_umount()는 사라져 가는 마운트 스택에서 살아남은 오버마운트를 이동시켜 moved 상태로 큐에 추가합니다. shrink_submounts()와 mark_mounts_for_expiry()는 단일 namespace_sem 잠금 유지 기간 동안 여러 마운트에 대해 umount_tree()를 호출합니다. 따라서 두 번째 umount_tree() 호출은 첫 번째 호출이 재배치한 바로 그 마운트를 제거하고, 이를 한 번 더 재배치하여 결국 두 번째로 큐에 추가하게 됩니다.

두 번째 list_add_tail() 호출은 중간에 큐에 추가된 마운트들을 목록에서 잘라내지만, head 포인터는 여전히 마지막 항목을 가리킵니다. 그 후 notify_mnt_list()는 해당 하나의 마운드만 방문하고, 나머지는 grace period가 지난 후에 notify_list가 아직 이들을 참조한 채로 해제됩니다. 호스트에서의 이후 모든 마운트 작업은 이미 해지된 메모리를 접근하게 됩니다:

BUG: KASAN: slab-use-after-free in __list_add_valid_or_report Read of size 8 at addr ffff8881003d57e0 by task notify_dq/162 __list_add_valid_or_report+0x15c/0x1a0 mnt_add_to_ns+0x322/0x890 attach_recursive_mnt.isra.0+0xf2a/0x1a00 path_mount+0x139c/0x1d40

이 취약점을 이용하려면 MNT_SHRINKABLE 플래그가 설정된 마운드에서 바인딩해야 합니다. finish_automount()는 이를 생성합니다(NFS, AFS 및 CIFS의 서브마운트와 debugfs 아래의 tracefs 마운드가 해당됨). 바인드 마운드는 이 플래그를 상속받습니다. FAN_MARK_MNTNS 마크가 있는 마운트 네임스페이스가 나머지 작업을 수행하며, 사용자 네임스페이스의 루트는 둘 다를 가질 수 있습니다.

alloc_vfsmnt()에서 to_notify를 초기화하고, 이미 큐에 추가된 마운드는 건드리지 않습니다. mnt_notify()는 목록이 비워질 때 마운드가 가진 상태를 확인하므로, 마운드당 단일 엔트리로 충분합니다. 동일한 잠금 유지 기간 동안 언마운트되는 마운드에 대한 이동 이벤트는 손실됩니다. 이는 문제없습니다. 중요한 것은 분리(detach)입니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-425814

EPSS

0.00000

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!