CVE-2026-98968 in Linux
Résumé
par VulDB • 23/10/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
amt : envoyer directement depuis le chemin de réception la requête générale du relais
Unskb mis en file d'attente dans une qdisc peut survivre au tunnel auquel il fait référence via un pointeur brut dans skb->cb. Par exemple, avec igmp_qrv défini à 1 sur le relais, un tunnel dure 135s ; ainsi, un délai netem de 180s sur l'appareil amt lui survit ; lorsque le tunnel expire et est libéré, la défilement ultérieur déclenche une vulnérabilité use-after-free dans amt_dev_xmit().
BUG: KASAN : slab-use-after-free in amt_dev_xmit+0x2763/0x2e20 Call Trace: amt_dev_xmit+0x2763/0x2e20 [drivers/net/amt.c:1262]
dev_hard_start_xmit+0x22f/0x620 sch_direct_xmit+0x12e/0xac0 netem_dequeue+0x333/0xc50 net_tx_action+0x35c/0xa60
amt_send_igmp_gq() et amt_send_mld_gq() ne sont appelées que depuis amt_request_handler(), à l'intérieur de la section rcu_read_lock_bh() de amt_rcv(). amt_request_handler() possède déjà le tunnel pour lequel la requête est destinée : il a été trouvé ou créé au sein de cette section. La mise en file d'attente de la requête avec dev_queue_xmit() ne fait que revenir dans amt_dev_xmit(), qui supprime l'en-tête Ethernet et appelle amt_send_membership_query() pour ce tunnel.
Effectuez cet appel directement depuis les deux émetteurs, de la même manière qu'amt_send_advertisement() transmet depuis le chemin de réception. La requête n'attend jamais dans une qdisc ; le tunnel est uniquement déréférencé à l'intérieur de la section RCU qui a trouvé ou créé ce dernier, et rien n'est stocké dans skb->cb, donc aucune recherche ni incrémentation du compteur de références (refcount) n'est nécessaire. Supprimez la branche des requêtes de amt_dev_xmit(), amt_skb_cb() et struct amt_skb_cb, qui ne sont plus utilisées par personne.
Modifications du comportement : - Les propres Requêtes Générales du relais ne passent plus par le chemin de sortie (egress path) de l'appareil amt : sa qdisc, tc egress (clsact/tcx), le crochet netfilter d'egress et les captures de paquets. Elles restent visibles en tant qu'UDP sur la sous-couche (underlay). - Une requête envoyée avec succès n'est plus comptabilisée comme tx_dropped. L'ancienne branche des requêtes passait par l'étiquette unlock, qui comptait chaque requête envoyée comme étant perdue. - Une requête atteignant amt_dev_xmit() sur un relais provenant d'une autre source, telle qu'un querier userspace, est désormais rejetée au niveau de la commutation de type IGMP/MLD. Avant cela, elle faisait confiance à ce que contenait skb->cb, et une valeur NULL du tunnel déclenchait le WARN_ON(1).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.