🇰🇷 한글 설명
Linux 커널의 iio: health: max30102 드라이버에서 인터럽트 핸들러가 NULL 포인터를 참조하는 취약점이 발견되었습니다. 버퍼가 활성화되지 않은 상태에서 인터럽트가 발생할 경우, 유효하지 않은 active_scan_mask를 참조하여 커널 패닉이 발생할 수 있습니다.
💡 쉬운 설명
센서 장치에서 신호가 들어왔을 때, 데이터가 준비되지 않은 상태에서 잘못된 메모리 주소를 건드려 컴퓨터 시스템이 멈추거나 오류가 발생하는 문제입니다. 데이터가 있는지 먼저 확인하는 절차가 빠져 있어 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iio: health: max30102: fix NULL dereference in interrupt handler
The interrupt is requested in max30102_probe() and stays enabled
for the lifetime of the device, but indio_dev->active_scan_mask is only
valid while a buffer is enabled. When an interrupt arrives while no
buffer is enabled, the handler dereferences the NULL active_scan_mask:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
Call trace:
__bitmap_weight+0x64/0x98 (P)
max30102_interrupt_handler+0x48/0x160 [max30102]
Call max30102_fifo_count() at the top of the handler and return early
unless it reports a FIFO sample is ready. Because FIFO_RDY is the only
interrupt source enabled in max30102_chip_init(), an invocation of
max30102_interrupt_handler() without the FIFO_RDY interrupt status bit
set carries no data to read and can return before touching
active_scan_mask. A negative return from max30102_fifo_count()
indicates a failed interrupt status read and is treated the same way.
📍 영향받는 시스템
Linux kernel (iio: health: max30102 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
물리적 장치(MAX30102 센서)를 통한 인터럽트 유발 또는 특정 하드웨어 상태 조작
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.