🇰🇷 한글 설명
Linux 커널의 rtlwifi PCI 드라이버에서 irq_prepare_bcn_tasklet이 적절히 종료되지 않아 발생하는 Use-After-Free 취약점입니다. 장치가 분리되거나 초기화에 실패할 때 ieee80211_hw 구조체가 해제된 후에도 태스크릿이 실행을 시도하여 메모리 오류를 유발할 수 있습니다.
💡 쉬운 설명
무선 랜 카드를 컴퓨터에서 제거할 때, 하던 일을 제대로 마무리하지 않고 메모리에서 사라져서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: rtlwifi: pci: fix possible use-after-free caused by unfinished irq_prepare_bcn_tasklet
The irq_prepare_bcn_tasklet is initialized in rtl_pci_init() and
scheduled when RTL_IMR_BCNINT interrupt is triggered by hardware.
But it is never killed in rtl_pci_deinit(). When the rtlwifi card
probe fails or is being detached, the ieee80211_hw is deallocated.
However, irq_prepare_bcn_tasklet may still be running or pending,
leading to use-after-free when the freed ieee80211_hw is accessed
in _rtl_pci_prepare_bcn_tasklet().
Similar to irq_tasklet, add tasklet_kill() in rtl_pci_deinit() to
ensure that irq_prepare_bcn_tasklet is properly terminated before
the ieee80211_hw is released.
The issue was identified through static analysis.
📍 영향받는 시스템
Linux kernel (rtlwifi PCI driver components)
⚔️ 공격 벡터
로컬 공격자가 특정 하드웨어 인터럽트 상황을 유도하여 메모리 오류를 일으킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 rtl_pci_deinit() 내 tasklet_kill() 적용 확인
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 이후의 버전인지 확인합니다.