🇰🇷 한글 설명
Linux 커널의 dvb-usb az6027 드라이버에서 az6027_i2c_xfer() 함수가 msg[i].len이 0이고 msg[i].buf가 NULL인 상태에서 msg[i].addr 0x99 요청을 처리할 때 NULL 포인터 역참조가 발생합니다. 이 문제는 msg[i].len을 검사하여 수정되었습니다.
💡 쉬운 설명
특정 USB 디지털 TV 장치 드라이버가 비어 있는 데이터 요청을 잘못 처리해 시스템이 충돌할 수 있습니다. 해당 드라이버 수정이 포함된 커널 업데이트로 문제가 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
Wei Chen reports a kernel bug as blew:
general protection fault, probably for non-canonical address
KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
...
Call Trace:
<TASK>
__i2c_transfer+0x77e/0x1930 drivers/i2c/i2c-core-base.c:2109
i2c_transfer+0x1d5/0x3d0 drivers/i2c/i2c-core-base.c:2170
i2cdev_ioctl_rdwr+0x393/0x660 drivers/i2c/i2c-dev.c:297
i2cdev_ioctl+0x75d/0x9f0 drivers/i2c/i2c-dev.c:458
vfs_ioctl fs/ioctl.c:51 [inline]
__do_sys_ioctl fs/ioctl.c:870 [inline]
__se_sys_ioctl+0xfb/0x170 fs/ioctl.c:856
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0x90 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7fd834a8bded
In az6027_i2c_xfer(), if msg[i].addr is 0x99,
a null-ptr-deref will caused when accessing msg[i].buf.
For msg[i].len is 0 and msg[i].buf is null.
Fix this by checking msg[i].len in az6027_i2c_xfer().
📍 영향받는 시스템
az6027 DVB USB 드라이버를 포함한 수정 이전의 Linux 커널 버전
⚔️ 공격 벡터
로컬 사용자가 I2C 장치 인터페이스(/dev/i2c-*)를 통해 조작된 ioctl 요청을 보내 커널 패닉(서비스 거부)을 유발할 수 있습니다.
🛡️ 대응 방법
패치가 포함된 최신 Linux 커널로 업데이트하거나 배포판 보안 업데이트를 적용하십시오.
🔧 검증 코드
커널 버전이 패치 적용 이전 버전인지 확인하고, az6027 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.
uname -r && (lsmod | grep -i az6027 || echo 'az6027 module not loaded')