Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
CVE-2025-40271 — CVE-2025-40271 Modifed By MadEploits | Kitploit
Ferramentas/GitHubGitHub/madexploits/cve-2025-40271
Privilege EscalationVulnerability AnalysisExploitationPapers & ResearchLearning & EducationBinary Exploitation
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 Modifed By MadEploits

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

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

CVE-2025-40271 — proc_readdir_de() rb-tree UAF LPE

Prova de conceito para uma vulnerabilidade de escalada de privilégio local no sistema de arquivos proc do kernel Linux. O bug é um uso-após-liberação em proc_readdir_de() causado por rb_erase() sem RB_CLEAR_NODE(), deixando links obsoletos da árvore rubro-negra que podem ser explorados durante a enumeração de diretórios.

Autor: MadExploits

Pesquisa original da vulnerabilidade e PoC em C por Aviral Srivastava (N-DAY RESEARCH). Este repositório inclui uma versão em shell (exploit.sh) para ambientes onde a compilação não é prática.


Visão Geral

CampoDetalhe
CVECVE-2025-40271
Componentefs/proc — proc_readdir_de() / remove_proc_entry()
TipoUso-após-liberação (links obsoletos de árvore rubro-negra)
ImpactoEscalada de privilégio local (LPE)
Arquiteturax86_64
AfetadosKernels Linux até 6.18-rc5

Causa raiz

Quando uma entrada de diretório proc é removida, rb_erase() é chamado no nó rb da entrada sem RB_CLEAR_NODE(). Nós liberados podem permanecer acessíveis por meio de links obsoletos da árvore. Se getdents64() competir com a remoção de interface em /proc/self/net/dev_snmp6/, o kernel pode ler memória liberada — frequentemente reaproveitada por objetos msg_msg pulverizados — e retornar valores anômalos de d_ino que vazam ponteiros do heap do kernel.


Kernels afetados e corrigidos

O PoC verifica a versão do kernel em execução e encerra em builds corrigidos:

Ramo

Conteúdo do repositório

ArquivoDescrição
exploit.cPoC completo em C — gerenciamento de veth via netlink, disputa com pthreads, pulverização de msg_msg
exploit.shVersão em shell sem compilação — unshare, ip, Python 3 embutido para syscalls/disputa

Ambas as implementações seguem o mesmo fluxo de exploração:

  1. Entrar em namespace de usuário + rede (obter CAP_NET_ADMIN no net ns)
  2. Criar pares veth → preencher /proc/self/net/dev_snmp6/
  3. Disputar getdents64() contra remoção rápida de veth + pulverização do heap
  4. Detectar UAF por valores de d_ino que se assemelham a ponteiros do kernel
  5. Tentar escalada (LPE completo requer offsets específicos de KASLR do kernel)

Requisitos

Comuns

  • Linux x86_64
  • Namespaces de usuário não privilegiados habilitados:
    root@kitploit:~
    cat /proc/sys/kernel/unprivileged_userns_clone
    # must be 1
    
  • Usuário não root (PoC encerra se já for root)

exploit.c

  • gcc com pthreads
  • Cabeçalhos do Linux (linux/netlink.h, etc.)
root@kitploit:~
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip (iproute2)
  • unshare (util-linux com suporte a --map-root-user)

Nenhum compilador necessário.


Uso

Versão shell (recomendada para testes rápidos)

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

Versão C

root@kitploit:~
gcc -o exploit exploit.c -lpthread
./exploit

Saída esperada

Kernel vulnerável — UAF acionado (sucesso parcial):

root@kitploit:~
[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

Kernel corrigido:

root@kitploit:~
[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

Notas sobre exploração

  • Vazamento de heap: Quando a disputa é vencida, d_ino contém um valor que corresponde ao padrão de ponteiro do kernel x86_64 (0xffff000000000000), tipicamente do cabeçalho msg_msg m_list sobrepondo dados de proc_dir_entry liberados.
  • LPE completo: Sobrescrever modprobe_path requer o deslocamento entre o endereço de heap vazado e a base do texto do kernel — isso é específico da build (KASLR). O PoC demonstra o UAF e o vazamento; uma cadeia completa precisa de offsets para a imagem do kernel alvo.
  • Confiabilidade: O sucesso depende do escalonador. O PoC tenta até 30 vezes por padrão.

Mitigação

  • Atualize para um kernel corrigido (veja a tabela acima).
  • Se namespaces de usuário não forem necessários, desabilite a criação não privilegiada:
    root@kitploit:~
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • Aplique as atualizações de segurança do fornecedor para CVE-2025-40271.

Aviso legal

Este projeto é fornecido apenas para pesquisa de segurança autorizada, educação e testes defensivos.

  • Execute apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito.
  • O uso não autorizado contra sistemas de terceiros pode violar leis aplicáveis.
  • Os autores e colaboradores não são responsáveis pelo uso indevido deste código.

Créditos

FunçãoNome
Autor do repositórioMadExploits
Pesquisa original do CVE e PoC em CAviral Srivastava — N-DAY RESEARCH

Licença

Use por sua conta e risco. Nenhuma garantia é fornecida.

Baixar ferramenta
Corrigido em
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+Corrigido