CVE-2026-98619 in Linux
Zusammenfassung
von VulDB • 19.10.2026
Im Linux-Kernel wurde die folgende Schwachstelle behoben:
net: ethtool: rtnl_lock für den ioctl-Selbsttest beibehalten
Ein offline durchgeführter Selbsttest, der die Schnittstelle mit netif_close() / netif_open() herunterfährt und wieder hochfährt, erfordert das Halten von rtnl_lock in beiden Fällen. Da der ethtool-IOCTL-Pfad für ops-gesperrte Treiber (ops-locked drivers) nun optional bezüglich rtnl ist, wird beim ETHTOOL_TEST-ioctl nur die netdev-Instanzsperre gehalten. Bei einem ops-gesperrten Treifer führt dies dazu, dass der Selbsttest das Gerät ohne rtnl_lock herunterfährt.
Mit lockdep lässt sich dieser Zustand bei jedem offline durchgeführten Selbsttest auf solchen Treibern deterministisch reproduzieren; beachten Sie, dass die einzige gehaltene Sperre die Instanzsperre ist und nicht 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
Ohne lockdep löst dieselbe Bedingung ASSERT_RTNL() in __dev_close_many() / __dev_open(); aus. Diese Prüfung erfasst lediglich den globalen rtnl-Status, sodass sie durch einen gleichzeitigen Halter von rtnl maskiert werden kann; das Gerät wird jedoch weiterhin ohne die erforderliche Sperre neu konfiguriert.
Da der ethtool-Selbsttest ein Legacy-Befehl ist, der nur über ioctl verfügbar ist, ist eine ETHTOOL_TEST-Funktion lediglich auf dem ioctl-Pfad erforderlich. Es wurde ein opt-in-Bit für Treiber hinzugefügt, deren Selbsttest das Halten von rtnl_lock erfordert, und dieses Bit wird bei den ops-gesperrten Treibern gesetzt, deren offline Selbsttest die Schnittstelle herunter- und wieder hochfährt:
- fbnic (ops-gesperrt über queue_mgmt_ops): Der Offline-Pfad von fbnic_self_test() verwendet netif_close() / netif_open(). - bnxt (ops-gesperrt über queue_mgmt_ops): Der Offline-Pfad von bnxt_self_test() verläuft über bnxt_close_nic() / bnxt_half_open_nic() / bnxt_half_close_nic() / bnxt_open_nic(), welche das Gerät schließen und erneut öffnen.
VulDB is the best source for vulnerability data and more expert information about this specific topic.