🇰🇷 한글 설명
Linux 커널 NTFS 파일시스템의 d_compare() 함수가 블로킹 작업을 수행하지 않도록 수정한 취약점. __getname() 호출을 GFP_NOWAIT 플래그를 사용한 kmalloc()으로 대체하여 메모리 할당 시 대기 상태를 방지합니다.
💡 쉬운 설명
Linux 커널의 파일 비교 함수에서 시스템을 지연시킬 수 있는 메모리 할당 방식을 사용했습니다. 이를 비블로킹 방식으로 변경하여 시스템 응답성을 개선합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ntfs: ->d_compare() must not block
... so don't use __getname() there. Switch it (and ntfs_d_hash(), while
we are at it) to kmalloc(PATH_MAX, GFP_NOWAIT). Yes, ntfs_d_hash()
almost certainly can do with smaller allocations, but let ntfs folks
deal with that - keep the allocation size as-is for now.
Stop abusing names_cachep in ntfs, period - various uses of that thing
in there have nothing to do with pathnames; just use k[mz]alloc() and
be done with that. For now let's keep sizes as-in, but AFAICS none of
the users actually want PATH_MAX.
📍 영향받는 시스템
Linux kernel NTFS filesystem support (ntfs.ko module)
⚔️ 공격 벡터
Local - specially crafted NTFS filesystem operations causing kernel deadlock/hang
🛡️ 대응 방법
Linux kernel 업그레이드 (패치 적용 버전 확인 필요) 또는 NTFS 지원 비활성화
🔧 검증 코드
커널 버전과 NTFS 모듈 로드 여부 확인 - NTFS 모듈이 로드되지 않으면 영향 없음, 로드되면 커널 버전으로 패치 상태 확인
cat /proc/version | grep -i linux && lsmod | grep ntfs