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-98432 — Detector em Rust e laboratório local para CVE-2026-98432, um use-after-free de TCP IPv4 no Linux em inet_opt/ireq_opt: análise estática de ELF, verificações de alcançabilidade por kprobe e um gatilho de corrida. | Kitploit
Ferramentas/GitHubGitHub/alvaroguzmancode/cve-2026-98432
Análise EstáticaAnálise de VulnerabilidadesExploraçãoFuzzingPapers e PesquisaLabs e Prática
GitHubalvaroguzmancode/cve-2026-98432

cve-2026-98432

Detector em Rust e laboratório local para CVE-2026-98432, um use-after-free de TCP IPv4 no Linux em inet_opt/ireq_opt: análise estática de ELF, verificações de alcançabilidade por kprobe e um gatilho de corrida.

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 →
Ver Repositório
2há 6 diasAinda não revisado
Compartilhar

CVE-2026-98432 — use-after-free em TCP IPv4 (inet_opt / ireq_opt)

PoC de pesquisa e laboratório local para um use-after-free no kernel Linux alcançável a partir de um listener TCP IPv4 simples. Este é um detector/gatilho de bug, não um exploit.

Status

  • O caminho de código é vulnerável na build analisada (7.0.0-38-generic): inet_sock_destruct() e tcp_v4_reqsk_destructor() liberam as opções com kfree() em vez de kfree_rcu().
  • O caminho kfree é alcançável em tempo de execução (kprobes).
  • O próprio UAF é uma corrida difícil e intermitente. Vimos dois eventos candidatos de free -> use (via=reqsk) em uma execução antiga, e não conseguimos reproduzi-los de forma confiável.
  • Nenhum RCE, nenhum vazamento de KASLR e nenhuma primitiva de escrita estão implementados. O repositório de referência tcp2kaslr também para no gatilho do bug; estágios posteriores não são publicados.
  • A confirmação forte exige um kernel com KASAN (ou KFENCE). No host de teste, CONFIG_KASAN está desativado e a amostragem do KFENCE está desabilitada.

O vetor correto (de tcp2kaslr)

MPTCP não é necessário. O caminho comprovado é TCP IPv4 simples:

  1. O atacante envia um SYN com a opção IPv4 Record Route.
  2. O kernel salva as opções no request socket (ireq_opt).
  3. Um SYN retransmitido constrói um SYNACK e lê essas opções.
  4. O handshake é concluído; o socket filho recebe o mesmo ponteiro.
  5. A aplicação faz accept() no filho, define SO_LINGER(0) e o fecha. inet_sock_destruct() libera as opções com kfree().
  6. O caminho do SYNACK ainda está lendo a memória liberada.
  7. A leitura/escrita concorrente deve ocorrer em duas CPUs.

Nosso gatilho anterior estava errado de duas maneiras: a vítima nunca aceitava/fechava o filho (free_sock=0), e enviávamos um RST em vez de contar com o fechamento pelo servidor. O código atual adiciona as peças corretas:

  • listen --accept-close — accept + SO_LINGER(0) + close.
  • --sync — ACK + SYN duplicado concorrentemente, sem RST, opções Record Route.

A correção upstream é exatamente:

-    kfree(rcu_dereference_protected(inet->inet_opt, 1));
+    kfree_rcu(rcu_dereference_protected(inet->inet_opt, 1), rcu);

e a mesma alteração em tcp_v4_reqsk_destructor().

Conteúdo

CaminhoO que é
rust-poc/o PoC nativo em Rust: análise estática de ELF, kprobes, modos de acionamento
lab/vítima loopback Alpine + PHP para os testes locais antigos
scripts/auxiliares locais de reprodução, auxiliares de auditoria autorizada
docs/FINDINGS.mdo que foi testado, o que foi confirmado, o que não foi
docs/EXPLOITATION-NOTES.mdescopo: apenas acionamento do bug, sem RCE
docs/evidence/amostra de evidências sanitizadas

Início rápido

cd rust-poc
cargo build --release

# static analysis (no root)
./target/release/cve-2026-98432 static

# runtime reachability (root, tracefs)
sudo ./target/release/cve-2026-98432 runtime

# correct local vector: accept+close server + --sync trigger
cd ..
PASSES=1 ./scripts/repro-sync.sh 8083

repro-sync.sh inicia a vítima --accept-close em 127.0.0.1:8083, executa o gatilho de sincronização com sudo e imprime free_sock, use_build e o veredito de UAF. Uma execução limpa não é prova de segurança: a taxa é de aproximadamente 1e-7 por tentativa e os eventos se agrupam.

Se artifacts/ estiver ausente, static/runtime recorrem a /boot; o script legado scripts/cve-2026-98432.sh --static pode gerar os artefatos do kernel.

Como é um resultado positivo

Com KASAN, o kernel reporta um slab-use-after-free em inet_csk_route_req / ip_options_build com a pilha de liberação em inet_sock_destruct / inet_release. O harness tcp2kaslr chega a isso em cerca de 134 mil tentativas com KASAN; em um kernel normal, a mesma corrida foi observada apenas duas vezes em ~48 milhões de tentativas.

Uso responsável

Teste apenas kernels e hosts que você possui ou está explicitamente autorizado a testar. O gatilho é uma corrida no kernel e pode travar o host. Use uma VM descartável com um snapshot.

Referências

  • offline-ant/tcp2kaslr — gatilho do bug, evidência de KASAN, análise: https://github.com/offline-ant/tcp2kaslr
  • Patch upstream: ipv4: free inet_opt and ireq_opt after an RCU grace period (Eric Dumazet), kfree → kfree_rcu em net/ipv4/af_inet.c e net/ipv4/tcp_ipv4.c.

Licença

MIT. Consulte LICENSE.

Baixar ferramenta