CiberLab
Logotipo Ciência Embarcada Ciência Embarcada
Relatório técnico de análise de vulnerabilidade

CVE-2026-98432

Uso após liberação no aperto de mão TCP do kernel Linux, do pacote com opções IPv4 ao root remoto

Quando o kernel Linux aceita uma nova conexão TCP por IPv4, ele entrega à conexão as opções IP guardadas do pedido original sem copiá-las, e as libera logo em seguida. Se, nesse instante, outro núcleo do processador estiver respondendo a um SYN retransmitido do mesmo pedido, ele lê memória já liberada. Um atacante remoto, sem conta, provoca essa corrida com pacotes que carregam opções IPv4. A Anthropic demonstrou, com um modelo Claude ainda não lançado, um exploit que obtém root em servidores com ouvinte MPTCP em cerca de 53 minutos. A correção está no kernel oficial desde 11 de outubro, mas várias distribuições ainda não a entregavam no fim do mês, e o kernel atualizado só protege depois do reinício.

Objeto analisado Kernel Linux, CVE-2026-98432
Severidade avaliada Crítica
Classificação TLP:CLEAR
Base de evidência OSINT verificado
Data de emissão 2 de novembro de 2026
Versão 1.0

00Sumário

  1. 01Sumário executivo
  2. 02Identificação do objeto analisado
  3. 03Contexto técnico: o aperto de mão TCP e o MPTCP
  4. 04Mecanismo da vulnerabilidade e causa raiz
  5. 05Exploração e estado das correções
  6. 06Verificação: a exposição do CiberLab
  7. 07Detecção e inventário
  8. 08Mitigação e resposta a incidentes
  9. 09Indicadores de comprometimento
  10. 10Limitações da análise
  11. 11Referências
Achado central

A função tcp_v4_syn_recv_sock() transfere a posse de ireq->ireq_opt para o socket filho sem copiá-lo, enquanto outro núcleo pode estar lendo a mesma estrutura para responder a um SYN retransmitido, protegido apenas por rcu_read_lock() [1]. O resultado é um uso após liberação alcançável pela rede, sem autenticação, com nota 9.8 da equipe de CVE do kernel [1] [2]. O exploit demonstrado precisa de um ouvinte MPTCP, mas o defeito está no TCP comum por IPv4: desligar o MPTCP estreita o caminho conhecido e não fecha a falha [1] [2]. A proteção só existe depois de instalar o kernel corrigido e reiniciar [2] [3].

01Sumário executivo

A CVE-2026-98432 é uma condição de corrida que leva a uso após liberação (use-after-free) no código do kernel Linux que monta novas conexões TCP por IPv4 [1] [2]. Afeta kernels desde a versão 4.4 [1]. A equipe de CVE do kernel atribuiu 9.8 em CVSS 3.1; a Red Hat começou classificando como negação de serviço, com 5.9, e elevou para crítica em 30 de outubro [1] [2].

9.8 pontuação CVSS 3.1 da equipe de CVE do kernel [1] [2]
4.4 primeira versão do kernel afetada; o defeito tem cerca de dez anos [1]
53 min até a execução de comandos como root no exploit da Anthropic [1] [4]
0 explorações em campo confirmadas até 1º de novembro [1] [2]

O ataque exige que o atacante alcance uma porta TCP aberta e vença uma corrida com pacotes que carregam opções IPv4, como Record Route ou Timestamp [2]. Perder a corrida só faz a conexão falhar, então o atacante pode repetir quantas vezes quiser [2] [3]. A Anthropic relatou que um modelo Claude de pesquisa, ainda não lançado, construiu um exploit que vaza memória do kernel, contorna o KASLR (Kernel Address Space Layout Randomization), desvia o fluxo de execução do kernel e executa um comando do atacante como root, contra um servidor com ouvinte MPTCP (Multipath TCP) [1] [4]. O exploit não foi publicado [2].

A correção existe no kernel oficial desde 11 de outubro, nas versões 7.2.10 e 6.18.56, e chegou aos demais ramos estáveis em 15 de outubro [2]. As distribuições demoraram: em 30 de outubro, Ubuntu e Red Hat ainda não tinham kernel corrigido; a Red Hat entregou o seu em 1º de novembro, e o Ubuntu seguia vulnerável nessa data [1] [2].

A ação é: instale o kernel corrigido da sua distribuição e reinicie; até lá, bloqueie pacotes IPv4 TCP com opções IP na entrada e tire os ouvintes MPTCP da internet [1] [2] [3]. A seção 6 traz a verificação da infraestrutura do CiberLab.

02Identificação do objeto analisado

Natureza da evidência

Não houve submissão a sandbox, execução de exploit nem análise de amostra. O CiberLab não reproduziu a corrida nem testou as regras de filtragem. A causa raiz vem do aviso do kernel, citado pelo BleepingComputer [1], e do commit de correção, descrito pela Atlas [2]; a orientação de verificação, da Hive Security [3]; o exploit, da descrição da Anthropic relatada pela CSO Online [4]. A verificação da seção 6 foi feita sobre o código da plataforma e a estação de trabalho; o kernel do servidor de produção não foi inspecionado.

Tabela 1. Ficha técnica da vulnerabilidade CVE-2026-98432
CampoValor
IdentificadorCVE-2026-98432
Componente afetadoAperto de mão TCP por IPv4: net/ipv4/tcp_ipv4.c e net/ipv4/af_inet.c [1] [2]
Classe de fraquezaCondição de corrida com uso após liberação; o registro da CVE não lista CWE [2]
VetorRede, sem autenticação, sem interação do usuário [1] [4]
Pontuação9.8 em CVSS 3.1 (equipe de CVE do kernel); Red Hat de 5.9 para crítica em 30 de outubro [1] [2]
Pré-condição de redePacotes IPv4 com opções IP, como Record Route ou Timestamp no SYN [2]
Impacto descritoRevelação de memória do kernel ao par remoto, escrita fora dos limites no kernel ou queda [2]
Commit de correçãoe3f33b0, "ipv4: free inet_opt and ireq_opt after an RCU grace period", Eric Dumazet, 1º de outubro de 2026 [2]
IPv6Não afetado pela falha principal; um caso relacionado ficou para outro patch [2]
Inclusão no KEVNão incluída até 1º de novembro [2]
Tabela 2. Versões corrigidas do kernel oficial
RamoPrimeira versão corrigidaData
7.37.3 [2] [3]18 de outubro [2]
7.27.2.10 [2] [3]11 de outubro [2]
6.186.18.56 [2] [3]11 de outubro [2]
6.126.12.113 [2] [3]15 de outubro [2]
6.66.6.159 [2] [3]15 de outubro [2]
6.16.1.190 [2] [3]15 de outubro [2]
5.155.15.223 [2] [3]15 de outubro [2]
5.105.10.272 [2] [3]15 de outubro [2]
4.4 a 5.4Fora de suporte no upstream; só correção de distribuição [2]n/d
Versão de distribuição não é versão do upstream

Distribuições aplicam correções em kernels com numeração própria. Não compare a saída de uname -r com a tabela 2 para decidir se um servidor Ubuntu, RHEL ou Debian está corrigido: consulte o rastreador de segurança da distribuição [2] [3].

03Contexto técnico: o aperto de mão TCP e o MPTCP

3.1O pedido de conexão e o socket filho

Uma conexão TCP começa com três pacotes: o cliente envia SYN, o servidor responde SYN-ACK e o cliente confirma com ACK. Entre o SYN e o ACK, o kernel guarda um pedido de conexão (request socket) com o que aprendeu do SYN, inclusive as opções do cabeçalho IPv4, no campo ireq_opt [1]. Quando o ACK chega, o kernel cria o socket filho, a conexão de fato, e transfere a ele o que estava no pedido [1]. Se o SYN-ACK se perde, o cliente retransmite o SYN, e o kernel responde de novo a partir do mesmo pedido [1].

3.2Opções IPv4

O cabeçalho IPv4 tem uma área opcional para instruções como Record Route, que pede que cada roteador anote seu endereço, e Timestamp, que pede marcas de tempo [2]. Esses campos são raros no tráfego normal da internet, e pacotes com cabeçalho maior que o mínimo de 20 bytes são identificáveis pelo campo de tamanho do cabeçalho [2].

3.3RCU, a leitura sem trava

O kernel usa RCU (Read-Copy-Update) para permitir leituras muito rápidas de estruturas compartilhadas: o leitor não pega trava, e quem libera a estrutura precisa esperar um período de carência, até que todos os leitores tenham saído, antes de devolver a memória [1] [2]. Liberar com kfree() sem esperar esse período quebra a garantia, e é esse o defeito da falha [2].

3.4MPTCP

O Multipath TCP permite que uma única conexão use vários caminhos de rede ao mesmo tempo, comum em aparelhos com Wi-Fi e rede celular [1]. É opcional no Linux, mas há programas que o ativam sem que o administrador perceba: desde a versão 1.24, a linguagem Go abre ouvintes TCP como MPTCP por padrão quando o kernel suporta [1] [2]. Configurações por eBPF também podem forçar aplicações a usá-lo [4].

04Mecanismo da vulnerabilidade e causa raiz

4.1A corrida

Ao criar o socket filho, tcp_v4_syn_recv_sock() passa ireq->ireq_opt para newinet->inet_opt sem copiar, e a estrutura é liberada imediatamente com kfree() quando deixa de ser necessária [1] [2]. Ao mesmo tempo, outro núcleo pode estar processando um SYN retransmitido do mesmo pedido e enviando um SYN-ACK a partir de tcp_check_req() [1]. As funções tcp_v4_send_synack() e inet_csk_route_req() leem ireq->ireq_opt só sob rcu_read_lock(), e ip_build_and_send_pkt() e ip_options_build() leem o campo opt->optlen duas vezes [1]. Se a memória for liberada e reaproveitada entre as duas leituras, o kernel monta o pacote de resposta com um tamanho e um conteúdo que não correspondem mais à estrutura original.

O aviso do kernel registra um segundo caminho para o mesmo efeito: a migração de pedidos de conexão entre sockets, quando net.ipv4.tcp_migrate_req está ligado ou um programa BPF do tipo BPF_SK_REUSEPORT_SELECT_OR_MIGRATE está em uso [1].

4.2Do uso após liberação ao root

Segundo a equipe de CVE do kernel, o defeito pode vazar memória do kernel para o par remoto, dentro do próprio SYN-ACK, causar escrita fora dos limites no kernel ou derrubá-lo [2]. O exploit descrito pela Anthropic encadeia esses efeitos: usa o vazamento para descobrir um ponteiro do kernel e contornar o KASLR, em cerca de 48 minutos, e depois sequestra o fluxo de execução para rodar um comando como root, em cerca de 5 minutos [2] [3] [4].

4.3A correção

O commit de Eric Dumazet troca duas chamadas kfree() por kfree_rcu(), que adia a liberação de inet_opt e ireq_opt até o fim do período de carência do RCU [2]. É uma mudança de duas linhas que fecha a corrida sem alterar o comportamento do protocolo.

MPTCP é o caminho demonstrado, não o defeito

O exploit funcional precisou de um ouvinte MPTCP, mas o defeito está no TCP comum por IPv4 [1] [2]. A CIQ e a equipe de segurança do Go alertam que sistemas sem MPTCP podem ser vulneráveis a ataques semelhantes [1] [2]. Não declare um servidor seguro só porque net.mptcp.enabled está em zero: sem o kernel corrigido, ele continua exposto a queda e possivelmente a mais.

05Exploração e estado das correções

A tabela reúne a cronologia, da correção ao estado das distribuições:

Tabela 3. Linha do tempo da CVE-2026-98432 em 2026
DataEvento
1º de outubroCorreção enviada e commit criado [2]
5 de outubroIntegrada à árvore de rede do kernel [2]
11 de outubroLançamento de 7.2.10 e 6.18.56 [2]
15 de outubroLançamento dos cinco ramos estáveis restantes; publicação da CVE [2]
16 de outubroErrata do Oracle UEK [2]
18 de outubroLançamento do Linux 7.3 [2]
27 de outubroA Anthropic descreve o exploit funcional [2] [4]
29 de outubroA equipe do Go lembra que programas Go abrem ouvintes MPTCP por padrão desde a 1.24 [2]
30 de outubroA Red Hat eleva a classificação para crítica; Ubuntu e RHEL ainda sem kernel corrigido [1] [2]
1º de novembroA Red Hat entrega a correção para RHEL 8, 9 e 10; Ubuntu segue vulnerável [2]
Tabela 4. Estado das distribuições na data mais recente das fontes
DistribuiçãoEstado
Debian 12 e 13Corrigido em 6.1.190-1 e 6.12.113-1; testing e unstable também [1]
Red Hat Enterprise Linux 8, 9 e 10Corrigido em 1º de novembro; RHEL 7 não afetado [1] [2]
Ubuntu 22.04, 24.04, 26.04 e 26.10Vulnerável, correção em andamento, até 1º de novembro [1] [2]
Rocky Linux 8, 9 e 10Afetado; a CIQ publicou regras de firewall temporárias [1]
Oracle Linux, Amazon Linux e SUSECorreções publicadas para parte das versões [1] [2]
Arch LinuxO pacote linux padrão já é mais novo que 7.2.10 [3]

Não havia exploração em campo confirmada nem inclusão no catálogo KEV até 1º de novembro [1] [2]. Em 1º de novembro, 41 repositórios públicos no GitHub mencionavam a CVE, e ao menos sete descreviam um gatilho da corrida ou uma prova de conceito, sem verificação independente [2].

06Verificação: a exposição do CiberLab

A falha é do kernel do host, e não da aplicação, então a verificação olhou para onde o CiberLab roda e para quem abre ouvintes TCP. A conclusão é que a aplicação não aciona MPTCP, mas o kernel dos servidores precisa ser conferido.

Tabela 5. Verificação do CiberLab contra a CVE-2026-98432
Ponto verificadoEstadoResultado
Uso de MPTCP pela aplicaçãoBusca no código, no Dockerfile e nas dependências declaradas: nenhuma ocorrência de mptcp ou IPPROTO_MPTCPNão aciona
Kernel do servidor de produçãoNão inspecionado; o contêiner compartilha o kernel do hostConfirmar
Servidor Git (Gitea)Escrito em Go; compilado com Go 1.24 ou superior, abre ouvintes MPTCP por padrão quando o kernel suporta [1] [2]Confirmar
Estação de desenvolvimentoKernel Ubuntu 7.0.0-38-generic; o Ubuntu seguia sem correção em 1º de novembro [2]Vulnerável
Ação para a operação do CiberLab

No servidor de produção e no do Gitea, rode uname -r, consulte o rastreador da distribuição e, se o kernel não estiver corrigido, aplique a regra nftables da seção 8.2 até a atualização. Rode ss -Mlnp no host do Gitea: se houver ouvinte MPTCP exposto, defina GODEBUG=multipathtcp=0 no serviço ou net.mptcp.enabled=0 no host enquanto o kernel não for atualizado [2] [3]. Não conte o servidor como corrigido antes do reinício.

07Detecção e inventário

7.1Inventário

O primeiro passo é saber qual kernel está rodando, e não qual está instalado, e onde há ouvintes MPTCP [2] [3]:

ShellCompilado de [2] [3]
# Kernel em execucao (difere do instalado ate o reinicio)
uname -r
uname -v

# Kernels instalados
dpkg -l 'linux-image*'      # Debian e Ubuntu
rpm -q kernel               # familia RHEL
needs-restarting -r         # RHEL: reinicio pendente?

# Ouvintes TCP e MPTCP
ss -ltnp
ss -Mlnp
sysctl net.mptcp.enabled

net.mptcp.enabled ligado não prova que exista um ouvinte vulnerável; o que importa é a saída de ss -Mlnp [3].

7.2Tráfego

Pacotes IPv4 TCP com opções IP são raros no tráfego da internet. Uma rajada de SYN com opções Record Route ou Timestamp contra a mesma porta, com retransmissões, é o padrão da corrida [2] [3]. A regra abaixo alerta esse padrão em sensores de borda:

SuricataDerivada de [2], não validada em produção
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"CIBERLAB LINUX CVE-2026-98432 TCP SYN WITH IPV4 OPTIONS BURST"; \
    flags:S,12; ipopts:any; \
    threshold:type both, track by_src, count 50, seconds 60; \
    classtype:attempted-admin; sid:9000311; rev:1; \
    reference:cve,2026-98432; reference:url,ciberlab.seg.br/reports/linux-tcp-uaf;)

7.3Sinais no host

Observe quedas repetidas do kernel, falhas inexplicadas de ouvintes e tráfego de entrada com opções IPv4 [3]. Processos com privilégio de root que surgem depois desse tipo de atividade justificam isolar a máquina e preservar evidências [3]. Depois do reinício, confira systemctl --failed e journalctl -k -b -p warning [3].

08Mitigação e resposta a incidentes

8.1Correção definitiva

Instale o kernel corrigido pelo caminho normal da distribuição e reinicie numa janela aprovada [3]. Não aplique o commit do upstream à mão num kernel de produção de distribuição [3]. A condição de encerramento é cada servidor rodando um kernel que a distribuição confirma como corrigido, e os ouvintes de maior risco verificados quanto a sinais de exploração anterior [3].

8.2Medidas temporárias

Enquanto o kernel não é atualizado, a medida mais eficaz é descartar pacotes IPv4 TCP com opções antes que cheguem ao código vulnerável [1] [2]:

nftablesTranscrito de [2], não testado contra o exploit
table ip cve_2026_98432 {
    chain prerouting {
        type filter hook prerouting priority -300; policy accept;
        ip protocol tcp ip hdrlength gt 5 drop
    }
}
  1. Use nftables no RHEL 9 e 10: a alternativa com iptables depende do módulo xt_u32, que não existe nessas versões [2]. As duas regras somem no reinício [2].
  2. Desligue o MPTCP: net.mptcp.enabled=0 e reinicie os serviços com ouvintes MPTCP; contêineres precisam do ajuste no próprio namespace [2]. Em programas Go, GODEBUG=multipathtcp=0 desliga o padrão, o que a equipe do Go considera frágil [2].
  3. Reduza o alcance: coloque os ouvintes atrás de VPN, firewall ou balanceador confiável e restrinja interfaces de gerenciamento [1] [3].
O filtro reduz, não garante

A Atlas verificou que a regra nftables não afeta o TCP normal, mas não a testou contra o exploit; a Red Hat afirma que sua regra na cadeia de entrada não consegue impedir a falha por completo [2]. Não use o filtro como motivo para adiar o reinício. Ele compra tempo; só o kernel corrigido fecha a falha.

8.3Resposta a um comprometimento

O reinício depois da atualização impede novo disparo, mas não remove persistência nem credenciais roubadas antes dele [3]. Num servidor com sinais da seção 7.3 e kernel vulnerável exposto, preserve memória e registros antes de reiniciar, gire as credenciais acessíveis ao host e reconstrua a partir de imagem limpa.

8.4Mapeamento de técnicas MITRE ATT&CK

IDs e nomes conferidos na base oficial do MITRE ATT&CK for Enterprise [5]:

Tabela 6. Mapeamento de táticas e técnicas conforme MITRE ATT&CK
TécnicaNomeRelação com o caso
T1210Exploitation of Remote ServicesCorrida no aperto de mão TCP de um ouvinte exposto, sem autenticação [1] [4]
T1068Exploitation for Privilege EscalationExecução no contexto do kernel, com privilégio de root [1] [4]
T1005Data from Local SystemVazamento de memória do kernel no SYN-ACK [2]
T1499.004Endpoint Denial of Service: Application or System ExploitationQueda do kernel, o desfecho mais provável de tentativas malsucedidas [1] [2]

09Indicadores de comprometimento

Nenhuma fonte publicou IPs, domínios, hashes ou assinaturas de exploração [2] [3]. Os indicadores abaixo são de exposição e de comportamento:

Tabela 7. Indicadores de comprometimento e artefatos de detecção
TipoIndicadorSeveridadeContexto e ação
Vulnerabilidade CVE-2026-98432 Crítica Uso após liberação no TCP IPv4, remoto e sem autenticação. Atualize o kernel e reinicie [1] [2].
Rede SYN IPv4 com ip hdrlength > 5 Alta Opções Record Route ou Timestamp no SYN; descarte na entrada até a atualização [2].
Exposição ss -Mlnp com ouvinte público Alta Ouvinte MPTCP alcançável da internet, o caminho do exploit demonstrado [1] [3].
Exposição net.ipv4.tcp_migrate_req = 1 Média Segundo caminho para a mesma corrida [1].
Host queda de kernel ou de ouvinte sem causa Alta Correlacione com tráfego de entrada com opções IPv4 [3].
Host processo root novo após rajada de SYN Crítica Possível exploração bem-sucedida; isole e preserve evidências [3].

10Limitações da análise

  1. Ausência de detonação: o CiberLab não reproduziu a corrida, não executou exploit e não testou as regras de filtragem. Causa raiz, versões e mitigações vêm das referências [1] a [4].
  2. Exploit não publicado: os tempos de 48 e 5 minutos e a dependência do MPTCP vêm da descrição da Anthropic, relatada por terceiros [2] [4]. O exploit não foi publicado, e o CiberLab não teve acesso ao relato original da Anthropic.
  3. Estado das distribuições muda rápido: as tabelas 4 e 5 refletem as fontes até 1º de novembro. Confira o rastreador da sua distribuição antes de agir.
  4. Divergência de pontuação: a Red Hat partiu de 5.9 e elevou a classificação depois [1] [2]; este relatório adota a nota da equipe de CVE do kernel.
  5. Regra derivada: a regra Suricata da seção 7.2 foi deduzida da condição de disparo descrita em [2], com limiar arbitrário, e não foi testada.
  6. Infraestrutura não inspecionada: o kernel dos servidores de produção e do Gitea, e a versão do Go usada para compilar o Gitea, não foram verificados.

11Referências

  1. [1] Critical Linux kernel flaw allows remote root attacks on MPTCP servers. BleepingComputer, 30 de outubro de 2026. Texto do aviso do kernel com as funções envolvidas, pontuações, estado das distribuições e mitigações da CIQ. https://www.bleepingcomputer.com/news/security/critical-linux-kernel-flaw-allows-remote-root-attacks-on-mptcp-servers/
  2. [2] Linux's October 2026 TCP Use-After-Free: CVE-2026-98432. Atlas, atualizado em 1º de novembro de 2026. Commit de correção, versões por ramo, condições de disparo, regras nftables e iptables, cronologia e estado das distribuições. https://atlasum.net/blog/cve-2026-98432-linux-ipv4-tcp-uaf
  3. [3] Linux CVE-2026-98432: Check the Running Kernel, Not Just the Update Screen. Hive Security, 31 de outubro de 2026. Comandos de verificação, roteiro de correção e critério de encerramento. https://hivesecurity.gitlab.io/blog/linux-kernel-cve-2026-98432-tcp-response/
  4. [4] Anthropic AI model finds Linux kernel bug that leads to remote root access. CSO Online, 30 de outubro de 2026. Descrição do exploit da Anthropic, etapas e exposição por MPTCP. https://www.csoonline.com/article/4242724/anthropic-ai-model-finds-linux-kernel-bug-that-leads-to-remote-root-access.html
  5. [5] MITRE ATT&CK Enterprise. The MITRE Corporation. Fonte dos IDs e nomes de técnica da tabela 6, conferidos em 2 de novembro de 2026. https://attack.mitre.org/

CVE-2026-98432, uso após liberação no TCP IPv4 do kernel Linux. Relatório técnico de análise de vulnerabilidade, versão 1.0, emitido em 2 de novembro de 2026.
CiberLab, uma iniciativa do Ciência Embarcada.
Classificado TLP:CLEAR: distribuição livre, sem restrição de compartilhamento.