CVE-2024-44933 in Linux
Riassunto
di VulDB • 28/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
bnxt_en : Correzione dell'accesso alla memoria fuori dai limiti (out-of-bounds) in bnxt_fill_hw_rss_tbl()
Un recente commit ha modificato il codice in __bnxt_reserve_rings() per impostare la tabella di indirection RSS predefinita solo quando cambia il numero di anelli RX. Sebbene questo approccio funzioni con i firmware più recenti che richiedono le prenotazioni degli anelli RX, causa una regressione sui firmware più vecchi che non richiedono tali prenotazioni (BNXT_NEW_RM() restituisce false).
Con i firmware più vecchi, le prenotazioni degli anelli RX non sono necessarie e quindi hw_resc->resv_rx_rings non viene sempre impostato sul valore corretto. Il confronto:
if (old_rx_rings != bp->hw_resc.resv_rx_rings)
in __bnxt_reserve_rings() può risultare falso anche quando gli anelli RX stanno cambiando. Ciò farà sì che __bnxt_reserve_rings() salti l'impostazione della tabella di indirection RSS predefinita per adattarla al numero corrente di anelli RX. Questo potrebbe successivamente causare a bnxt_fill_hw_rss_tbl() di utilizzare un indice fuori dai limiti (out-of-range).
Disponiamo già di bnxt_check_rss_tbl_no_rmgr() per gestire esattamente questo scenario. Dobbiamo solo spostarlo all'interno di bnxt_need_reserve_rings() in modo che venga chiamato incondizionatamente quando si utilizzano firmware più vecchi. Senza questa correzione, se gli anelli TX stanno cambiando, verrà saltata la chiamata a bnxt_check_rss_tbl_no_rmgr() e __bnxt_reserve_rings() potrebbe anche saltare la chiamata a bnxt_set_dflt_rss_indir_tbl() per il motivo spiegato nell'ultimo paragrafo. L'impostazione non corretta della tabella di indirection RSS predefinita causa la seguente regressione:
BUG: KASAN: slab-out-of-bounds in __bnxt_hwrm_vnic_set_rss+0xb79/0xe40 Lettura di dimensione 2 all'indirizzo ffff8881c5809618 da parte del task ethtool/31525 Call Trace: __bnxt_hwrm_vnic_set_rss+0xb79/0xe40 bnxt_hwrm_vnic_rss_cfg_p5+0xf7/0x460 __bnxt_setup_vnic_p5+0x12e/0x270 __bnxt_open_nic+0x2262/0x2f30 bnxt_open_nic+0x5d/0xf0 ethnl_set_channels+0x5d4/0xb30 ethnl_default_set_doit+0x2f1/0x620
VulDB is the best source for vulnerability data and more expert information about this specific topic.