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
CHARON — CHARON — pre-built PoC for CVE-2026-46333 (Linux ptrace mm==NULL fd theft) | Kitploit
Ferramentas/GitHubGitHub/karazajac/charon
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingLearning & EducationBinary Exploitation
GitHubkarazajac/charon

CHARON

CHARON — pre-built PoC for CVE-2026-46333 (Linux ptrace mm==NULL fd theft)

Ver Repositório
72há 3 mesesAinda 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
root@kitploit:~
  ____  _   _    _    ____   ___  _   _
 / ___|| | | |  / \  |  _ \ / _ \| \ | |
| |    | |_| | / _ \ | |_) | | | |  \| |
| |___ |  _  |/ ___ \|  _ <| |_| | |\  |
 \____||_| |_/_/   \_\_| \_\\___/|_| \_|

  transporta descritores de arquivo através do Styx exit-mm()
  CVE-2026-46333  /  Linux <= 6.12.89

"É coisa terrível cair nas mãos do Deus vivo." — Hebreus 10:31

O que é isso

Um PoC compacto, sem dependências, para CVE-2026-46333: a burlagem de __ptrace_may_access mm==NULL divulgada pela Qualys em 15 de maio de 2026. Charon faz uma corrida entre pidfd_getfd(2) e um processo SUID-root moribundo para capturar seu descritor de arquivo aberto /etc/shadow através da breve janela mm-NULL em do_exit(). Execute-o como um usuário não privilegiado em uma máquina afetada; ele exibe /etc/shadow na saída padrão.

root@kitploit:~
$ ./charon
[banner no stderr]
[*] isca /usr/bin/chage   alvo /etc/shadow
root:$y$j9T$ztS5H...$hz9W87TlqxEW...:...
daemon:*:20582:0:99999:7:::
bin:*:20582:0:99999:7:::
...

Taxa típica de acerto: menos de um segundo em uma VM de 4 núcleos, ~137 tentativas no teste de fumaça.

O bug, em 30 segundos

__ptrace_may_access() faz um curto-circuito em sua verificação de dumpability quando task->mm == NULL. O caminho rápido foi escrito para threads do kernel (swapper etc.), que legitimamente não têm mm e nunca devem ser traceados. Mas do_exit() executa exit_mm() antes de exit_files(), o que significa que um processo SUID do espaço do usuário brevemente possui:

  • task->mm == NULL (mm coletado) → verificação de dumpability ignorada
  • tabela de arquivos ainda populada → fds ainda obteníveis
  • credenciais refletem a queda pós-setreuid() → verificação de acesso passa

pidfd_getfd(2) confia nessa verificação de acesso e entrega ao atacante os descritores de arquivo abertos do processo SUID.

root@kitploit:~
do_exit()
  ├── exit_mm()      ← task->mm = NULL
  ├── ...            ← __ptrace_may_access() agora mente
  └── exit_files()   ← tabela fd coletada

Jann Horn sinalizou a forma de roubo de FD no lore.kernel.org em outubro de 2020. A correção ficou na revisão do mantenedor por ~6 anos antes de a Qualys trazê-la de volta ao topo da fila.

Correção upstream: 31e62c2ebbfd (Linus 14/05/2026). Em 15/05/2026, o backport ainda não chegou ao linux-6.12.y ou linux-6.6.y estável.

Kernels afetados

Árvore estávelStatus
linux-6.12.y (≤ 6.12.89)❌ vulnerável
linux-6.6.y (backport pré-correção)❌ vulnerável
mainline ≥ 6.15-rc1✅ corrigido (31e62c2ebbfd)

A tabela de PR / status contínuo será atualizada conforme os backports chegarem.

Compilar

root@kitploit:~
# Binário estático pequeno de 38 KB (recomendado)
sudo apt-get install musl-tools
make static

# Ou apenas a compilação padrão com glibc
make

Saída: um único ELF ./charon.

Executar

root@kitploit:~
./charon                     # exibe /etc/shadow (padrão)
./charon -q                  # sem banner/progresso, apenas shadow no stdout
./charon -v                  # mostra estatísticas por tentativa + finais
./charon -r 5000             # mais paciência para sistemas lentos
./charon -t /etc/ssh/ssh_host_ecdsa_key   # alvo diferente (usa isca ssh-keysign)
./charon -a                  # descobre automaticamente iscas SUID/SGID se as embutidas falharem
./charon -L                  # lista iscas candidatas sem tentar nenhuma
./charon --help

Descoberta automática

--auto percorre /usr/bin, /usr/sbin, /usr/local/{bin,sbin}, /usr/lib/openssh, /usr/libexec, /bin, /sbin, encontra todos os arquivos regulares SUID/SGID (excluindo iscas interativas como su, sudo, newgrp, pkexec) e tenta cada um como isca contra o alvo solicitado. O orçamento por isca é apertado (5 rodadas × 2000 internas), portanto uma varredura completa termina em ~10 segundos mesmo quando nada corresponde.

--list-baits é a versão somente leitura — enumera os mesmos candidatos sem disparar o exploit. Útil para verificar quais distribuições trazem quais iscas.

Códigos de saída

CódigoSignificado

Iscas

Charon vem com quatro iscas SUID conhecidas:

Adicionar uma isca é uma edição de 3 linhas no array lures[] em charon.c.

Mitigações até sua distribuição enviar o backport

  • Aplique 31e62c2ebbfd diretamente.
  • Desabilite pidfd_getfd(2) via seccomp em servidores de produção.
  • Remova o bit setuid de chage e passwd se você não precisar que usuários não privilegiados consultem o envelhecimento de senhas.
  • Para cargas de trabalho em contêineres, ativar no_new_privs no host bloqueia completamente a primitiva — cada "SUID" dentro do contêiner torna-se inerte, deixando Charon sem presa.

Não é um candidato a VRP do kernelctf

A VM de desafio VRP do Google kernelctf executa o bash do jogador dentro de uma sandbox nsjail com clone_newuser:true (uid 0 não mapeado), chroot:/chroot e no_new_privs:1. Sob no_new_privs o bit setuid é inerte, portanto não há presa SUID real dentro da sandbox, e /flag vive no host fora do chroot. Portanto, Charon não pode ganhar kCTF VRP. Continua sendo um LPE legítimo do Linux em instalações bare-metal das famílias Debian / Ubuntu / RHEL.

Procedência

  • Bug descoberto e divulgado pela Qualys → oss-security 15/05/2026.
  • PoCs de referência por @0xdeadbeefnetwork.
  • Charon reescreve o loop de isca-e-corrida em um único binário endurecido, adiciona ergonomia de CLI, detecção automática de kernel corrigido e fallback de isca por distribuição.

Licença

Uso educacional e defensivo autorizado apenas.

root@kitploit:~
                        ⛵ STYX ⛵
              ╔══════════════════════════════╗
              ║  do_exit():                  ║
              ║   ├── exit_mm()   ← task->mm ║
              ║   │                = NULL    ║
              ║   ├── ...      ←  ferry      ║
              ║   └── exit_files()           ║
              ╚══════════════════════════════╝
Baixar ferramenta
DistribuiçãoKernelStatus (15/05/2026)
Debian trixie6.12.86+deb13❌
AlmaLinux 10.16.12.0-124.55.3❌
Ubuntu 26.047.0.0-15⚠️ verificar
Fedora 447.0.4-200⚠️ verificar
0Sucesso — conteúdo do arquivo no stdout
1Nenhuma isca SUID neste sistema abre o arquivo solicitado
2Kernel parece corrigido (CVE-2026-46333 fechada)
3Esgotou as rodadas sem acerto (raro; tente -r 5000)
4Erro de CLI / E/S
BinárioArquivo que abreCobertura de distribuições
/usr/bin/chage (chage -l <usuário>)/etc/shadowMaioria Debian, Ubuntu, Fedora
/usr/sbin/chage/etc/shadowFamília RHEL / Rocky / Alma
/usr/bin/passwd (passwd -S <usuário>)/etc/shadowMaioria das distribuições
/usr/lib/openssh/ssh-keysign/etc/ssh/ssh_host_*_keyDistribuições com HostbasedAuthentication ativado