🇰🇷 한글 설명
Linux 커널의 NTFS 드라이버에서 부트 섹터의 sectors_per_cluster 필드 검증 미흡으로 인해 발생하는 취약점입니다. 잘못된 값(0 등)이 입력될 경우 ffs() 함수 결과로 인해 비정상적인 비트 이동(shift)이 발생하며, 이는 정의되지 않은 동작을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터가 NTFS 형식의 저장 장치를 읽을 때, 잘못된 설정값이 들어오면 계산 오류가 발생하여 시스템이 오작동할 수 있는 문제입니다. 공격자가 조작된 저장 장치를 연결하면 시스템에 문제를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ntfs: reject invalid sectors_per_cluster in the boot sector
is_boot_sector_ntfs() checks the boot sector's sectors_per_cluster field
with a range test that rejects 0x81..0xf3 but accepts 0 and other
non-power-of-two counts. A zero value reaches parse_ntfs_boot_sector():
sectors_per_cluster_bits = ffs(sectors_per_cluster) - 1;
...
vol->cluster_size = vol->sector_size << sectors_per_cluster_bits;
ffs(0) is 0, so sectors_per_cluster_bits becomes (unsigned)-1 and the
shift is undefined:
UBSAN: shift-out-of-bounds in fs/ntfs/super.c:673:39
shift exponent 4294967295 is too large for 32-bit type 'int'
This change rejects any non-power-of-two value, since it feeds the
aforementioned shift via ffs() - 1, which only yields the correct shift for a
power of two.
📍 영향받는 시스템
Linux kernel (NTFS driver module)
⚔️ 공격 벡터
조작된 sectors_per_cluster 값을 가진 NTFS 파일 시스템이 탑재된 저장 매체 연결
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인