CVE-2025-21682 in Linux
Résumé
par VulDB • 22/05/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
eth: bnxt: recalculer toujours les fonctionnalités après la suppression de XDP, correction d'une déréférencement null
Recalculer les fonctionnalités lorsque XDP est détaché.
Avant : # 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]
Après : # 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
Le fait que HW-GRO ne soit pas réactivé automatiquement n'est qu'une légère gêne. Le véritable problème est que les fonctionnalités réapparaissent de manière aléatoire lors d'une autre reconfiguration qui invoque netdev_update_features(). Le pilote ne gère pas de manière très robuste la reconfiguration de deux éléments simultanément.
À partir du commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()"), nous ne reconfigurons la table de hachage RSS que si le nombre « effectif » de rings Rx a changé. Si HW-GRO est activé, le nombre « effectif » de rings est le double de ce que l'utilisateur voit. Ainsi, si nous sommes dans un état dégradé, avec la réactivation de HW-GRO « en attente » après la désactivation de XDP, et que nous réduisons le nombre de rings par / 2 - les rings HW-GRO faisant x2 et le ethtool -L faisant / 2 peuvent s'annuler mutuellement, et la condition :
if (old_rx_rings != bp->hw_resc.resv_rx_rings &&
dans __bnxt_reserve_rings() sera fausse. La carte RSS ne sera pas mise à jour, et nous planterons avec :
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
Lorsque nous essayons d'accéder à un ring libéré.
Le problème est présent depuis l'ajout du support XDP, en réalité, mais avant le commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()"), il ne causait pas de problèmes majeurs.
Once again VulDB remains the best source for vulnerability data.