Vulnerabilidade no kernel Linux

Novo exploit 'pedit COW' no Linux permite acesso root ao infectar binários em cache

Uma falha no subsistema de controle de tráfego do kernel Linux permite que um usuário local sem privilégios obtenha acesso root em sistemas afetados, infectando a cópia em cache de binários setuid diretamente na memória.


Swati Khandelwal Sexta - 26 de Junho de 2026 às 15:02
The Hacker News

Uma falha no subsistema de controle de tráfego (tc) do kernel Linux permite que um usuário local sem privilégios obtenha acesso root em sistemas afetados.

CVE-2026-46331 (Identificador Público de Vulnerabilidades), apelidada de "pedit COW" (Copy-on-Write, ou cópia na escrita), é uma escrita fora dos limites (out-of-bounds write) na ação de edição de pacotes (act_pedit) que corrompe a memória compartilhada do cache de páginas. Um exploit público e funcional surgiu em menos de um dia após a atribuição do CVE, em 16 de junho. A Red Hat classifica a falha como importante.

O exploit nunca toca o arquivo em disco. Ele envenena a cópia em cache de um binário setuid (que concede ao executar os privilégios do dono do arquivo) do root (/bin/su) na memória, injeta um pequeno payload (código de exploração) e executa essa imagem alterada como root. Verificações de integridade de arquivos voltam limpas enquanto um shell root já está aberto.

O exploit precisa de duas condições: o act_pedit ser carregável e namespaces (espaços de nomes) de usuário sem privilégios estarem abertos, o que concede ao atacante uma capacidade de rede local ao namespace (CAP_NET_ADMIN, capacidade de administração de rede) necessária para acionar a falha.

Nos alvos testados de RHEL (Red Hat Enterprise Linux) e Debian, ambas as condições estavam presentes.

Como a falha funciona

A ferramenta tc (controle de tráfego) do Linux pode reescrever cabeçalhos de pacotes em trânsito usando uma ação chamada pedit. A função do kernel que faz isso, tcf_pedit_act(), deveria fazer uma cópia privada dos dados antes de editá-los, seguindo o padrão clássico de copy-on-write (cópia na escrita).

Essa função verificou a faixa gravável apenas uma vez, antes que os deslocamentos finais fossem conhecidos. Algumas chaves de edição só resolvem seu deslocamento em tempo de execução. Quando isso acontece, a escrita cai fora da região copiada de forma privada, e o kernel modifica uma página compartilhada do cache de páginas em vez de uma cópia privada. Se essa página pertence a um arquivo em cache, a imagem do arquivo na memória é corrompida.

O padrão é conhecido. Dirty Pipe, Copy Fail, DirtyClone e Dirty Frag compartilham a mesma forma: um caminho rápido do kernel escreve em uma página que não é de sua propriedade exclusiva, e o cache de páginas é afetado.

O que há de novo aqui é o ponto de entrada. Um usuário sem privilégios pode configurar ações do tc dentro de um namespace de usuário, o que concede a ele a capacidade CAP_NET_ADMIN (administração de rede) que o exploit precisa.

Sistemas afetados

O autor da PoC (Proof of Concept, prova de conceito) relatou exploração de sem privilégios a root no RHEL 10 e no Debian 13 (trixie), onde namespaces de usuário sem privilégios estão abertos por padrão. O Ubuntu 24.04 exigiu roteamento de execução por meio de perfis do AppArmor (módulo de segurança do Linux) que ainda permitem namespaces de usuário. O Ubuntu 26.04 bloqueia esse caminho por padrão porque seus perfis do AppArmor restringem namespaces de usuário sem privilégios, embora o kernel subjacente permaneça vulnerável.

As correções variam por fornecedor.

  • O Debian corrigiu o trixie por meio de seu canal de segurança. O Debian 11 e 12 ainda estão listados como vulneráveis.
  • A Ubuntu lista versões suportadas de 18.04 a 26.04 como vulneráveis até 25 de junho.
  • A Red Hat lista RHEL 8, 9 e 10 como afetados; o RHEL 7 não consta no boletim.

O que fazer

Instale o kernel corrigido e reinicie o sistema. Priorize sistemas em que "usuário local" não significa usuário confiável: hosts multilocatários, executores de CI/CD (Integração e Entrega Contínuas), nós de Kubernetes, workers de build e máquinas compartilhadas de pesquisa ou laboratório.

Se ainda não for possível aplicar a correção, duas mitigações eliminam a cadeia do exploit. Em sistemas que não precisam de regras tc pedit, verifique se o módulo está em uso (lsmod | grep act_pedit) e, em seguida, bloqueie seu carregamento.

Como alternativa, desative os namespaces de usuário sem privilégios (user.max_user_namespaces=0 no RHEL, kernel.unprivileged_userns_clone=0 no Debian/Ubuntu). Isso remove a capacidade local ao namespace que o exploit precisa, mas quebra contêineres sem root, alguns sandboxes (ambientes isolados) de CI e navegadores em sandbox. Teste antes.

Como a sobrescrita tem como alvo a memória em cache, verificações de integridade de arquivos podem não detectá-la. Limpar o cache de páginas (echo 3 > /proc/sys/vm/drop_caches) apaga a cópia envenenada na memória, mas não faz nada contra o shell root que o atacante já abriu. Trate o host como comprometido.

A correção chegou à lista de discussão netdev (desenvolvimento de rede do kernel Linux) no final de maio, apresentada como um patch rotineiro de corrupção de dados. O detalhe explorável ficou em uma lista de discussão pública por semanas. Sem CVE, sem alerta de segurança. O CVE foi atribuído quando a correção foi mesclada, em 16 de junho. A prova de conceito weaponized (com capacidade ofensiva real) veio no dia seguinte. Para falhas de corrupção do cache de páginas do kernel, esperar por uma regra de scanner é lento demais.

Linux Cibersegurança Kernel