Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

CVE-2026-52943

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416 Utilización después de liberación
Fecha de publicación:
24/06/2026
Última modificación:
15/07/2026

Descripción

*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net: skbuff: fix missing zerocopy reference in pskb_carve helpers<br /> <br /> pskb_carve_inside_header() and pskb_carve_inside_nonlinear() both copy<br /> the old skb_shared_info header into a new buffer via memcpy(), which<br /> includes the destructor_arg pointer (uarg) for MSG_ZEROCOPY skbs.<br /> Neither function calls net_zcopy_get() for the new shinfo, creating an<br /> unaccounted holder: every skb_shared_info with destructor_arg set will<br /> call skb_zcopy_clear() once when freed, but the corresponding<br /> net_zcopy_get() was never called for the new copy. Repeated calls<br /> drive uarg-&gt;refcnt to zero prematurely, freeing ubuf_info_msgzc while<br /> TX skbs still hold live destructor_arg pointers.<br /> <br /> KASAN reports use-after-free on a freed ubuf_info_msgzc:<br /> <br /> BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810<br /> Read of size 8 at addr ffff88801574d3e8 by task poc/220<br /> <br /> Call Trace:<br /> skb_release_data+0x77b/0x810<br /> kfree_skb_list_reason+0x13e/0x610<br /> skb_release_data+0x4cd/0x810<br /> sk_skb_reason_drop+0xf3/0x340<br /> skb_queue_purge_reason+0x282/0x440<br /> rds_tcp_inc_free+0x1e/0x30<br /> rds_recvmsg+0x354/0x1780<br /> __sys_recvmsg+0xdf/0x180<br /> <br /> Allocated by task 219:<br /> msg_zerocopy_realloc+0x157/0x7b0<br /> tcp_sendmsg_locked+0x2892/0x3ba0<br /> <br /> Freed by task 219:<br /> ip_recv_error+0x74a/0xb10<br /> tcp_recvmsg+0x475/0x530<br /> <br /> The skb consuming the late access still referenced the same uarg via<br /> shinfo-&gt;destructor_arg copied by pskb_carve_inside_nonlinear() without<br /> a refcount bump. This has been verified to be reliably exploitable: a<br /> working proof-of-concept achieves full root privilege escalation from<br /> an unprivileged local user on a default kernel configuration.<br /> <br /> The fix follows the pattern of pskb_expand_head() which has the same<br /> memcpy/cloned structure. For pskb_carve_inside_header(), net_zcopy_get()<br /> is placed after skb_orphan_frags() succeeds, so the orphan error path<br /> needs no cleanup. For pskb_carve_inside_nonlinear(), net_zcopy_get() is<br /> placed after all failure points and just before skb_release_data(), so<br /> no error path needs cleanup at all -- matching pskb_expand_head() more<br /> closely and avoiding the need for a balancing net_zcopy_put().

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.7 (incluyendo) 5.10.259 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.210 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.176 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.143 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.12.93 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 (incluyendo) 6.18.35 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 (incluyendo) 7.0.12 (excluyendo)
cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:*