🇰🇷 한글 설명
Linux 커널의 dm mirror 구성 요소 내 create_dirty_log() 함수에서 정수 오버플로 취약점이 발견되었습니다. 사용자가 조작된 param_count 값을 입력할 경우 산술 연산 결과가 래핑되어 유효성 검사를 우회할 수 있으며, 이로 인해 argv 배열에서 경계 외 읽기(out-of-bounds read)가 발생할 수 있습니다.
💡 쉬운 설명
리눅스 시스템의 특정 데이터 관리 기능에서 숫자를 계산할 때 오류가 발생하는 취약점입니다. 공격자가 특수한 값을 입력하면 시스템이 잘못된 메모리 영역을 읽어 들여 정보를 유출하거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dm mirror: fix integer overflow in create_dirty_log()
The argument count calculation in create_dirty_log() performs
`*args_used = 2 + param_count` before validating against argc. When a
user provides a param_count close to UINT_MAX via the device mapper
table string, this unsigned addition wraps around to a small value,
causing the subsequent `argc < *args_used` check to be bypassed.
The overflowed param_count is then passed as argc to dm_dirty_log_create(),
where it can cause out-of-bounds reads on the argv array.
Fix by comparing param_count against argc - 2 before performing the
addition, following the same pattern used by parse_features() in the
same file. Since argc >= 2 is already guaranteed, the subtraction is
safe.
📍 영향받는 시스템
Linux Kernel (dm mirror 모듈을 사용하는 버전)
⚔️ 공격 벡터
Device mapper table 문자열을 통해 조작된 param_count 값을 전달하여 정수 오버플로 유도
🛡️ 대응 방법
커널 패치를 적용하여 param_count와 argc 간의 유효성 검사 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.