CVE-2026-68478 in Linux
요약
\~에 의해 VulDB • 2026. 08. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
memstick: ms_block: 블록 수가 너무 많다고 보고하는 카드를 거부함
msb_ftl_initialize() 함수는 카드의 블록 수를 기반으로 존(zone) 개수를 계산하지만, 이에 대한 상한선(bound) 체크가 없습니다.
msb->zone_count = msb->block_count / MS_BLOCKS_IN_ZONE; ... for (i = 0; i < msb->zone_count; i++) msb->free_block_count[i] = MS_BLOCKS_IN_ZONE;
msb->block_count는 카드에서 제공하는 값입니다. msb_read_boot_blocks() 함수는 카드 부트 페이지로부터 number_of_blocks를 읽어들인 후 바이트 순서를 변경(byte swaps)합니다. free_block_count는 고정된 int[MS_MAX_ZONES] 배열입니다. MS_MAX_ZONES의 값은 16이므로 유효한 인덱스는 0부터 15까지입니다. 위의 초기화 루프(zone_count를 인덱스로 사용)가 이를 참조할 때 문제가 발생합니다. msb_mark_block_used() 및 msb_mark_block_unused() 함수는 pba / MS_BLOCKS_IN_ZONE로 인덱싱하며, 여기서 pba는 최대 block_count - 1까지 가능합니다. 카드는 최대 65535개의 블록을 보고할 수 있습니다. block_count가 8192 (MS_MAX_ZONES * MS_BLOCKS_IN_ZONE)를 초과하면 pba 인덱스가 16에 도달하게 되어 free_block_count[] 배열 범위를 벗어나 쓰기를 수행하고 struct msb_data 구조체를 손상시킵니다. 더 큰 값의 경우 초기화 루프가 끝을 넘어 실행됩니다.
실제 메모리 스틱(Memory Stick)은 최대 16개의 존만 가지므로, 블록 수는 최대 8192개입니다. 이제 msb_ftl_initialize() 함수는 MS_MAX_ZONES * MS_BLOCKS_IN_ZONE보다 많은 블록 수를 보고하는 카드를 거부합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.