🇰🇷 한글 설명
리눅스 커널 블록 디바이스에서 파티션 길이가 논리 블록 크기와 정렬되는지 확인하지 않아 발생하는 취약점. 논리 블록 크기가 512바이트보다 크면 파티션 크기가 정렬되지 않아 IO 에러 및 널 포인터 역참조 발생 가능.
💡 쉬운 설명
디스크의 기본 블록 크기가 크면, 파티션 크기가 맞지 않아서 데이터를 읽을 때 오류 발생. 이로 인해 시스템 충돌이나 데이터 무결성 검증 실패 가능.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
block: add check that partition length needs to be aligned with block size
Before calling add partition or resize partition, there is no check
on whether the length is aligned with the logical block size.
If the logical block size of the disk is larger than 512 bytes,
then the partition size maybe not the multiple of the logical block size,
and when the last sector is read, bio_truncate() will adjust the bio size,
resulting in an IO error if the size of the read command is smaller than
the logical block size.If integrity data is supported, this will also
result in a null pointer dereference when calling bio_integrity_free.
📍 영향받는 시스템
Linux kernel (모든 버전), 특히 4KB 이상의 논리 블록 크기를 사용하는 저장 장치
⚔️ 공격 벡터
로컬 사용자가 부정렬된 파티션 크기를 설정하거나 파티션 크기 조정으로 IO 에러 유발
🛡️ 대응 방법
Linux kernel을 CVE-2023-52458 패치가 적용된 버전 이상으로 업그레이드
🔧 검증 코드
커널 버전이 5.10.200 이상 또는 최신 LTS 버전이면 패치됨, 그 이하면 취약한 상태
uname -r | awk -F'.' '{if($1>5 || ($1==5 && $2>10) || ($1==5 && $2==10 && $3>=200)) print "PATCHED"; else print "VULNERABLE"}'