O Diário de Analistas
Vol. 2  |  N. 5  |  Pp. 129–132  |  2026  |  ISSN xxxx-xxxx

Fragnesia permite escalonamento local de privilégios universal no Kernel Linux (CVE-2026-46300)

Estamos cientes de uma PoC denominada “Fragnesia”, que se trata de  um exploit de escalonamento local de privilégios (Local Privilege Escalation ou LPE) universal para kernels Linux, rastreado como CVE-2026-46300 (CVSS: 7.8). Foi  divulgado publicamente em 13/05/2026, simultaneamente ao envio do patch corretivo para a lista netdev do kernel.


Contexto e Origem

A Fragnesia é o terceiro LPE crítico no kernel Linux em menos de três semanas, após Copy Fail (CVE-2026-31431, aproximadamente em 29/04) e Dirty Frag (CVE-2026-43284 / CVE-2026-43500, aproximadamente em 07 a 08/05). Embora pertença à mesma família de vulnerabilidades do Dirty Frag, trata-se de um bug distinto (ambas abusam do subsistema XFRM ESP-in-TCP para corromper o page cache) . Os três CVEs estão relacionados: Copy Fail (CVE-2026-31431) foi uma vulnerabilidade anterior, e Dirty Frag (CVE-2026-43284 + CVE-2026-43500) é uma evolução que encadeia dois bugs distintos no kernel Linux para escalonamento local de privilégios determinístico.

Notavelmente, a Fragnesia foi ativada acidentalmente pelo próprio patch do Dirty Frag: a correção anterior estreitou uma superfície de ataque, mas deixou um caminho adjacente aberto. O patch candidato à Fragnesia carrega duas tags Fixes:  uma apontando para o commit do Dirty Frag (f4c50a4034e6) e outra para um commit de 2013 (cef401de7be8),  indicando que o bug de coalescing subjacente existe há mais de uma década.

Vulnerabilidade CVE Divulgação
Copy Fail CVE-2026-31431 ~29/04/2026
Dirty Frag CVE-2026-43284 / CVE-2026-43500 ~07 a 08/05/2026
Fragnesia CVE-2026-46300 13/05/2026

Como a vulnerabilidade é explorada

Um usuário local sem privilégios explora uma falha no modo como o kernel Linux gerencia páginas de memória durante operações de rede IPsec. Usando recursos padrão do sistema, o atacante consegue fazer o kernel tratar o conteúdo de um arquivo somente-leitura (como, por exemplo  /usr/bin/su ) como se fosse dados criptografados a serem processados, substituindo partes do arquivo na memória por código malicioso. Como o atacante controla a chave criptográfica usada nesse processo, ele calcula exatamente quais valores inserir para obter o resultado desejado. O arquivo em disco não é alterado, mas quando o sistema executa o binário adulterado na memória, o atacante obtém acesso root. O processo é determinístico — não depende de sorte ou de explorar janelas de tempo — o que o torna especialmente confiável e perigoso.


Versões Afetadas

Todos os kernels afetados pelo Dirty Frag (CVE-2026-43284) são igualmente vulneráveis à Fragnesia. A janela efetiva vai de  aproximadamente entre 07 a 08/05/2026 (data do patch do Dirty Frag) até 13/05/2026 (data do patch da Fragnesia).

Atenção: Kernels que receberam apenas o patch do Dirty Frag não estão protegidos contra a Fragnesia. Um patch separado é necessário. Distribuições com restrição de namespaces não-privilegiados por padrão (como Ubuntu com AppArmor) bloqueiam parcialmente o PoC público, exigindo técnicas adicionais para a exploração.

Referência do patch upstream: https://lore.kernel.org/netdev/20260513041635.1289541-1-vakzz@zellic.io/


Status de Exploração

Até o momento dessa escrita, não há evidências de exploração ativa em larfga escala (confirmado por Microsoft e Tenable). O PoC público foi lançado imediatamente após a divulgação, sem embargo, e está disponível no repositório GitHub da equipe V12.


Mitigações

1. Mitigação imediata (idêntica à do Dirty Frag)

Descarregue os módulos vulneráveis:

% sudo rmmod esp4 esp6 rxrpc

Bloqueie o carregamento permanente adicionando ao /etc/modprobe.d/dirtyfrag.conf:

# install esp4 /bin/false
# install esp6 /bin/false
# install rxrpc /bin/false

Atenção: Desabilitar esp4/esp6 interrompe túneis IPsec (strongSwan/Libreswan). Não aplique em hosts que terminam ou transitam tráfego IPsec. O módulo rxrpc é usado quase exclusivamente por clientes AFS e raramente presente em servidores típicos.

2. Limpeza do page cache (se o sistema pode ter sido alvo antes da mitigação)

% sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

Isso força o reload dos binários do disco, eliminando qualquer modificação in-memory que possa ter ocorrido antes da aplicação da mitigação.

3. Correção definitiva: atualização do kernel

Atualize o kernel com o patch corretivo. Status por distribuição:

Distribuição Status
AlmaLinux Patch disponível OK
CloudLinux Patch disponível OK
openSUSE Patch disponível OK
RHEL / CentOS Stream Em avaliação pela Red Hat
Ubuntu Verificar canais de atualização

Soluções de live patching (ex.: KernelCare) também estão sendo preparadas para aplicação sem necessidade de reboot.


Apêndice Técnico

Você pode ignorar essa seção, caso não queira ver os detalhes debaixo do capô do motor 🙂

1. Descrição Técnica

A vulnerabilidade explora um bug lógico no subsistema XFRM ESP-in-TCP do kernel Linux, permitindo escrita arbitrária de bytes no page cache de arquivos somente-leitura, sem necessidade de condição de corrida.

A causa raiz reside na função skb_try_coalesce(): ao transferir fragmentos paginados entre buffers (sk_buff), ela deixava de propagar o marcador SKBFL_SHARED_FRAG. Com isso, o kernel perdia o rastreamento de que aquele fragmento era respaldado por páginas do page cache (obtidas, por exemplo, via splice de um arquivo). O caminho de recepção ESP-in-TCP do XFRM, ao verificar skb_has_shared_frag(), concluía equivocadamente que era seguro ignorar o skb_cow_data() (copy-on-write), realizando a descriptografia AES-GCM in-place diretamente sobre as páginas em cache — que pertencem ao arquivo original somente-leitura.

A técnica estende a mesma classe de bugs de page cache do Dirty Frag: ao transitar um socket TCP para modo espintcp após o splice de dados de um arquivo para a fila de recepção, o kernel processa as páginas como ciphertext ESP, XORando bytes do keystream AES-GCM diretamente nas páginas em cache.

2. Funcionamento do Exploit

(Fonte: TuxCare — Fragnesia Technical Analysis)

O PoC constrói uma tabela de lookup de 256 entradas para mapear bytes de keystream a nonces, iterando sobre um payload para modificar bytes específicos via splice/ULP. O fluxo de execução é:

  1. Cria novos namespaces de usuário e rede via unshare(CLONE_NEWUSER | CLONE_NEWNET), obtendo CAP_NET_ADMIN dentro do namespace isolado — sem privilégios no host.
  2. Instala uma Security Association ESP-in-TCP via NETLINK_XFRM com AES-128-GCM e chave conhecida.
  3. Escreve um stub ELF position-independent (setresuid/setresgid/execve /bin/sh) nos primeiros 192 bytes de /usr/bin/su no page cache.
  4. Executa execve("/usr/bin/su"), obtendo shell root.

As alterações não persistem em disco: o binário original é intacto. Um reboot ou flush do page cache restaura o estado normal. Importante: o exploit não está limitado ao /usr/bin/su — qualquer arquivo legível pelo atacante é alvo em potencial, incluindo /etc/passwd.

 


Referências

  1. Patch upstream — netdev mailing list
  2. Tenable — CVE-2026-46300 FAQ
  3. TuxCare — Fragnesia Technical Analysis

Tags: , , , , , , .

Categorias: Alerta, CentOS, CVE, Debian, Falhas, Kernel, Linux, Linux Kernel, LPE, LTE, OpenSUSE, Red Hat, Ubuntu, Vulnerabilidade.