🇰🇷 한글 설명
Linux 커널의 exfat 파일 시스템에서 클러스터 번호의 유효성을 검사하지 않아 발생하는 slab-out-of-bounds read 취약점입니다. truncate 작업을 수행할 때 잘못된 클러스터 번호가 참조되어 메모리 경계를 벗어난 읽기 동작이 발생할 수 있습니다.
💡 쉬운 설명
파일 시스템이 데이터를 저장하는 위치 번호를 확인할 때, 잘못된 번호가 들어와도 그대로 읽으려다 발생하는 오류입니다. 이로 인해 시스템의 메모리 정보가 유출되거나 프로그램이 비정상적으로 종료될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
exfat: check if cluster num is valid
Syzbot reported slab-out-of-bounds read in exfat_clear_bitmap.
This was triggered by reproducer calling truncute with size 0,
which causes the following trace:
BUG: KASAN: slab-out-of-bounds in exfat_clear_bitmap+0x147/0x490 fs/exfat/balloc.c:174
Read of size 8 at addr ffff888115aa9508 by task syz-executor251/365
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack_lvl+0x1e2/0x24b lib/dump_stack.c:118
print_address_description+0x81/0x3c0 mm/kasan/report.c:233
__kasan_report mm/kasan/report.c:419 [inline]
kasan_report+0x1a4/0x1f0 mm/kasan/report.c:436
__asan_report_load8_noabort+0x14/0x20 mm/kasan/report_generic.c:309
exfat_clear_bitmap+0x147/0x490 fs/exfat/balloc.c:174
exfat_free_cluster+0x25a/0x4a0 fs/exfat/fatent.c:181
__exfat_truncate+0x99e/0xe00 fs/exfat/file.c:217
exfat_truncate+0x11b/0x4f0 fs/exfat/file.c:243
exfat_setattr+0xa03/0xd40 fs/exfat/file.c:339
notify_change+0xb76/0xe10 fs/attr.c:336
do_truncate+0x1ea/0x2d0 fs/open.c:65
Move the is_valid_cluster() helper from fatent.c to a common
header to make it reusable in other *.c files. And add is_valid_cluster()
to validate if cluster number is within valid range in exfat_clear_bitmap()
and exfat_set_bitmap().
📍 영향받는 시스템
exfat 파일 시스템을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된 exfat 파일 시스템 이미지를 마운트하거나 truncate 시스템 호출을 유도하여 발생
🛡️ 대응 방법
is_valid_cluster() 검증 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전인지 배포판 보안 공지를 통해 확인하십시오.