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
kernel98scan — Seu host Linux está exposto à CVE-2026-98432? | Kitploit
Ferramentas/GitHubGitHub/akaihigurashi/kernel98scan
Ferramentas DefensivasReconhecimentoScanners de VulnerabilidadesMapeamento de RedeEscaneamento de PortasAnálise de VulnerabilidadesAuditoria de ConfiguraçãoColeta de InformaçõesSegurança Web
GitHubakaihigurashi/kernel98scan

kernel98scan

Seu host Linux está exposto à CVE-2026-98432?

1há 3 diasAinda 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 →
Ver RepositórioSite
Compartilhar

kernel98scan

Verifica se um host Linux pode estar exposto à CVE-2026-98432, o use-after-free no handshake TCP IPv4 do kernel. Parte do shouldipanic.ch.

Um SYN carregando opções IPv4 (Record Route, Timestamp) alcança código que lê as opções depois que elas já podem ter sido liberadas. Qualquer porta TCP IPv4 aberta é suficiente, não é necessário login. Está presente em todos os kernels desde a 4.4 (2016) até a versão corrigida de cada árvore: 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10, 7.3. O CNA do kernel atribui a ela 9.8; um exploit remoto de root funcional contra servidores com listeners MPTCP foi relatado (não publicado). A correção é invisível na rede: um kernel corrigido responde exatamente como um não corrigido.

Isso molda o que cada modo pode afirmar:

  • --on-host lê o kernel em execução na própria máquina: sua versão, o changelog do pacote e se um kernel mais novo aguarda um reboot.
  • De fora ninguém consegue ler o kernel. O kernel98scan lê a distribuição Linux a partir do cabeçalho HTTP Server e mostra se essa distribuição já lançou um kernel corrigido. Isso é uma forte pista, não um veredito: atrás de um proxy reverso ou dentro de um contêiner, o kernel pertence a outra máquina.

O kernel98scan vem em duas formas:

  • kernel98scan.py: um único arquivo Python sem dependências. Em um host, --on-host fornece o veredito real; apontado para endereços, ele faz fingerprinting de distribuição em faixas de IP, com varredura de portas e descoberta de vhost.
  • Uma página web (imagem Docker) onde qualquer pessoa pode verificar um host de fora, com proteção contra abuso. Ela roda em kernel98scan.shouldipanic.ch.

Resultado para um servidor que mostra Ubuntu

Linha de comando

curl -LO https://github.com/akaihigurashi/kernel98scan/releases/latest/download/kernel98scan.py
python3 kernel98scan.py --on-host           # real verdict for THIS machine

Python 3.8 ou mais recente, nada para instalar. Exemplos:

python3 kernel98scan.py --on-host                       # read the running kernel
python3 kernel98scan.py 203.0.113.10                    # outside: distribution + fix status
python3 kernel98scan.py 203.0.113.0/24                  # a whole range from outside
python3 kernel98scan.py 203.0.113.10 --ip-options       # + do IP-options packets get through?
python3 kernel98scan.py 203.0.113.10 -o out.csv         # CSV output
python3 kernel98scan.py -h                              # all options

No host (--on-host, código de saída 2 / 1 / 0 / 3):

StatusSignificado
VULNERABLENada mostra a correção no kernel em execução
CHECKUm kernel corrigido está instalado, mas o antigo ainda está em execução: reinicie
FIXEDO changelog do kernel nomeia a CVE, ou um kernel upstream simples está na versão corrigida

Kernels de fornecedores (Ubuntu, RHEL, Proxmox) fazem backport de correções para números de versão antigos, portanto para eles apenas o changelog conta. Ele também mostra se o MPTCP está ativado (o exploit relatado passa por listeners MPTCP) e tcp_migrate_req.

De fora:

StatusSignificado
POSSIBLY VULNERABLEO banner mostra uma distribuição Linux: ou ela ainda não tem um kernel corrigido (Ubuntu, RHEL e rebuilds hoje) ou tem um, que precisa ser instalado e inicializado
UNKNOWNA distribuição não está visível, ou um proxy/CDN responde
NOT LINUXO cabeçalho Server aponta para um host não Linux

VULNERABLE e PATCHED nunca são reportados de fora. O status de correção por distribuição é uma tabela em check.py (FIX_STATUS, FIXED_TABLE), atualizada a cada lançamento de fornecedor.

OpçãoO que faz
--on-hostLê o kernel em execução nesta máquina e dá um veredito real
--ip-optionsUma conexão cujo SYN carrega uma opção IP Record-Route (veja abaixo)
-o FILETambém grava todos os resultados em CSV
-a / -vMostra resultados ocultos / mostra as evidências
-dDepuração: cada requisição, cabeçalho e correspondência
-qSem banner (para scripts)
-VImprime a versão
-hTodas as opções

--ip-options (opt-in, apenas linha de comando)

Abre uma conexão normal e outra cujo SYN carrega uma opção IP Record-Route vazia, e informa se tais pacotes chegam ao host (reach), são descartados no caminho (filtered) ou a porta está fechada (noport). Essa é a forma de pacote pela qual o bug é alcançado, portanto fica desativado por padrão e nunca é executado na página web: use-o em seus próprios hosts, por exemplo para confirmar que seu firewall descarta opções IP. Uma única conexão não consegue vencer a corrida que o bug exige, e um resultado filtered pode ser qualquer rede no meio do caminho.

Mitigação até que um kernel corrigido seja executado

nft add table ip cve98432
nft add chain ip cve98432 pre '{ type filter hook prerouting priority -300; }'
nft add rule ip cve98432 pre meta l4proto tcp ip hdrlength != 5 drop
sysctl -w net.mptcp.enabled=0     # if you don't need MPTCP

Descarta pacotes TCP IPv4 que carregam quaisquer opções de IP. Não é persistente entre reinicializações e não substitui o kernel corrigido.

Página web com Docker

docker run -d --name kernel98scan --restart unless-stopped \
  -p 127.0.0.1:8092:8092 \
  -e PANIC_ORIGIN=https://kernel98scan.example.ch \
  -v kernel98scan-data:/data \
  ghcr.io/akaihigurashi/kernel98scan:latest

Ou com Compose: baixe docker-compose.yml, defina PANIC_ORIGIN, depois docker compose up -d. O contêiner escuta apenas em localhost; coloque um proxy reverso com TLS na frente dele (exemplo nginx).

VariávelPadrãoFinalidade
PANIC_ORIGIN–Endereço público. Requisições de outras origens são recusadas. Defina-a.
PANIC_OPERATOR / PANIC_CONTACT–Seção de contato opcional na parte inferior da página
PANIC_IMPRINT_URL–Link opcional para um imprint existente
PANIC_TRUSTED_PROXY127.0.0.1,::1Proxies cujo cabeçalho X-Real-IP é confiável
PANIC_DENY_HOSTS / PANIC_DENY_IPS–Nunca verificar estes domínios / endereços
PANIC_AUDIT_DIR/data/auditArquivos de log de auditoria diários
PANIC_RETENTION_DAYS30Arquivos de auditoria mais antigos que isso são excluídos

A página tem as mesmas proteções que o php2scan: caixa de consentimento, log de auditoria, clientes VPN/Tor/datacenter recusados, limite de taxa, cache de resultados, apenas hostnames públicos com a conexão fixada ao endereço verificado, hosts que nunca são verificados (serviços conhecidos, os 100 sites mais visitados, sites governamentais, países sancionados) e nenhum acesso a partir de países sancionados. A página web apenas carrega a página inicial; ela nunca envia opções de IP.

Como é construído

Baixar ferramenta