🇰🇷 한글 설명
Linux 커널의 dm-array 구성 요소에서 블록 헤더 검증이 불충분하여 발생하는 취약점입니다. 잘못된 nr_entries 값이 제공될 경우 커서가 버퍼 범위를 벗어나 메모리 읽기 오류를 유발할 수 있습니다.
💡 쉬운 설명
데이터를 저장하는 방식에 오류가 있어, 시스템이 정해진 범위를 넘어서 잘못된 메모리 영역을 읽으려고 시도할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dm array: validate array block headers on read
array_block_check() validates blocknr and csum and nothing else, while
node_check(), next to it, has bounded the structural fields since both
were written. dm_array_cursor_next() takes its loop bound from the
on-disk nr_entries and element_at() is unguarded pointer arithmetic, so
a count larger than the block holds keeps the cursor in one block while
the index grows past it and the read walks off the dm-bufio buffer --
dm_cache_load_mappings() drives it once per cache block at activation.
Check the header against itself: reject a zero value_size, require
max_entries to equal calc_max_entries() for that value_size and block
size, and require nr_entries to fit. Equality rather than an upper bound,
since a count below the real capacity trips BUG_ON() in fill_ablock() and
trim_ablock(). Metadata dm-array writes satisfies all three.
📍 영향받는 시스템
Linux kernel (dm-array 관련 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 dm-array 메타데이터를 로드하여 메모리 범위를 벗어난 읽기 유도
🛡️ 대응 방법
dm-array 블록 헤더 검증 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 보안 업데이트 버전인지 확인