🇰🇷 한글 설명
Linux 커널의 ieee802154 hwsim 모듈에서 PIB(PHY Information Block) 업데이트 시 동기화가 이루어지지 않아 발생하는 double-free 취약점입니다. RTNL 락 없이 채널을 변경하는 과정에서 경합 조건(Race Condition)이 발생하여 동일한 메모리 객체가 두 번 해제될 수 있습니다.
💡 쉬운 설명
컴퓨터의 무선 통신 기능을 관리하는 소프트웨어에서 두 가지 작업이 동시에 일어날 때 메모리 관리 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ieee802154: hwsim: serialize pib updates to fix double-free
hwsim_update_pib() does an unserialized read-swap-free of phy->pib:
pib_old = rtnl_dereference(phy->pib);
...
rcu_assign_pointer(phy->pib, pib);
kfree_rcu(pib_old, rcu);
It assumes the RTNL is held, but ->set_channel is not always called
under it: the mac802154 scan worker changes channels via
drv_set_channel() without the RTNL. Such an update can race an
RTNL-held one on the same phy; both read the same pib_old and both
kfree_rcu() it, double-freeing the object. With SLUB percpu sheaves
batching kfree_rcu(), this surfaces as a KASAN invalid-free in
rcu_free_sheaf().
struct hwsim_phy has no lock for pib. Add one and make the swap atomic
with rcu_replace_pointer() under it, dropping the misleading
rtnl_dereference().
📍 영향받는 시스템
Linux kernel (ieee802154 hwsim module 포함 버전)
⚔️ 공격 벡터
특정 조건에서 무선 채널 변경 요청을 동시에 발생시켜 메모리 경합 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인