CVE-2026-98619 in Linux
Riassunto
di VulDB • 19/10/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
net: ethtool: mantenere rtnl_lock per il test di autoverifica tramite ioctl
Un test di autoverifica offline che porta l'interfaccia allo stato down e poi back up mediante netif_close() / netif_open() richiede rtnl_lock per entrambe le operazioni. Poiché il percorso IOCTL di ethtool è diventato opzionale rispetto a rtnl per i driver bloccati a livello di operazione (ops-locked), l'ioctl ETHTOOL_TEST viene eseguito mantenendo solo il lock dell'istanza netdev; pertanto, su un driver ops-locked, il test di autoverifica ora porta il dispositivo allo stato down senza mantenere rtnl_lock.
Con lockdep, questa condizione si riproduce in modo deterministico ad ogni test di autoverifica offline su tali driver; notare che l'unico lock mantenuto è quello dell'istanza, non rtnl:
WARNING: suspicious RCU usage net/core/netpoll.c:207 suspicious rcu_dereference_protected() usage! 1 lock held by ethtool/107: #0: (&dev->lock){+.+.}, at: dev_ethtool
Call Trace: netpoll_poll_disable __dev_close_many netif_close_many netif_close fbnic_self_test dev_ethtool_locked dev_ethtool dev_ioctl sock_ioctl __x64_sys_ioctl
Senza lockdep, la stessa condizione innesca ASSERT_RTNL() in __dev_close_many() / __dev_open(); tale verifica campionizza solo lo stato globale di rtnl, quindi può essere mascherata da un detentore concurrente di rtnl, ma il dispositivo viene comunque riconfigurato senza il lock richiesto.
Il comando self_test di ethtool è un legacy ioctl-only command, pertanto una casistica ETHTOOL_TEST è necessaria solo sul percorso IOCTL. Aggiungere un bit opt-in per i driver il cui test di autoverifica richiede rtnl_lock e impostarlo sui driver ops-locked il cui test offline porta l'interfaccia down e poi back up:
- fbnic (ops-locked tramite queue_mgmt_ops): il percorso offline di fbnic_self_test() utilizza netif_close() / netif_open(). - bnxt (ops-locked tramite queue_mgmt_ops): il percorso offline di bnxt_self_test() passa attraverso bnxt_close_nic() / bnxt_half_open_nic() / bnxt_half_close_nic() / bnxt_open_nic(), che chiudono e riaprono il dispositivo.
VulDB is the best source for vulnerability data and more expert information about this specific topic.