🇰🇷 한글 설명
Linux 커널의 isl29028 조도 센서 드라이버에서 isl29028_remove() 함수가 managed/non-managed 등록 함수의 해제 순서를 probe 함수와 일치시키지 않아 발생한 문제입니다. 이로 인해 드라이버 제거 시 null 포인터 역참조로 커널 패닉(일반 보호 오류)이 발생할 수 있습니다.
💡 쉬운 설명
특정 조명 센서 드라이버를 제거할 때 컴퓨터가 비정상 종료되거나 오류 메시지를 띄울 수 있는 버그입니다. 주로 안정성 문제이며 악의적 공격보다는 장치 제거 시 충돌 문제에 가깝습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iio: light: isl29028: Fix the warning in isl29028_remove()
The driver use the non-managed form of the register function in
isl29028_remove(). To keep the release order as mirroring the ordering
in probe, the driver should use non-managed form in probe, too.
The following log reveals it:
[ 32.374955] isl29028 0-0010: remove
[ 32.376861] general protection fault, probably for non-canonical address 0xdffffc0000000006: 0000 [#1] PREEMPT SMP KASAN PTI
[ 32.377676] KASAN: null-ptr-deref in range [0x0000000000000030-0x0000000000000037]
[ 32.379432] RIP: 0010:kernfs_find_and_get_ns+0x28/0xe0
[ 32.385461] Call Trace:
[ 32.385807] sysfs_unmerge_group+0x59/0x110
[ 32.386110] dpm_sysfs_remove+0x58/0xc0
[ 32.386391] device_del+0x296/0xe50
[ 32.386959] cdev_device_del+0x1d/0xd0
[ 32.387231] devm_iio_device_unreg+0x27/0xb0
[ 32.387542] devres_release_group+0x319/0x3d0
[ 32.388162] i2c_device_remove+0x93/0x1f0
📍 영향받는 시스템
패치 이전의 Linux 커널 중 isl29028 드라이버를 포함한 시스템 (해당 센서 하드웨어 사용 환경)
⚔️ 공격 벡터
일반적으로 로컬 권한이 있는 사용자가 해당 장치를 제거(unbind/hot-unplug)할 때 발생하며, 원격에서 직접 악용하는 경로는 확인되지 않음
🛡️ 대응 방법
배포판 제공 최신 커널 업데이트를 적용하거나, 패치된 커널 소스로 재빌드 후 재부팅
🔧 검증 코드
커널 버전이 패치가 포함된 최신 릴리스인지 확인하고, isl29028 모듈이 로드되지 않았거나 드라이버가 바인딩되지 않았다면 이 취약점에 노출되지 않은 것입니다. 모듈이 로드되어 있다면 배포판 보안 공지에서 패치 버전을 대조하세요.
uname -r && (lsmod | grep -i isl29028 || echo 'isl29028 module not loaded') && (ls /sys/bus/i2c/drivers/isl29028 2>/dev/null || echo 'isl29028 driver not bound')