CEVIU Logo
Voltar

Uma Corrida Dentro de Uma Corrida: Explorando CVE-2025-38617 em Sockets de Pacotes Linux

Aprofundamento CEVIU

Aprofundamento

A CVE-2025-38617 não é só mais uma falha de condição de corrida: é um ataque que transforma um timing imprevisível em janela determinística, e faz isso sem depender de leaks brutos ou de fallbacks em mitigação desativada. O exploit de Quang Le, da Calif, explora duas corridas sequenciais no AF_PACKET: a primeira entre packet_set_ring() e packet_notifier(), a segunda entre o registro do protocolo e a liberação final do buffer. Em vez de tentar acertar nanossegundos com loops cegos, ele prende o pg_vec_lock via tpacket_snd() com sleep, depois estica a segunda janela com um timerfd configurado para disparar exatamente após 720.000 entradas, um truque que converte latência de fila de espera em controle de execução.

O estágio final, syscall patching, é raro em ambientes modernos: ele sobrescreve entradas na tabela de chamadas do kernel (sys_call_table) após bypassar KASLR via anon_pipe_buf_ops, contornando CONFIG_RANDOM_KMALLOC_CACHES com sobreposição precisa de pgv e simple_xattr. Isso significa que, mesmo em kernels com SLAB_VIRTUAL e alocações aleatórias, o atacante consegue escrever onde quer, e executar código privilegiado como root dentro do host, não só no container.

Por que isso importa

Essa vulnerabilidade afeta qualquer sistema com user namespaces habilitados (padrão em Docker, Podman e Kubernetes com securityContext.privileged: false) e CAP_NET_RAW concedido, o que inclui muitos workloads de rede em produção. Não exige acesso físico nem credenciais: basta um shell dentro de um contêiner mal configurado. A correção no kernel 6.16 fecha a janela, mas distribuições antigas ainda em uso (como Oracle Linux 7/8, SUSE 15 SP4) dependem de backports críticos lançados entre outubro e janeiro de 2026. Empresas que adiam atualizações de kernel por compatibilidade de driver ou certificação estão expostas, e não há workaround eficaz além de aplicar o patch ou desabilitar user namespaces, o que quebra funcionalidades essenciais em ambientes cloud-native.

Perguntas frequentes

Posso ser explorado mesmo sem ter root ou acesso direto ao host?

Sim. Basta um usuário não privilegiado dentro de um contêiner com CAP_NET_RAW, algo comum em aplicações que capturam tráfego de rede (como Wireshark, tcpdump ou ferramentas de observabilidade). O exploit não precisa de root no host nem de interação externa.

O que torna esse exploit diferente de outros UAF no kernel?

Ele vence duas condições de corrida consecutivas de forma determinística, sem depender de probabilidades ou de leaks massivos. Usa técnicas de temporização fina (timerfd + pg_vec_lock) para transformar latência em controle, e opera mesmo com mitigações modernas ativadas, como SLAB_VIRTUAL e randomização de caches.

Quais versões do kernel estão realmente corrigidas?

A correção foi incorporada no kernel 6.16, lançado em agosto de 2025. Distribuições mais antigas (Debian 11, Ubuntu 20.04, Oracle Linux 7/8) receberam backports entre outubro de 2025 e janeiro de 2026. Kernel 6.15 e anteriores permanecem vulneráveis se não tiverem o commit 01d3c8417b9c aplicado.

Existe um workaround que não exija atualizar o kernel?

Desabilitar user namespaces no host (via sysctl kernel.unprivileged_userns_clone=0 ou boot parameter) bloqueia o vetor de exploração, mas quebra containers rootless, Podman e muitos recursos de segurança do Kubernetes. Não é viável em ambientes produtivos, o patch é a única solução robusta.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Segurança da Informação
Publicado
09 de março de 2026
Editoria
CEVIU Segurança da Informação

Quer receber mais sobre CEVIU Segurança da Informação?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser