Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!
CVE-2026-52924 — Análise técnica da CVE-2026-52924, um use-after-free crítico no tratamento de cookies obsoletos do SCTP no kernel Linux, incluindo causa raiz, fluxo de ataque, correção e métodos de detecção. | Kitploit
Análise técnica da CVE-2026-52924, um use-after-free crítico no tratamento de cookies obsoletos do SCTP no kernel Linux, incluindo causa raiz, fluxo de ataque, correção e métodos de detecção.
CVE-2026-52924: Use-After-Free no SCTP no Tratamento de Cookies Obsoletos
Resumo da Vulnerabilidade
ID CVE: CVE-2026-52924 Gravidade: CRÍTICA (CVSS 9.8) Componente: Kernel Linux - SCTP (Stream Control Transmission Protocol) Tipo: Use-After-Free (CWE-416, CWE-825) Publicado: 2026-06-24 Status: Corrigido
Versões Afetadas
Kernel Linux < 5.10.259
Kernel Linux < 5.15.210
Kernel Linux < 6.1.176
Kernel Linux < 6.6.143
Kernel Linux < 6.12.94
Kernel Linux < 6.18.36
Kernel Linux < 7.0.13
Kernel Linux < 7.1
Detalhes Técnicos
Causa Raiz
A vulnerabilidade ocorre no tratamento de pacotes COOKIE-ECHO obsoletos pela máquina de estados do SCTP. O problema envolve a limpeza inadequada da fila de transmissão de saída quando uma associação é revertida.
Fluxo do Ataque
Operação Normal: A associação passa para o estado COOKIE_ECHOED
Dados do Usuário Enfileirados: A aplicação envia dados, que são enfileirados para transmissão
Erro de Cookie Obsoleto: O peer remoto envia um erro de Stale Cookie
Reversão Acionada: A associação reverte de COOKIE_ECHOED → COOKIE_WAIT
Estado do Stream Atualizado:sctp_stream_update() libera a tabela de streams antiga e instala uma nova
Ponteiro Inválido:stream->out_curr ainda aponta para a entrada sctp_stream_out liberada
Acesso na Desenfileiração: Quando o escalonador tenta desenfileirar (FCFS, RR, PRIO), ele acessa out_curr->ext
Use-After-Free: O acesso à memória liberada → falha do kernel via detecção KASAN
Fluxo de Código Problemático
root@kitploit:~
sctp_sf_do_5_2_6_stale():
├─ Recebe erro de Stale Cookie
├─ Reverte o estado da associação
└─ Chama sctp_stream_update()
├─ Libera a tabela de streams antiga
├─ Instala a nova tabela de streams
└─ BUG: stream->out_curr NÃO é invalidado ❌
Posteriormente, ao desenfileirar:
sctp_sched_fcfs_dequeue():
└─ Acessa stream->out_curr->ext (MEMÓRIA LIBERADA) 💥
Exemplo de Falha
root@kitploit:~
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
Por Que Simplesmente Atualizar out_curr É Insuficiente
Uma correção ingênua poderia ser apenas limpar stream->out_curr:
Todos os dados de transmissão pendentes são descartados
Todas as entradas da fila de retransmissão são liberadas
Ponteiros em cache do escalonador (out_curr, etc.) são invalidados
O estado do stream pode ser reconstruído com segurança durante o reinício em COOKIE_WAIT
Nenhuma referência pendente a entradas de stream liberadas
Local da Implementação
Arquivo:net/sctp/sm_statefuns.c Função:sctp_sf_do_5_2_6_stale() Adição: Chamar sctp_outq_free(&asoc->outqueue) antes de sctp_stream_update()
root@kitploit:~
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... código existente ...
// Purgar a fila de saída antes de reconstruir o estado do stream
sctp_outq_free(&asoc->outqueue);
// Agora é seguro atualizar o stream
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... restante da função ...
}
Análise de Impacto
Fatores de Gravidade (CVSS 9.8)
Vetor de Ataque: Rede (CVSS:3.1/AV:N)
Complexidade do Ataque: Baixa (CVSS:3.1/AC:L)
Privilégios Necessários: Nenhum (CVSS:3.1/PR:N)
Interação do Usuário: Nenhuma (CVSS:3.1/UI:N)
Escopo: Inalterado (CVSS:3.1/S:U)
Impacto na Confidencialidade: Alto (CVSS:3.1/C:H)
Impacto na Integridade: Alto (CVSS:3.1/I:H)
Impacto na Disponibilidade: Alto (CVSS:3.1/A:H)
Requisitos de Exploração
Acesso de rede ao sistema alvo (porta SCTP aberta)
Capacidade de enviar pacotes SCTP para estabelecer conexão
Enviar erro de Stale Cookie em um momento específico (estado COOKIE_ECHOED)
Acionar a operação de desenfileiramento do escalonador
Cenários de Ataque
Negação de Serviço: Derrubar o kernel repetidamente → DoS
Divulgação de Informações: Ler memória do kernel via UAF
Escalação de Privilégios: Potencial por meio de manipulação de memória
Execução Remota de Código: Possível com exploração de corrupção de memória
Métodos de Detecção
Detecção KASAN (Tempo de Execução)
root@kitploit:~
# Habilitar KASAN na configuração do kernel
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# A saída em tempo de execução mostra:
BUG: KASAN: slab-use-after-free
Análise Estática
root@kitploit:~
# Procurar acesso inseguro a stream->out_curr sem validação
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
Detecção de Rede
Monitorar pacotes de erro SCTP Stale Cookie (Tipo 3, Código 1)
Rastrear padrões de reversão de conexão
Alertar sobre transições rápidas COOKIE_ECHOED → COOKIE_WAIT
Estratégias de Mitigação
Mitigações Temporárias (Até a Correção)
Desabilitar SCTP: Remover o módulo SCTP ou bloquear as portas SCTP (132, 132 UDP)