🇰🇷 한글 설명
Linux 커널의 mtd block2mtd 모듈에서 erase_size 매개변수가 0으로 설정될 경우, 0으로 나누기 연산이 발생하여 시스템 오류(divide error)가 발생하는 취약점입니다. 이로 인해 커널 패닉이 발생하거나 시스템이 중단될 수 있습니다. 수정된 버전에서는 연산 전 erase_size가 0인지 확인하여 오류를 방지합니다.
💡 쉬운 설명
컴퓨터의 저장 장치를 설정하는 과정에서 숫자를 0으로 나누는 계산 실수가 발생하여 시스템이 멈출 수 있는 문제입니다. 설정값에 0을 입력하면 시스템이 오류를 일으키며 작동을 멈추게 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mtd: block2mtd: Fix divide error when erase_size is zero
The erase size is parsed from the "block2mtd" module parameter and can
be set to zero. add_device() then evaluates
if (size % erase_size)
with a zero divisor, which triggers a divide error:
divide error: 0000 [#1] PREEMPT SMP PTI
RIP: 0010:add_device drivers/mtd/devices/block2mtd.c:296 [inline]
RIP: 0010:block2mtd_setup2+0x592/0xda0 drivers/mtd/devices/block2mtd.c:459
Call Trace:
block2mtd_setup+0x27/0xe0 drivers/mtd/devices/block2mtd.c:476
param_attr_store+0x214/0x310 kernel/params.c:589
module_attr_store+0x65/0x90 kernel/params.c:904
kernfs_fop_write_iter+0x3a4/0x540 fs/kernfs/file.c:345
...
Reject a zero erase size before performing the modulo operation so the
existing "erasesize must be a divisor of device size" error path
reports the invalid argument and frees the device.
📍 영향받는 시스템
Linux kernel (block2mtd 모듈을 사용하는 시스템)
⚔️ 공격 벡터
로컬 사용자가 block2mtd 모듈 매개변수의 erase_size를 0으로 설정하여 시스템을 중단시킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인