CVE-2026-52943
net: skbuff : corriger la référence zerocopy manquante dans les helpers pskb_carve
- Publié
- 24 juin 2026
- Mise à jour
- 8 sept. 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
- 15,1 %
- Date du modèle
- 21 sept. 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.
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.