🇰🇷 한글 설명
Linux 커널의 imx8-isi 미디어 드라이버에서 모듈 제거 시 Use-After-Free 취약점이 발생합니다. mxc_isi_remove 함수가 미디어 엔티티 패드를 해제한 후에도 해당 패드를 참조하는 링크를 제거하려 시도하여 메모리 오류가 발생합니다.
💡 쉬운 설명
컴퓨터 부품을 제거할 때, 이미 버린 부품의 정보를 다시 확인하려고 해서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: nxp: imx8-isi: Fix use-after-free on remove
KASAN reports a slab-use-after-free in __media_entity_remove_link()
during rmmod of imx8_isi:
BUG: KASAN: slab-use-after-free in __media_entity_remove_link+0x608/0x650
Read of size 2 at addr ffff0000d47cb02a by task rmmod/724
Call trace:
__media_entity_remove_link+0x608/0x650
__media_entity_remove_links+0x78/0x144
__media_device_unregister_entity+0x150/0x280
media_device_unregister_entity+0x48/0x68
v4l2_device_unregister_subdev+0x158/0x300
v4l2_async_unbind_subdev_one+0x22c/0x358
v4l2_async_nf_unbind_all_subdevs+0xfc/0x1c0
v4l2_async_nf_unregister+0x5c/0x14c
mxc_isi_remove+0x124/0x2a0 [imx8_isi]
Allocated by task 249:
__kmalloc_noprof+0x27c/0x690
mxc_isi_crossbar_init+0x22c/0x560 [imx8_isi]
Freed by task 724:
kfree+0x1e4/0x5b0
mxc_isi_crossbar_cleanup+0x34/0x80 [imx8_isi]
mxc_isi_remove+0x11c/0x2a0 [imx8_isi]
The problem is that mxc_isi_remove() calls mxc_isi_crossbar_cleanup()
before mxc_isi_v4l2_cleanup(). The crossbar cleanup frees the media
entity pads, but the subsequent v4l2 cleanup still tries to remove
media links that reference those pads.
Fix this by calling mxc_isi_v4l2_cleanup() before
mxc_isi_crossbar_cleanup() to ensure all media entities are properly
unregistered while the pads are still valid.
📍 영향받는 시스템
Linux kernel (imx8_isi driver module)
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 imx8_isi 커널 모듈을 제거(rmmod)할 때 발생
🛡️ 대응 방법
mxc_isi_v4l2_cleanup()을 mxc_isi_crossbar_cleanup()보다 먼저 호출하도록 커널 패치 적용
🔧 검증 코드
커널 버전과 imx8_isi 모듈의 정보를 확인하여 해당 취약점이 수정된 최신 커널인지 확인합니다.
uname -r && modinfo imx8_isi 2>/dev/null