🇰🇷 한글 설명
Linux 커널의 dm-pcache 구성 요소에서 seg_num 값이 캐시 장치의 크기 내에 있는지 검증하지 않아 발생하는 취약점입니다. 공격자가 조작된 값을 제공할 경우 커널 힙 영역에 대한 경계 외 쓰기(Out-of-bounds write)가 발생하여 시스템 안정성을 해칠 수 있습니다.
💡 쉬운 설명
리눅스 시스템의 특정 저장 장치 관리 기능에서 잘못된 숫자를 입력받아 컴퓨터의 중요한 메모리 영역을 망가뜨릴 수 있는 오류입니다. 이로 인해 시스템이 멈추거나 보안이 뚫릴 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dm-pcache: validate on-media seg_num against the cache device size
seg_num is read from the crc32c-only superblock, so whoever supplies the
cache device on a table load (CAP_SYS_ADMIN) controls it. It sizes
cache->segments[] and is the value every later on-media segment id is
bounded against, yet it is never checked against the device. Because
cache_dev->mapping is the direct map of the pmem, CACHE_DEV_SEGMENT() for
a segment id past the device resolves to ordinary kernel memory beyond
the mapping; a new-cache init reaching such an id has cache_seg_init() ->
cache_dev_zero_range() memset() 12 KiB over that memory -- an
out-of-bounds write into the kernel heap at table load. A zero seg_num
makes the segment allocations ZERO_SIZE_PTR.
Reject a seg_num that is zero, larger than the device can hold, or larger
than PCACHE_CACHE_SEGS_MAX before it is used.
📍 영향받는 시스템
Linux kernel (dm-pcache 모듈 사용 환경)
⚔️ 공격 벡터
CAP_SYS_ADMIN 권한을 가진 사용자가 조작된 슈퍼블록(superblock)을 포함한 캐시 장치를 테이블 로드 시 제공
🛡️ 대응 방법
dm-pcache의 seg_num에 대해 0, 장치 크기 초과, 또는 최대 세그먼트 수 초과 여부를 검증하는 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인하십시오.