CVE-2026-52943
net: skbuff: corrige a referência zerocopy ausente nos helpers pskb_carve
- Publicado
- 24 de jun. de 2026
- Atualizado
- 8 de set. de 2026
- Atribuindo CNA
- Linux
- Evidência observada
- 17 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBaixo · próximos 30 dias
- Percentil
- 15,1%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
No kernel Linux, a seguinte vulnerabilidade foi resolvida: net: skbuff: corrige referência zerocopy ausente nos helpers pskb_carve pskb_carve_inside_header() e pskb_carve_inside_nonlinear() ambas copiam o cabeçalho antigo skb_shared_info para um novo buffer via memcpy(), que inclui o ponteiro destructor_arg (uarg) para skbs MSG_ZEROCOPY. Nenhuma das funções chama net_zcopy_get() para o novo shinfo, criando um detentor não contabilizado: todo skb_shared_info com destructor_arg definido chamará skb_zcopy_clear() uma vez quando for liberado, mas o net_zcopy_get() correspondente nunca foi chamado para a nova cópia. Chamadas repetidas levam uarg->refcnt a zero prematuramente, liberando ubuf_info_msgzc enquanto skbs TX ainda mantêm ponteiros destructor_arg ativos. KASAN relata use-after-free em um ubuf_info_msgzc liberado: 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 O skb que consumiu o acesso tardio ainda referenciava o mesmo uarg via shinfo->destructor_arg copiado por pskb_carve_inside_nonlinear() sem um incremento de refcount. Isso foi verificado como confiavelmente explorável: uma prova de conceito funcional alcança escalonamento total de privilégios para root a partir de um usuário local sem privilégios em uma configuração padrão do kernel. A correção segue o padrão de pskb_expand_head() que possui a mesma estrutura memcpy/clonada. Para pskb_carve_inside_header(), net_zcopy_get() é colocado após skb_orphan_frags() ter sucesso, então o caminho de erro de orphan não precisa de limpeza. Para pskb_carve_inside_nonlinear(), net_zcopy_get() é colocado após todos os pontos de falha e logo antes de skb_release_data(), então nenhum caminho de erro precisa de limpeza — correspondendo mais de perto a pskb_expand_head() e evitando a necessidade de um net_zcopy_put() de balanceamento.
Fontes
1Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.