🇰🇷 한글 설명
Linux 커널의 SCSI 블록 계층에서 zone report 처리 중 배열 범위를 벗어난 쓰기(Out-of-bounds write) 취약점이 발견되었습니다. 디스크가 배열 크기보다 많은 존(zone)을 보고할 경우, 인덱스 검증 부재로 인해 메모리 오염이 발생할 수 있습니다.
💡 쉬운 설명
저장 장치가 실제 크기보다 훨씬 많은 구역이 있다고 거짓 정보를 보내면, 컴퓨터 메모리의 잘못된 위치에 데이터를 적어 넣는 오류가 발생합니다. 이로 인해 시스템이 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: block: Fix zones_cond out-of-bounds write on zone report
blk_revalidate_disk_zones() sizes the zones_cond array from the disk
capacity and zone size, but the index used by blk_revalidate_zone_cond()
comes from the device-driven report_zones() walk and is never checked
against the array size. A device reporting more zones than fit the array
makes blk_zone_set_cond() write out of bounds.
One way to reach this is a zone count exceeding 32 bits: both
blk_revalidate_zone_args.nr_zones and struct zoned_disk_info.nr_zones are
unsigned int, so a disk advertising more than UINT_MAX zones (e.g. 2^32 +
1024 zones of one 512-byte logical block) gets its zone count truncated to
a small value, undersizing the array while the report walk keeps counting
upward.
Check the index against the array size before storing the zone condition,
and refuse to revalidate when the zone count does not fit 32 bits.
📍 영향받는 시스템
Linux Kernel (SCSI block layer 관련 버전)
⚔️ 공격 벡터
조작된 zone report를 보내는 악의적인 SCSI 장치를 시스템에 연결
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인