🇰🇷 한글 설명
Linux 커널의 mpi3mr 드라이버에서 비트맵 크기를 계산할 때 바이트 단위를 사용하여 발생하는 메모리 관리 오류입니다. 이로 인해 비트맵 보조 함수가 할당된 범위를 벗어난 메모리에 접근하여 'slab-out-of-bounds' 오류를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터가 데이터를 저장할 때 사용하는 공간의 크기를 잘못 계산하여, 정해진 구역을 넘어서 다른 데이터를 건드리는 문제입니다. 이로 인해 시스템이 불안정해지거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: mpi3mr: Use number of bits to manage bitmap sizes
To allocate bitmaps, the mpi3mr driver calculates sizes of bitmaps using
byte as unit. However, bitmap helper functions assume that bitmaps are
allocated using unsigned long as unit. This gap causes memory access beyond
the bitmap sizes and results in "BUG: KASAN: slab-out-of-bounds". The BUG
was observed at firmware download to eHBA-9600. Call trace indicated that
the out-of-bounds access happened in find_first_zero_bit() called from
mpi3mr_send_event_ack() for miroc->evtack_cmds_bitmap.
To fix the BUG, do not use bytes to manage bitmap sizes. Instead, use
number of bits, and call bitmap helper functions which take number of bits
as arguments. For memory allocation, call bitmap_zalloc() instead of
kzalloc() and krealloc(). For memory free, call bitmap_free() instead of
kfree(). For zero clear, call bitmap_clear() instead of memset().
Remove three fields for bitmap byte sizes in struct scmd_priv which are no
longer required. Replace the field dev_handle_bitmap_sz with
dev_handle_bitmap_bits to keep number of bits of removepend_bitmap across
resize.
📍 영향받는 시스템
Linux kernel (mpi3mr driver 사용 시스템)
⚔️ 공격 벡터
특정 펌웨어 다운로드 과정이나 이벤트 처리 과정에서 발생하는 메모리 오버플로우 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 비트맵 관리 로직 수정 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인