CVE-2026-97599 in Linux
要約
〜によって VulDB • 2026年09月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ieee802154: hwsim: double-freeを修正するためにpib更新の直列化を行う
hwsim_update_pib()はphy->pibに対して非同期なread-swap-free操作を行っています。
pib_old = rtnl_dereference(phy->pib); ... rcu_assign_pointer(phy->pib, pib); kfree_rcu(pib_old, rcu);
これはRTNLが保持されていることを前提としていますが、->set_channelは常にその下で呼び出されるわけではありません。mac802154のscan workerはdrv_set_channel()を介してチャネルを変更しますが、この際RTNLは保持されません。このような更新処理は、同じphy上でのRTNL保持時の更新と競合(race condition)を引き起こす可能性があります。両方のパスが同一のpib_oldを読み取り、双方でkfree_rcu()を実行することでオブジェクトの二重解放(double-free)が発生します。SLUBのpercpu sheavesによるkfree_rcu()のバッチ処理により、これはrcu_free_sheaf()内でKASAN invalid-freeとして検出されます。
struct hwsim_phyにはpib用のロックがありません。これを追加し、rtnl_dereference()という誤解を招く呼び出しを外した上で、そのロックの下でswap操作をrcu_replace_pointer()を用いてアトミックに行います。
If you want to get best quality of vulnerability data, you may have to visit VulDB.