🇰🇷 한글 설명
Linux 커널의 FUSE 파일 시스템에서 fuse_dentry_revalidate() 함수 호출 시 초기화되지 않은 값을 사용하는 취약점이 발견되었습니다. KMSAN 분석 결과, dentry의 d_time 필드가 초기화되지 않은 상태에서 함수가 호출되어 발생할 수 있는 문제입니다.
💡 쉬운 설명
컴퓨터의 파일 관리 시스템에서 데이터가 준비되지 않은 상태의 값을 잘못 읽어 들여 오류가 발생할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fuse: fix uninit-value in fuse_dentry_revalidate()
fuse_dentry_revalidate() may be called with a dentry that didn't had
->d_time initialised. The issue was found with KMSAN, where lookup_open()
calls __d_alloc(), followed by d_revalidate(), as shown below:
=====================================================
BUG: KMSAN: uninit-value in fuse_dentry_revalidate+0x150/0x13d0 fs/fuse/dir.c:394
fuse_dentry_revalidate+0x150/0x13d0 fs/fuse/dir.c:394
d_revalidate fs/namei.c:1030 [inline]
lookup_open fs/namei.c:4405 [inline]
open_last_lookups fs/namei.c:4583 [inline]
path_openat+0x1614/0x64c0 fs/namei.c:4827
do_file_open+0x2aa/0x680 fs/namei.c:4859
[...]
Uninit was created at:
slab_post_alloc_hook mm/slub.c:4466 [inline]
slab_alloc_node mm/slub.c:4788 [inline]
kmem_cache_alloc_lru_noprof+0x382/0x1280 mm/slub.c:4807
__d_alloc+0x55/0xa00 fs/dcache.c:1740
d_alloc_parallel+0x99/0x2740 fs/dcache.c:2604
lookup_open fs/namei.c:4398 [inline]
open_last_lookups fs/namei.c:4583 [inline]
path_openat+0x135f/0x64c0 fs/namei.c:4827
do_file_open+0x2aa/0x680 fs/namei.c:4859
[...]
=====================================================
📍 영향받는 시스템
Linux Kernel (FUSE 모듈을 사용하는 모든 시스템)
⚔️ 공격 벡터
특수하게 조작된 FUSE 파일 시스템을 마운트하여 커널의 초기화되지 않은 메모리 값을 참조하도록 유도
🛡️ 대응 방법
FUSE 관련 패치가 적용된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인