CVE-2026-99175 in Linux
요약
\~에 의해 VulDB • 2026. 10. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
fsnotify: 커넥터 해제 중 마크 추가 방지
fsnotify_destroy_marks()는 현재 마드에 대한 참조를 유지한 상태로 conn->lock을 해제하여 해당 마드를 파괴합니다. 이는 순방향 탐색(cursor)의 안정성을 보장하지만, 그 전에 새로운 마드가 삽입되는 것을 막지는 않습니다. 예를 들어, IN_IGNORED 이후에 다시 추가된 inotify 감시는 동일한 그룹에서 기존 분리(detached)된 마드 앞에 정렬됩니다. 이로 인해 탐색이 대체(replacement) 대상을 건너뛰고 전체 커넥터를 객체로부터 분리할 수 있습니다.
대체는 여전히 해당 그룹의 marks_list와(inotify의 경우 watch IDR에) 존재합니다. 이제 그룹 뮤텍스는 더 이상 커넥터의 객체가 소멸되는 것을 보호하지 않습니다. 따라서 권한이 없는 fdinfo 읽기가 최종 detach 작업과 경쟁(race)할 경우 igrab(NULL)을 호출하게 되어 다음과 같은 오류가 발생할 수 있습니다:
BUG: KASAN: null-ptr-deref in igrab+0x24/0x100 Write of size 4 at addr 0000000000000148 Call Trace: igrab+0x24/0x100 inotify_show_fdinfo+0x1dc/0x5e0 seq_show+0x397/0x690
탐색을 시작하기 전에 conn->lock 하에 DESTROYING 플래그를 설정하고, 해당 커넥터로의 새 마드 추가를 -ENOENT로 거부합니다. 기존 마드 추가 오류 처리 경로에서는 임시 그룹 목록 항목과 백엔드의 watch 할당을 모두 해제합니다. 파괴자(destructor)가 필요로 하는 group mutex를 유지한 상태로 해제를 기다리지 않습니다. 이전 커넥터가 분리되면, 기존의 방식대로 새 커넥터를 설치할 수 있습니다.
이 변경은 mark 참조 또는 SRCU 수명 규칙을 변경하지 않으면서도 공통 커넥터 해제 메커니즘을 사용하는 모든 객체 유형에 대해 삽입 경쟁(insertion race) 문제를 해결합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.