🇰🇷 한글 설명
Linux 커널의 mac802154 서브시스템에서 스캔 작업자(scan worker)가 인터페이스 참조를 적절히 유지하지 못해 발생하는 취약점입니다. 인터페이스 삭제와 스캔 작업이 동시에 발생할 경우, 이미 해제된 네트워크 장치를 참조하게 되어 Use-After-Free 오류가 발생할 수 있습니다.
💡 쉬운 설명
무선 네트워크를 검색하는 도중에 네트워크 장치를 갑자기 제거하면, 컴퓨터가 이미 사라진 장치를 계속 사용하려고 시도하다가 오류가 발생하는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mac802154: hold an interface reference across the scan worker
mac802154_scan_worker() captures the scanning sub-interface under RCU
and then keeps dereferencing sdata->dev after rcu_read_unlock() and
outside the rtnl -- in the failure traces, in
mac802154_transmit_beacon_req() (skb->dev = sdata->dev), and in the
end_scan cleanup. Nothing keeps that netdev alive across the worker
iteration.
A concurrent DEL_INTERFACE or PHY removal can unregister the interface
once the worker drops the rtnl between its two drv_set_channel()
sections. unregister_netdevice() frees the netdev asynchronously from
netdev_run_todo() with the rtnl already dropped, so neither holding the
rtnl nor the per-PHY IEEE802154_IS_SCANNING flag prevents a stale worker
iteration from dereferencing the freed netdev -- a KASAN
slab-use-after-free, reachable by racing TRIGGER_SCAN against
DEL_INTERFACE (both CAP_NET_ADMIN).
Pin the netdev with netdev_hold() while the RCU read lock is still held,
and release it at every worker exit.
📍 영향받는 시스템
Linux kernel (mac802154 서브시스템을 사용하는 시스템)
⚔️ 공격 벡터
CAP_NET_ADMIN 권한을 가진 사용자가 스캔 명령과 인터페이스 삭제 명령을 동시에 실행하여 레이스 컨디션 유발
🛡️ 대응 방법
커널 패치를 적용하여 스캔 작업 중 netdev_hold()를 통해 네트워크 장치의 참조를 유지하도록 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.