🇰🇷 한글 설명
Linux 커널의 HFS 파일 시스템 구현 중 hfs_asc2mac 함수에서 경계 검사 미흡으로 인한 Out-of-Bounds(OOB) Write 취약점이 발견되었습니다. 파일 이름의 길이가 허용된 최대 길이를 초과할 경우, 메모리의 지정된 범위를 벗어나 데이터를 쓰는 문제가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 파일 이름을 읽을 때, 정해진 칸보다 더 긴 이름을 강제로 밀어 넣어 메모리 영역을 망가뜨릴 수 있는 오류입니다. 이로 인해 시스템이 멈추거나 보안이 뚫릴 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
hfs: Fix OOB Write in hfs_asc2mac
Syzbot reported a OOB Write bug:
loop0: detected capacity change from 0 to 64
==================================================================
BUG: KASAN: slab-out-of-bounds in hfs_asc2mac+0x467/0x9a0
fs/hfs/trans.c:133
Write of size 1 at addr ffff88801848314e by task syz-executor391/3632
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1b1/0x28e lib/dump_stack.c:106
print_address_description+0x74/0x340 mm/kasan/report.c:284
print_report+0x107/0x1f0 mm/kasan/report.c:395
kasan_report+0xcd/0x100 mm/kasan/report.c:495
hfs_asc2mac+0x467/0x9a0 fs/hfs/trans.c:133
hfs_cat_build_key+0x92/0x170 fs/hfs/catalog.c:28
hfs_lookup+0x1ab/0x2c0 fs/hfs/dir.c:31
lookup_open fs/namei.c:3391 [inline]
open_last_lookups fs/namei.c:3481 [inline]
path_openat+0x10e6/0x2df0 fs/namei.c:3710
do_filp_open+0x264/0x4f0 fs/namei.c:3740
If in->len is much larger than HFS_NAMELEN(31) which is the maximum
length of an HFS filename, a OOB write could occur in hfs_asc2mac(). In
that case, when the dst reaches the boundary, the srclen is still
greater than 0, which causes a OOB write.
Fix this by adding a check on dstlen in while() before writing to dst
address.
📍 영향받는 시스템
HFS 파일 시스템을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된(매우 긴 파일 이름을 가진) HFS 파일 시스템 이미지를 마운트하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 패치 버전인지 확인합니다.