Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Dirty-Frag-CVE-2026-43284 — Um relatório sobre Dirty Frag, que é uma cadeia de vulnerabilidades de Escalação de Privilégio Local (LPE) do Linux que permite que um usuário não privilegiado obtenha acesso root. | Kitploit
Ferramentas/GitHubGitHub/kuniyal08/dirty-frag-cve-2026-43284
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoAnálise ForenseDetecção de IntrusãoAprendizado e EducaçãoResposta a IncidentesLabs e Prática

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
kuniyal08/dirty-frag-cve-2026-43284

Dirty-Frag-CVE-2026-43284

Um relatório sobre Dirty Frag, que é uma cadeia de vulnerabilidades de Escalação de Privilégio Local (LPE) do Linux que permite que um usuário não privilegiado obtenha acesso root.

Ver Repositório
117há 1 mêsAinda não revisado

Dirty Frag (CVE-2026-43284 e CVE-2026-43500)

Laboratório de Reprodução e Detecção de Exploit para uma cadeia de escalonamento local de privilégios no kernel Linux.

Status: VERIFICADO. Concluí a reprodução, a verificação sem arquivos e a detecção no nível de chamadas de sistema no laboratório (kernel 6.18.9+kali-amd64). Este documento é um registro de laboratório. Cada afirmação abaixo foi observada durante a execução da reprodução. As capturas de tela e artefatos são capturas reais da VM.

Índice

  • Visão Geral
  • Por Que Isso Importa
  • Detalhes Técnicos
  • Ambiente de Laboratório
  • Estrutura do Repositório
  • Checklist de Progresso
  • Procedimento de Reprodução
  • Engenharia de Detecção
  • Resposta a Incidentes
  • Mitigação
  • Solução de Problemas
  • Referências e Créditos
  • Aspectos Legais e Éticos

Visão Geral

O Dirty Frag combina dois bugs lógicos determinísticos no kernel Linux. Esses bugs permitem que um usuário local sem privilégios sobrescreva o cache de páginas de arquivos somente leitura (por exemplo, /usr/bin/su) e obtenha um shell root:

VarianteCVESinkCaminho de gatilhoRequer userns sem privilégios
Gravação no Page-Cache via xfrm‑ESPCVE‑2026‑43284crypto_authenc_esn_decrypt() em esp_input()socket(AF_INET) com UDP‑encap, depois xfrm_input()Sim (CAP_NET_ADMIN)
Gravação no Page-Cache via RxRPCCVE‑2026‑43500rxkad_verify_packet_1() (pcbc(fcrypt))socket(AF_RXRPC)Não

Ambas as variantes usam o mesmo padrão de raiz do Dirty Pipe e do Copy Fail. A chamada de sistema splice(2) coloca uma referência a uma página do page-cache de um arquivo no slot frag de um sk_buff do lado do remetente. O atacante só pode ler este arquivo. O código do kernel no lado do receptor então executa um STORE criptográfico in-place sobre esse frag. Isso altera o page-cache na RAM. Nenhuma gravação em disco ocorre, portanto o monitoramento de integridade de arquivos (AIDE, Tripwire) não consegue detectar. O ataque é determinístico. Não possui janela de corrida nem pânico do kernel em caso de falha.

  • Faixa afetada (de acordo com o aviso upstream):
    • Variante ESP: de cac2661c53f3 (2017‑01) a f4c50a4034e6 (corrigido em 2026‑05‑05)
    • Variante RxRPC: de 2dc334f1a63a (2023‑06) a aa54b1d27fe0 (corrigido em 2026‑05‑10)
  • PoC público: V4bel/dirtyfrag (divulgado em 2026‑05‑07)
  • Avisos: CERT VU#980487, Red Hat Bugzilla 2467771
  • Severidade (CVSS 3.1, conforme Canonical): CVE-2026-43284 = 8.8 (Alta), CVE-2026-43500 = 7.8 (Alta)

Por Que Isso Importa

O Dirty Frag é um LPE sem arquivos. Ele corrompe o page-cache na memória, não o arquivo no disco. O monitoramento tradicional de integridade de arquivos não consegue detectá-lo. A detecção deve ocorrer na camada de chamadas de sistema. A cadeia usa estes primitivos de chamadas de sistema: socket(AF_ALG)/socket(AF_RXRPC), splice e unshare(CLONE_NEWUSER|CLONE_NEWNET). O caminho ESP também cria sockets UDP AF_INET e netlink. Esta camada é o foco da engenharia de detecção neste repositório.

Detalhes Técnicos

Ambas as variantes usam o mesmo sink: criptografia in-place que ARMAZENA bytes em uma página do page-cache que o atacante coloca com splice(2).

Variante ESP (CVE-2026-43284)

  1. O atacante abre um par de sockets UDP em loopback e configura o lado receptor com UDP_ENCAP_ESPINUDP.
  2. Ele registra um cabeçalho ESP de fio forjado (SPI, seq_no_lo e IV) em um pipe com vmsplice e, em seguida, 16 bytes de /usr/bin/su no deslocamento do arquivo alvo com splice.
  3. Um único splice empurra o pipe para o socket de envio. splice_to_socket() define MSG_SPLICE_PAGES. Isso coloca a página do page-cache de /usr/bin/su diretamente em skb->frags[0].
  4. No recebimento, esta sequência é executada: xfrm4_udp_encap_rcv, depois xfrm_input, depois esp_input(). O ramo vulnerável skip_cow (!skb_cloned() && !skb_has_frag_list()) ignora skb_cow_data(). Ele executa descriptografia AEAD in-place com a página do page-cache como origem e destino.
  5. crypto_authenc_esn_decrypt() emite um STORE dos 32 bits de ordem superior do ESN. Esse valor é replay_esn->seq_hi. O atacante escolhe esse valor no registro da SA com o atributo netlink XFRMA_REPLAY_ESN_VAL.

O atacante controla tanto a localização (deslocamento do splice) quanto o valor (4 bytes). A verificação de autenticação é executada após o store, portanto a camada criptográfica nunca sinaliza a gravação. Esta variante requer CAP_NET_ADMIN e usa unshare(CLONE_NEWUSER|CLONE_NEWNET).

Variante RxRPC (CVE-2026-43500)

rxkad_verify_packet_1() executa uma descriptografia pcbc(fcrypt) de bloco único diretamente no frag do skb fixado por splice. Ele não copia os dados primeiro. O atacante escolhe uma chave de sessão (add_key("rxrpc", …)) para que decrypt(ciphertext) seja igual a desired_plaintext. Isso produz um STORE de 8 bytes. Esta variante tem como alvo /etc/passwd. Ela não requer namespace de usuário. Requer o módulo rxrpc.ko (carregado por padrão no Ubuntu).

Resultado do exploit

O PoC público tem como alvo /usr/bin/su. Ele grava 48 stores ESP de 4 bytes cada (192 bytes no deslocamento 0 do arquivo). Ele substitui os primeiros bytes do page-cache por um ELF estático de shell root. O ponto de entrada do ELF executa setgid(0); setuid(0); setgroups(0,NULL); execve("/bin/sh", …). Um único execve("/usr/bin/su") então produz um shell root.

A correção upstream

O patch ESP (mainline f4c50a4034e6) marca os frags de página que chegam por splice() com o sinalizador SKBFL_SHARED_FRAG. O ramo skip_cow em esp_input() agora também verifica esse sinalizador. Skbs com frags compartilhados passam por skb_cow_data() antes da descriptografia AEAD in-place.

O patch RxRPC (mainline aa54b1d27fe0) adiciona uma verificação de skb->data_len ao lado da verificação existente de skb_cloned(). O kernel copia um skb não linear com dados paginados antes da descriptografia pcbc(fcrypt) in-place.

Ambiente de Laboratório

ComponenteDetalhes
HipervisorVirtualBox
VM alvoKali Linux 2026.1 (snapshot restaurado para um estado vulnerável)
Kernel6.18.9+kali‑amd64 (mais antigo que as correções de maio de 2026)
PoC do exploitV4bel/dirtyfrag (arquivo C único)
Detecçãoauditd (regras em detection/dirtyfrag.rules)

Captura de tela da configuração do laboratório VirtualBox:

Configuração do laboratório VirtualBox

Estrutura do Repositório

.
├── README.md                        # este registro de laboratório
├── detection/
│   ├── dirtyfrag.rules              # regras de detecção no nível de chamadas de sistema do auditd
│   ├── ausearch_dirtyfrag_observed.txt  # saída real de detecção do exploit
│   ├── sigma/
│   │   └── dirty_frag_exploit.yml   # regra Sigma para detecção em SIEM
│   └── yara/
│       └── dirty_frag_exploit.yar   # regra YARA para código PoC em disco/memória
├── mitigation/
│   └── dirtyfrag_mitigation.sh      # bloqueio de módulos + limpeza do page cache
├── poc/
│   └── check_vulnerable.py          # verificador pré-voo não destrutivo
├── reports/
│   └── incident-dirtyfrag.md        # playbook de resposta a incidentes
└── screenshots/                     # capturas reais da VM do laboratório
Baixar ferramenta