🇰🇷 한글 설명
Linux 커널의 exfat 파일시스템 드라이버에서 손상된 클러스터 체인으로 인한 무한 루프 취약점입니다. 클러스터가 자기 자신을 가리키고 미사용 디렉토리 엔트리가 있으면 'dentry' 카운터가 증가하지 않아 무한 루프가 발생합니다. 이로 인해 s_lock이 해제되지 않아 exfat_sync_fs() 등 다른 작업들이 행(hang)되는 서비스 거부 상태가 발생합니다.
💡 쉬운 설명
USB 드라이브나 외부 저장소의 파일 목록을 읽을 때 손상된 구조로 인해 시스템이 같은 작업을 무한히 반복합니다. 이 과정에서 시스템이 응답 불능 상태(hang)가 되어 다른 작업들도 영향을 받게 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
exfat: fix the infinite loop in exfat_readdir()
If the file system is corrupted so that a cluster is linked to
itself in the cluster chain, and there is an unused directory
entry in the cluster, 'dentry' will not be incremented, causing
condition 'dentry < max_dentries' unable to prevent an infinite
loop.
This infinite loop causes s_lock not to be released, and other
tasks will hang, such as exfat_sync_fs().
This commit stops traversing the cluster chain when there is unused
directory entry in the cluster to avoid this infinite loop.
📍 영향받는 시스템
Linux kernel 5.7.0 이상에서 exfat 파일시스템 지원이 활성화된 모든 버전
⚔️ 공격 벡터
손상되거나 악의적으로 조작된 exfat 파일시스템 이미지를 마운트하여 무한 루프를 트리거
🛡️ 대응 방법
Linux kernel을 CVE-2024-57940 패치가 적용된 최신 버전으로 업그레이드
🔧 검증 코드
현재 커널 버전을 확인하고 exfat 드라이버가 활성화되어 있는지 확인 (CONFIG_EXFAT=m 또는 y이면 활성화 상태)
uname -r && grep -i CONFIG_EXFAT /boot/config-$(uname -r) 2>/dev/null