CVE-2026-52943
net: skbuff : corriger la référence zerocopy manquante dans les helpers pskb_carve
- Publié
- 24 juin 2026
- Mise à jour
- 16 oct. 2026
- Attribution de CNA
- Linux
- Preuve observée
- 17 août 2026
CVSS primaire
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HFaible · 30 prochains jours
- Percentile
- 14,9 %
- Date du modèle
- 17 oct. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
Dans le noyau Linux, la vulnérabilité suivante a été résolue : net: skbuff: correction de la référence zerocopy manquante dans les helpers pskb_carve `pskb_carve_inside_header()` et `pskb_carve_inside_nonlinear()` copient toutes deux l'ancien en-tête `skb_shared_info` dans un nouveau tampon via `memcpy()`, ce qui inclut le pointeur `destructor_arg` (uarg) pour les skbs MSG_ZEROCOPY. Aucune de ces fonctions n'appelle `net_zcopy_get()` pour le nouveau shinfo, créant ainsi un détenteur non comptabilisé : chaque `skb_shared_info` avec `destructor_arg` défini appellera `skb_zcopy_clear()` une fois lors de sa libération, mais le `net_zcopy_get()` correspondant n'a jamais été appelé pour la nouvelle copie. Des appels répétés font chuter `uarg->refcnt` à zéro prématurément, libérant `ubuf_info_msgzc` alors que les skbs TX détiennent toujours des pointeurs `destructor_arg` actifs. KASAN signale une use-after-free sur un `ubuf_info_msgzc` libéré : BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 Le skb consommant l'accès tardif référençait toujours le même uarg via `shinfo->destructor_arg` copié par `pskb_carve_inside_nonlinear()` sans incrément du compteur de références. Il a été vérifié que cette vulnérabilité est exploitable de manière fiable : une preuve de concept fonctionnelle permet d'obtenir une élévation complète des privilèges root à partir d'un utilisateur local non privilégié sur une configuration de noyau par défaut. Le correctif suit le modèle de `pskb_expand_head()` qui possède la même structure memcpy/clonée. Pour `pskb_carve_inside_header()`, `net_zcopy_get()` est placé après la réussite de `skb_orphan_frags()`, de sorte que le chemin d'erreur d'orphelin n'a pas besoin de nettoyage. Pour `pskb_carve_inside_nonlinear()`, `net_zcopy_get()` est placé après tous les points d'échec et juste avant `skb_release_data()`, de sorte qu'aucun chemin d'erreur n'a besoin de nettoyage — ce qui correspond plus étroitement à `pskb_expand_head()` et évite la nécessité d'un `net_zcopy_put()` d'équilibrage.
Sources
Ceci est un code PoC d'élévation de privilèges locale du noyau Linux pour CVE-2026-52943, une use-after-free dans skbuff.c, mon premier 0day trouvé par moi dans le noyau Linux
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.