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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script — Script de detecção para CVE-2026-31431 (Copy Fail) que verifica a versão do kernel, presença de patch, configurações do kernel, disponibilidade de socket AF_ALG, binários setuid e mitigações para determinar o status de vulnerabilidade em sistemas Linux. | Kitploit
Ferramentas/GitHubGitHub/liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script
Segurança de Infraestrutura em NuvemScanners de VulnerabilidadesSegurança de ContêineresAnálise de VulnerabilidadesAuditoria de ConfiguraçãoDevSecOpsDetecção de IntrusãoResposta a Incidentes
GitHubliamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script

CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script

Script de detecção para CVE-2026-31431 (Copy Fail) que verifica a versão do kernel, presença de patch, configurações do kernel, disponibilidade de socket AF_ALG, binários setuid e mitigações para determinar o status de vulnerabilidade em sistemas Linux.

Ver Repositório
25232há 5 mesesRevisado pelo Kitploit

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-2026-31431 — Copy Fail — Script de Detecção de Vulnerabilidade

Apenas detecção. Um PoC funcional já existe em copy.fail/#exploit. Este script é para administradores de sistemas e equipes de segurança determinarem onde estão vulneráveis — ou ainda vulneráveis após a aplicação de patches.


Sobre o que é isso?

Em 29 de abril de 2026, uma vulnerabilidade chamada Copy Fail (CVE-2026-31431) foi divulgada publicamente pela Xint Code Research Team. É um bug lógico que está silenciosamente presente no kernel Linux desde aproximadamente 2017 — quase uma década — e permite que qualquer usuário local sem privilégios obtenha root.

Não é "obter root sob condições específicas com um pouco de sorte e vento a favor." Apenas... obter root. De forma confiável. Em praticamente todas as principais distribuições Linux.

Afeta Ubuntu, Amazon Linux, RHEL, SUSE e qualquer outra coisa que execute um kernel mainstream dos últimos ~8 anos. Mesmo script, sem recompilação, sem ajustes por distribuição.

Sim, é tão grave quanto parece.

A versão resumida de como funciona

O kernel Linux possui um subsistema criptográfico acessível a usuários sem privilégios via sockets AF_ALG. Existe um mecanismo chamado splice() que pode alimentar dados de arquivos diretamente nesse subsistema sem copiá-los — o que significa que a cópia em cache na memória do kernel de um arquivo (o "page cache") acaba dentro de uma operação criptográfica.

Um algoritmo específico — authencesn, usado para Números de Sequência Estendidos do IPsec — tem uma peculiaridade: ele usa o buffer de saída como espaço de rascunho e escreve 4 bytes ligeiramente além do que deveria. Normalmente inofensivo. Mas quando páginas do page cache de um binário setuid como /usr/bin/su acabam encadeadas nesse buffer de saída (graças a uma "otimização" de 2017 em algif_aead.c), esses 4 bytes caem diretamente na cópia em cache do binário no kernel.

A operação falha com um erro. O kernel nunca marca essa página como suja. O arquivo no disco permanece intacto. Ferramentas de integridade de arquivos que verificam checksums no disco não veem nada errado.

Mas o page cache é o que é executado. E su é setuid root.

O artigo técnico completo está em xint.io e vale genuinamente a pena ler.


O que os scripts verificam

Script Python — 13 verificações

Sete da versão original, mais seis novas verificações adicionadas para fechar lacunas de detecção:

#VerificaçãoO que procura
1Versão do kernelEste kernel está na faixa afetada (4.10–6.14)?
2Presença do patchO commit da correção está realmente no kernel em execução?
3Módulo algif_aeadO módulo vulnerável está carregado ou pode ser carregado?
4CONFIG_CRYPTO_AUTHENC (novo)CONFIG_CRYPTO_AUTHENC está embutido (=y) ou como módulo (=m)? Esta única opção compila tanto authenc quanto authencesn. Embutido significa que a mitigação de blacklist do modprobe não faz nada.
5CONFIG_CRYPTO_USER_API_AEAD (novo)A interface de usuário AEAD do AF_ALG está sequer compilada? Se não, todo o caminho do exploit está fechado em tempo de compilação.
6Socket AF_ALGUm usuário sem privilégios pode abrir um agora?
7Python os.spliceO caminho do exploit em Python puro está disponível?
8Binários setuidLista estendida de alvos setuid-root legíveis presentes no sistema.
9MitigaçõesAppArmor, SELinux, seccomp — o que está em vigor?
10Namespaces de usuário (novo)Namespaces de usuário sem privilégios estão habilitados? (Não bloqueia o Copy Fail diretamente, mas afeta a superfície mais ampla de escalonamento local de privilégios.)
11Transparent hugepages (novo)Status do THP — pode afetar o alinhamento do page cache e a confiabilidade do exploit.
12Detecção de ambiente (novo)Contexto Docker/container/VM — containers compartilham o kernel do host; o host é o que precisa de patch.
13Aviso de usuário root (novo)Avisa se estiver executando como root, pois várias verificações dão falsos positivos para root independentemente das restrições de não privilegiados.

Script Shell — 10 verificações

O script Bash cobre a mesma lógica central de detecção, mas omite três itens específicos do Python:

#VerificaçãoNotas
1Versão do kernel
2Presença do patch
3Módulo algif_aead
4Socket AF_ALGUsa Python como auxiliar se disponível; recorre à inferência da configuração do kernel
5Binários setuidLista estendida, igual à versão Python
6MitigaçõesAppArmor, SELinux, seccomp
7CONFIG_CRYPTO_AUTHENC
8Namespaces de usuário
9Transparent hugepages
10Detecção de ambiente

Não presente no script shell (em comparação ao Python):

Verificação ausenteMotivo
CONFIG_CRYPTO_USER_API_AEADAinda não implementado — planejado
Disponibilidade do Python os.spliceNão se aplica a um script shell
Aviso de usuário rootAinda não implementado — planejado

Nenhum dos scripts corrige ou explora nada. Eles dizem a verdade sobre o seu sistema para que você possa agir.


Requisitos

  • Python 3.6+
  • Sem dependências externas — apenas stdlib
  • Sem necessidade de root (intencionalmente — verificamos o que um atacante sem privilégios pode ver)
  • Recomendado: executar como usuário não root — algumas verificações (socket AF_ALG, stat de setuid) sempre têm sucesso para root e reportarão falsos positivos

Uso

# Clone ou baixe o script e então:
python3 cve-2026-31431-detect.py

É isso. Relatório codificado por cores com um resumo no final.

Códigos de saída

O script sai com código não zero em achados vulneráveis, tornando-o adequado para uso em pipelines:

CódigoSignificado
0Nenhuma condição vulnerável encontrada
1Uma ou mais condições vulneráveis encontradas
# Exemplo: falhar uma etapa de CI se o host estiver vulnerável
python3 cve-2026-31431-detect.py
rc=$?
if [ $rc -eq 1 ]; then
  echo "VULNERÁVEL — bloquear deploy"
elif [ $rc -ne 0 ]; then
  echo "ERRO — script falhou ao concluir (exit $rc)"
fi

Exemplo de saída

CVE-2026-31431 'Copy Fail' — Detecção de Vulnerabilidade
Corrupção do page cache do authencesn / escalonamento local de privilégios
Executando como uid=1001, euid=1001

=== Versão do Kernel ===
  [VULNERÁVEL] Versão do kernel
          Motivo : Kernel está na faixa vulnerável (4.10 – 6.14)
          Detalhe : Release: 6.12.0-124.45.1.el10_1 — status do patch deve ser confirmado

=== CONFIG_CRYPTO_AUTHENC (Configuração do Kernel) ===
  [VULNERÁVEL] CONFIG_CRYPTO_AUTHENC
          Motivo : Compilado como módulo (=m): carrega automaticamente no bind() do AF_ALG; blacklist do modprobe é a mitigação correta

=== CONFIG_CRYPTO_USER_API_AEAD (Configuração do Kernel) ===
  [VULNERÁVEL] CONFIG_CRYPTO_USER_API_AEAD
          Motivo : A interface AEAD do AF_ALG é um módulo carregável — usuários sem privilégios podem acessar o subsistema criptográfico via sockets AF_ALG

...

  O SISTEMA PROVAVELMENTE ESTÁ VULNERÁVEL AO CVE-2026-31431

  Ações recomendadas:
    1. Aplique a atualização de kernel da sua distribuição para o CVE-2026-31431
    2. Até aplicar o patch, coloque o módulo na blacklist:
         echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf
         rmmod algif_aead 2>/dev/null
       NOTA: isso é EFICAZ apenas quando CONFIG_CRYPTO_AUTHENC=m (módulo).
       Se CONFIG_CRYPTO_AUTHENC=y (embutido), aplicar o patch é a única correção.

Versão Shell (para pipelines DevSecOps)

Baixar ferramenta