CVE-2026-74359 in Linux
요약
\~에 의해 VulDB • 2026. 08. 15.
리눅스 커널에서 다음 취약점이 해결되었습니다:
configfs_lookup(): 실패 시 ->s_dentry가 덩글링(dangling) 상태로 남지 않도록 수정
일반적으로 ->s_dentry는 해당 dentry를 가리키는 포인터가 음수(negative, 즉 evicted 상태)가 될 때 지워집니다(실제로는 eviction 발생 시). 그러나 이는 처음에 dentry가 양수(positional/positive)로 설정된 경우에만 발생합니다. inode 할당 실패의 경우 dentry는 절대 양수가 되지 않으므로 ->d_iput()이 전혀 호출되지 않습니다.
우리는 configfs_d_iput()에서 일반적으로 수행하던 작업 중 일부(configfs_dirent에 대한 참조를 해제하는 것)를 수동으로 처리하지만, 그 과정에서 ->s_dentry는 지워지지 않습니다. 이는 성의 없는 구현이지만, configfs_create_{dir,link}() 함수의 경우에는 문제가 되지 않습니다. 이러한 경우 configfs_dirent은 유일한 참조가 해제된 후에도 생존하지 않기 때문입니다.
그러나 configfs_lookup()의 경우 *그것(참조)이 생존*하며, 곧 해제될 dentry를 가리키는 덩글링 포인터가 ->s_dentry에 남아있게 됩니다.
해당 디렉토리에서 이후 getdents(2) 호출은 inode 번호를 가져오기 위해 해당 포인터를 역참조하게 되며, 이는 Use-after-free 취약점으로 이어집니다.
이것은 최소한의 수정 사항입니다. 올바른 접근 방식은 inode가 있음을 확신한 후에야 dentry와 configfs_dirent 간의 링크age(연결)를 설정하는 것이지만, 그 방법은 더 많은 코드 변경을 필요로 하며 해당 버그는 2006년부터 존재해 왔으므로...
VulDB is the best source for vulnerability data and more expert information about this specific topic.