CVE-2024-26859 in Linux
Zusammenfassung
von VulDB • 02.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/bnx2x: Zugriff auf eine freigegebene Seite in page_pool verhindern
Behebung eines Race Conditions, der zu einem Systemabsturz während der EEH-Fehlerbehandlung führt
Während der EEH-Fehlerwiederherstellung konnte die Transmit-Timeout-Logik des bnx2x-Treibers einen Race Condition verursachen, wenn Reset-Aufgaben verarbeitet wurden. Die Funktion bnx2x_tx_timeout() plant Reset-Aufgaben über bnx2x_sp_rtnl_task() ein, was letztendlich zu bnx2x_nic_unload() führt. In bnx2x_nic_unload() werden SGEs (Scatter-Gather-Elemente) mit bnx2x_free_rx_sge_range() freigegeben. Dies könnte jedoch mit dem Versuch des EEH-Treibers überschneiden, das Gerät mit bnx2x_io_slot_reset() zurückzusetzen, der ebenfalls versucht, SGEs freizugeben. Dieser Race Condition kann zu Systemabstürzen führen, die durch den Zugriff auf freigegebene Speicherstellen in bnx2x_free_rx_sge() verursacht werden.
```c 799 static inline void bnx2x_free_rx_sge(struct bnx2x *bp, 800 struct bnx2x_fastpath *fp, u16 index) 801 {
802 struct sw_rx_page *sw_buf = &fp->rx_page_ring[index];
803 struct page *page = sw_buf->page; .... ```
wobei sw_buf nach dem Aufruf von dma_unmap_page() vom vorhergehenden Thread auf NULL gesetzt wurde.
``` EEH: Beginn: 'slot_reset' PCI 0011:01:00.0#10000: EEH: Aufruf von bnx2x->slot_reset() bnx2x: [bnx2x_io_slot_reset:14228(eth1)] IO-Slot-Reset wird initialisiert...
bnx2x 0011:01:00.0: Gerät wird aktiviert (0140 -> 0142) bnx2x: [bnx2x_io_slot_reset:14244(eth1)] IO-Slot-Reset --> Treiber-Entladen
Kernel versuchte, Benutzerseite (0) zu lesen - Exploit-Versuch? (uid: 0) BUG: Kernel NULL-Zeiger-Dereferenzierung beim Lesen bei 0x00000000 Adresse der fehlerhaften Anweisung: 0xc0080000025065fc Oops: Kernelzugriff auf ungültigen Bereich, Signal: 11 [#1]
..... Call Trace: [c000000003c67a20] [c00800000250658c] bnx2x_io_slot_reset+0x204/0x610 [bnx2x] (unzuverlässig)
[c000000003c67af0] [c0000000000518a8] eeh_report_reset+0xb8/0xf0
[c000000003c67b60] [c000000000052928] eeh_handle_normal_event+0x3f8/0xa60
[c000000003c67c70] [c00000000005318c] eeh_handle_normal_event+0x84c/0xa60
[c000000003c67d50] [c000000000053a84] eeh_event_handler+0xf4/0x170
[c000000003c67da0] [c000000000194c58] kthread+0x1c8/0x1d0
[c000000003c67e10] [c00000000000cf64] ret_from_kernel_thread+0x5c/0x64
Um dieses Problem zu lösen, müssen wir die page_pool-Zuordnungen vor dem Freigeben überprüfen. ```
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.