🇰🇷 한글 설명
Linux 커널의 dm-integrity 모듈에서 Inline 모드일 때 저널이 사용되지 않아 journal_sectors가 0인 상태에서, 저널 워터마크 계산을 위해 0으로 나누는 연산이 수행되어 커널 Oops가 발생할 수 있습니다. 이는 dmsetup table 같은 단순 조회만으로도 발생할 수 있습니다.
💡 쉬운 설명
리눅스 디스크 암호화/무결성 기능의 한 부분에서 계산 오류가 생겨 시스템이 멈출 수 있습니다. 특정 상태에서 단순한 디스크 상태 조회만으로도 문제가 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dm-integrity: Avoid divide by zero in table status in Inline mode
In Inline mode, the journal is unused, and journal_sectors is zero.
Calculating the journal watermark requires dividing by journal_sectors,
which should be done only if the journal is configured.
Otherwise, a simple table query (dmsetup table) can cause OOPS.
This bug did not show on some systems, perhaps only due to
compiler optimization.
On my 32-bit testing machine, this reliably crashes with the following:
: Oops: divide error: 0000 [#1] PREEMPT SMP
: CPU: 0 UID: 0 PID: 2450 Comm: dmsetup Not tainted 6.14.0-rc2+ #959
: EIP: dm_integrity_status+0x2f8/0xab0 [dm_integrity]
...
📍 영향받는 시스템
dm-integrity 모듈을 사용하고 Inline 모드를 쓰는 수정 전 Linux 커널 (6.14-rc2 등 해당 패치 이전 버전)
⚔️ 공격 벡터
로컬 사용자 권한에서 dmsetup table 등으로 해당 장치 상태를 조회하면 커널 Oops(서비스 거부)를 유발할 수 있음
🛡️ 대응 방법
커널을 해당 CVE 수정이 포함된 최신 안정 버전으로 업데이트
🔧 검증 코드
커널 버전이 CVE 수정 패치 이전 버전인지 확인하고, dm_integrity 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.
uname -r && (lsmod | grep dm_integrity || echo 'dm_integrity not loaded')