CVE-2026-43503
net: skbuff: propaga o marcador shared-frag através dos helpers de transferência de frag
- Publicado
- 23 de mai. de 2026
- Atualizado
- 24 de ago. de 2026
- Atribuindo CNA
- Linux
- Evidência observada
- 8 de ago. de 2026
net: skbuff: propaga o marcador shared-frag através dos helpers de transferência de frag
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HBaixo · próximos 30 dias
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.
No kernel Linux, a seguinte vulnerabilidade foi resolvida: net: skbuff: propaga o marcador de frag compartilhada pelos auxiliares de transferência de frag. Dois auxiliares de transferência de frag (`__pskb_copy_fclone()` e `skb_shift()`) não propagam o bit `SKBFL_SHARED_FRAG` em `skb_shinfo()->flags` ao mover frags da origem para o destino. `__pskb_copy_fclone()` adia o restante dos metadados de shinfo para `skb_copy_header()` após copiar os descritores de frag, mas esse auxiliar apenas transfere `gso_{size,segs, type}` e nunca toca em `skb_shinfo()->flags`; `skb_shift()` move os descritores de frag diretamente e deixa os flags intactos. Como resultado, o skb de destino mantém uma referência às mesmas páginas de propriedade externa ou suportadas pelo page cache enquanto informa `skb_has_shared_frag()` como falso. Essa inconsistência é prejudicial em qualquer escritor in-place que use `skb_has_shared_frag()` para decidir se páginas compartilhadas devem ser desviadas por `skb_cow_data()`. A entrada ESP é um desses escritores (`esp4.c`, `esp6.c`), e uma única regra nft `'dup to <local>'` — ou qualquer outro chamador de `nf_dup_ipv4()` / `xt_TEE` — é suficiente para fazer um skb passado por `pskb_copy()` chegar a `esp_input()` com o marcador removido, permitindo que um usuário não privilegiado escreva no page cache de um arquivo somente leitura de propriedade do root por meio de escritas indevidas do authencesn-ESN. Defina `SKBFL_SHARED_FRAG` no destino sempre que os descritores de frag forem efetivamente movidos da origem. `skb_copy()` e `skb_copy_expand()` também compartilham `skb_copy_header()`, mas linearizam todos os dados paginados em armazenamento de head recém-alocado e terminam com `nr_frags == 0`, portanto `skb_has_shared_frag()` já retorna falso por si só; elas não precisam de alteração. A mesma omissão existe em `skb_gro_receive()` e `skb_gro_receive_list()`. O primeiro move os descritores de frag do skb de entrada para o último sub-skb do acumulador por dois caminhos (um loop direto de movimentação de frag e o caminho `head_frag + memcpy`); o último encadeia o skb de entrada inteiro na `frag_list` de `p`. A jusante, `skb_segment()` lê apenas `skb_shinfo(p)->flags`, e `skb_segment_list()` reutiliza o shinfo de cada sub-skb como o nskb — tanto `p` quanto `lp` precisam carregar o marcador. A mesma omissão também existe em `tcp_clone_payload()`, que constrói um skb de sonda MTU movendo descritores de frag de skbs em `sk_write_queue` para um nskb recém-alocado. Esse auxiliar se enquadra na mesma família e justifica a mesma correção por consistência; atualmente não se conhece nenhum escritor in-place do lado TX do TCP que alcance uma página de usuário por meio dessa lacuna, mas um futuro consumidor que dependa do marcador regrediria silenciosamente. A mesma omissão existe em `skb_segment()`: a mesclagem de flags por iteração considera apenas o flag de `head_skb`, e o switch interno que religa `frag_skb` a `list_skb` quando os frags de `head_skb` se esgotam não incorpora o flag do novo `frag_skb` em nskb. Incorpore o flag de `frag_skb` em ambos os pontos para que segmentos que obtenham frags de membros da `frag_list` carreguem o marcador.
CVE-2026-43503
Linux kernel local privilege escalation PoC para CVE-2026-43503 (DirtyClone). Explora a perda de flag de um sk_buff clonado para escrever na memória page-cache, injetando uma conta root sem modificar o disco.
CVE-2026-46331 e CVE-2026-43503
Prova de conceito em Python para CVE-2026-43503 escalonamento de privilégio local no kernel Linux através de corrupção do page-cache usando buffers de socket clonados. Sobrescreve /etc/passwd para obter um shell root.
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.
Prova de conceito em Python para DirtyClone, uma escalada de privilégio local no kernel Linux que explora corrupção de page-cache via buffers de socket clonados para sobrescrever /etc/passwd e gerar um shell root.
Prova de conceito de ferramenta de escalonamento local de privilégios que explora uma vulnerabilidade do kernel XFRM/ESP (CVE-2026-43503) por meio de payloads AES-CBC criptografados e elaborados, entregues pela pilha de rede para corrigir o cache de páginas do binário SUID.
Código de exploração de prova de conceito para a vulnerabilidade CVE-2026-43503.
Exploit de prova de conceito para CVE-2026-43503, demonstrando a vulnerabilidade e fornecendo um exploit funcional para testes e validação de segurança.