🇰🇷 한글 설명
Linux 커널의 UDF 파일 시스템에서 free block extents를 검증할 때 파티션 길이를 정확히 확인하지 않는 취약점이 발견되었습니다. 공격자가 조작된 파일 시스템을 사용하여 특정 파일을 자를 경우(ftruncate), 커널이 범위를 벗어난 메모리에 접근하여 시스템 패닉(커널 충돌)을 유발할 수 있습니다.
💡 쉬운 설명
특수하게 만들어진 USB나 디스크를 컴퓨터에 연결하고 파일을 조작하면 컴퓨터가 갑자기 멈추거나 꺼질 수 있는 문제입니다. 일반 사용자가 권한 없이도 시스템을 중단시킬 수 있는 가용성 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
udf: validate free block extents against the partition length
udf_free_blocks() checks the logical block number and count against the
partition length, but drops the extent offset from that final bound. A
crafted extent can pass the guard while logicalBlockNum + offset + count
points past the partition, which later indexes past the space bitmap
array.
A single ftruncate(2) on a file backed by such an extent reliably
panics the kernel. This is a local availability issue. On desktop
systems where UDisks/polkit allows the active user to mount removable
UDF media without CAP_SYS_ADMIN, an unprivileged local user can supply
the crafted filesystem and trigger the panic by truncating a writable
file on it. Systems that require root or CAP_SYS_ADMIN to mount the
image have a higher prerequisite.
No confidentiality or integrity impact is claimed: the reproduced
primitive is an out-of-bounds read of a bitmap pointer slot followed by
a kernel panic.
Use the already computed logicalBlockNum + offset + count value for the
partition length check. Also make load_block_bitmap() reject an
out-of-range block group before indexing s_block_bitmap[], so corrupted
callers cannot walk past the flexible array.
📍 영향받는 시스템
Linux kernel (UDF 파일 시스템 사용 환경)
⚔️ 공격 벡터
조작된 UDF 파일 시스템이 탑재된 미디어를 삽입한 후, 해당 미디어 내의 파일을 ftruncate(2) 시스템 호출로 조작
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 UDF 블록 검증 로직을 수정해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.