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.