🇰🇷 한글 설명
Linux 커널의 ext4 파일 시스템에서 첫 번째 디렉토리 블록이 비어 있는(hole) 상태임에도 오류를 보고하지 않는 취약점이 발견되었습니다. 이로 인해 '.' 또는 '..' 항목이 없는 잘못된 디렉토리 블록이 로드될 수 있으며, 이는 시스템 크래시를 유발할 수 있습니다.
💡 쉬운 설명
파일을 저장하는 공간의 첫 부분에 데이터가 있어야 하는데, 데이터가 비어 있음에도 시스템이 이를 정상으로 착각하는 문제입니다. 이로 인해 컴퓨터 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ext4: make sure the first directory block is not a hole
The syzbot constructs a directory that has no dirblock but is non-inline,
i.e. the first directory block is a hole. And no errors are reported when
creating files in this directory in the following flow.
ext4_mknod
...
ext4_add_entry
// Read block 0
ext4_read_dirblock(dir, block, DIRENT)
bh = ext4_bread(NULL, inode, block, 0)
if (!bh && (type == INDEX || type == DIRENT_HTREE))
// The first directory block is a hole
// But type == DIRENT, so no error is reported.
After that, we get a directory block without '.' and '..' but with a valid
dentry. This may cause some code that relies on dot or dotdot (such as
make_indexed_dir()) to crash.
Therefore when ext4_read_dirblock() finds that the first directory block
is a hole report that the filesystem is corrupted and return an error to
avoid loading corrupted data from disk causing something bad.
📍 영향받는 시스템
Linux kernel (ext4 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
손상되거나 조작된 ext4 파일 시스템 이미지를 마운트하여 시스템 크래시 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인