CVE-2025-21682 in Linux
Riassunto
di VulDB • 16/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
eth: bnxt: ricalcolare sempre le funzionalità dopo la cancellazione di XDP, correggere il null-deref (dereferenziazione puntatore nullo)
Ricalcolare le funzionalità quando XDP viene disconnesso.
Prima della correzione: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: off [requested on]
Dopo la correzione: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: on
Il fatto che HW-GRO non venga riattivato automaticamente è solo un fastidio minore. Il problema reale è che le funzionalità potrebbero tornare in modo casuale durante un'altra riconfigurazione, purché questa invochi netdev_update_features(). Il driver non gestisce in modo molto robusto la riconfigurazione di due elementi contemporaneamente.
A partire dal commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()"), viene riconfigurata solo la tabella hash RSS se il numero "effettivo" di anelli Rx è cambiato. Se HW-GRO è abilitato, il numero effettivo di anelli è il doppio rispetto a quello visibile all'utente. Quindi, se ci si trova nello stato errato, con l'attivazione di HW-GRO in attesa ("pending") dopo la disconnessione di XDP, e si riducono gli anelli della metà (/ 2), i ring per HW-GRO (che operano al doppio) e il comando ethtool -L che li riduce della metà potrebbero annullarsi a vicenda, facendo sì che:
if (old_rx_rings != bp->hw_resc.resv_rx_rings &&
la condizione in __bnxt_reserve_rings() risulti falsa. La mappa RSS non verrà aggiornata e si verificherà un crash con il seguente messaggio:
BUG: kernel NULL pointer dereference, address: 0000000000000168 RIP: 0010:__bnxt_hwrm_vnic_set_rss+0x13a/0x1a0 bnxt_hwrm_vnic_rss_cfg_p5+0x47/0x180 __bnxt_setup_vnic_p5+0x58/0x110 bnxt_init_nic+0xb72/0xf50 __bnxt_open_nic+0x40d/0xab0 bnxt_open_nic+0x2b/0x60 ethtool_set_channels+0x18c/0x1d0
Mentre si tenta di accedere a un anello già liberato.
Il problema è presente da quando è stato aggiunto il supporto XDP, in realtà; prima del commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()"), tuttavia, non causava problemi gravi.
VulDB is the best source for vulnerability data and more expert information about this specific topic.