CVE-2026-98503 in Linuxinformation

Résumé

par VulDB • 19/10/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

packet : utiliser l'achèvement ubuf_info pour les paquets de TX_RING

tpacket_snd envoie des skbs avec des fragments pointant vers les emplacements (slots) du ring. Les emplacements sont libérés lorsque skb->destructor est appelé.

Un appel à skb_orphan appelle skb->destructor avant la libération du skb. Cela peut entraîner la réutilisation de l'emplacement alors qu'il est encore lié au skb.

Passer à l'achèvement standard zerocopy (ubuf_info) afin que l'emplacement ne soit libéré une fois que toutes les références vers la charge utile sont supprimées ou copiées. Rétablir skb->destructor sur sock_wfree standard.

La fonction de rappel d'achèvement ubuf_info peut être appelée avec un skb NULL, mais uniquement depuis net_zcopy_put et l'API associée, utilisée par les implémentations zerocopy qui conservent leur propre référence sur uarg, comme MSG_ZEROCOPY. Cet uarg n'est jamais achevé que depuis skb_zcopy_clear, donc le skb est toujours défini.

Pour empêcher l'espace utilisateur d'utiliser des alias pour l'état en cours de transmission sur les emplacements partagés du ring, allouer tpacket_uarg par paquet plutôt que par emplacement. Cela ajoute une petite allocation au chemin de transmission. Utiliser kmalloc standard pour permettre le backporting vers les noyaux stables.

uarg contient une référence sk_wmem_alloc, et non une référence sk_refcnt. packet_free_tx_ring attend sk_wmem_alloc avant de libérer les pages du ring. Allouer toujours vec->deferred pour tx_ring afin que les rings basés sur des pages attendent également sk_wmem_alloc lorsque skb_copy_ubufs supprime les références aux pages avant d'appeler tpacket_ubuf_complete.

Supprimer le test pg_vec.tx_ring effectué par tpacket_destruct_skb avant l'accès à l'emplacement. La référence sk_wmem_alloc garantit désormais que l'emplacement est valide. Le test n'est pas non plus suffisant en soi, car il lit pg_vec sans pg_vec_lock, ce qui peut créer une condition de course avec packet_set_ring.

En conséquence, un emplacement est libéré lorsque sa charge utile est copiée, ce qui peut se produire avant la transmission (par exemple, dans skb_orphan_frags_rx). Si elle est copiée avant l'appel à skb_tx_timestamp(), aucun horodatage d'emplacement n'est enregistré, similaire au cas où skb_orphan() était appelé tôt dans le chemin de données avant ce correctif.

Révoquer l'infrastructure précédente désormais inutilisée skb_zcopy_.._nouarg.

Dépend du commit 992cc9f94ca9 ("net/packet : reporter la libération vmalloc TX_RING jusqu'à ce que les skbs soient terminés").

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Linux

Réserver

25/09/2026

Divulgation

18/10/2026

Modérer

accepté

Entrée

VDB-422154

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!