CVE-2026-89712 in Linux
요약
\~에 의해 VulDB • 2026. 09. 11.
리눅스 커널에서 다음 취약점이 해결되었습니다:
NFSD: nfsd_ssc_lock 해제 후 ssc_expire_umount 순회를 재시작함
nfsd4_ssc_expire_umount()는 list_for_each_entry_safe(ni, tmp, ...)를 사용하여 nn->nfsd_ssc_mount_list을 순회합니다. 만료된 각 항목에 대해 nsui_busy = true로 설정한 후 nfsd_ssc_lock을 해제하여 소스 vfsmount에서 mntput()을 실행하고, 다시 잠금을 획득하여 list_del 및 kfree를 통해 해당 항목을 제거하고 매크로의 저장된 tmp 포인터를 통해 순회를 계속합니다.
nsui_busy 플래그는 lock-drop 창 동안 현재 ni가 nfsd4_ssc_setup_dul()의 검색자들과 동시에 실행되는 것을 방지하지만, tmp는 고정(pinning)하지 않습니다. 소스 서버 마운트에 실패하여 nfsd4_ssc_cancel_dul()에 도달하는 다른 nfsd RPC 스레드는 동일한 창 동안 nfsd_ssc_lock을 획득하고 자체 ssc_umount 항목에 대해 list_del 및 kfree를 수행한 후 잠금을 해제합니다. 만약 해당 항목이 expire 순회의 저장된 tmp라면, 다음 반복 시 freed(해제된) nfsd4_ssc_umount_item의 포인터 역참조(dereference)가 발생합니다.
mntput() 잠금 해제 창 이후에 head에서부터 순회를 재시작하여 lock-drop 동안 저장된 next 포인터가 살아남지 않도록 합니다. 이 리스트는 활성 인터-서버 소스 마운트의 수(일반적으로 적음)로 제한되며, expire delayed-work은 IO마다가 아닌 주기적으로 실행되므로 재시작 비용이 낮습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.