Resumo Rápido

7.0.4

CVE-2026-31431

  • Fragnesia (também chamado de Copy Fail 3.0) é um exploit universal de escalação de privilégios locais no Linux que permite a um usuário sem privilégios obter acesso root com 100% de confiabilidade.
  • Ele explora um bug de lógica no subsistema XFRM ESP-in-TCP subsystem onde o kernel "esquece" que um fragmento de memória é compartilhado durante um processo chamado coalescing.
  • Ao manipular essa falha, um atacante pode escrever bytes arbitrários no page cache de arquivos read-only, como /etc/passwd ou /usr/bin/su, para burlar verificações de segurança e obter um shell root.

Fragnesia: O Buraco na Memória que Concede Acesso Root no Linux

Pesquisadores de segurança acabam de descobrir uma nova forma de assumir o controle de sistemas Linux. Chama-se Fragnesia. Este exploit é o membro mais recente da família de vulnerabilidades Dirty Frag.

Descoberto por William Bowling e pela equipe V12, o Fragnesia permite que um usuário sem privilégios obtenha privilégios de root com 100% de confiabilidade.

Diferente de muitos exploits que dependem de sorte ou timing, o Fragnesia é um bug de lógica determinístico. Isso significa que ele funciona todas as vezes, tornando-se um "pesadelo" para administradores de sistemas.

Por que o Nome Fragnesia?

O nome é uma combinação de "fragmento" e "amnésia". Como os pesquisadores explicam, o bug central ocorre porque um buffer de rede (chamado de skb) "esquece" que um pedaço de memória é compartilhado durante um processo chamado coalescing.

Quando o kernel do Linux tenta economizar tempo mesclando pacotes de rede, ele perde um marcador de segurança crítico chamado SKBFL_SHARED_FRAG. Sem esse marcador, o kernel pensa que a memória é privada e segura para modificar. Na realidade, essa memória ainda está conectada a um arquivo sensível no page cache.

Do Dirty Pipe ao Fragnesia

O Fragnesia está sendo chamado de "Copy Fail 3.0" porque refina uma classe de bugs que começou com o Dirty Pipe. Essas vulnerabilidades compartilham um objetivo comum: escrever dados em arquivos read-only na memória do sistema (RAM).

Conforme observado no relatório técnico, o Fragnesia tem como alvo específico o subsistema ESP-in-TCP subsystem. Ao enganar o kernel para realizar descriptografia in-place em memória compartilhada, um atacante pode "inverter" bytes em arquivos que ele só deveria poder ler, such como /etc/passwd ou /usr/bin/su.

Como o Exploit Funciona

O exploit usa um truque engenhoso envolvendo criptografia AES-GCM. Aqui está o processo passo a passo de como ele assume o controle de um sistema:

  • Preparando o Terreno: O atacante constrói uma tabela de consulta de "bytes de keystream" variando um valor chamado nonce.
  • O Gatilho Splice: O exploit usa a chamada de sistema splice() para plantar uma página de arquivo read-only diretamente em um socket de rede.
  • O XOR na Memória: Ao selecionar o nonce perfeito, o atacante força o kernel a fazer XOR de um byte específico diretamente na página do arquivo em cache.
  • Construindo o Shell: Esse processo se repete byte a byte até que o atacante tenha escrito um pequeno stub de shell root sobre os primeiros 192 bytes do binário /usr/bin/su na memória.

Assim que o binário "sujo" está pronto no cache, o atacante simplesmente executa su. O kernel executa a versão modificada, burla todas as verificações de segurança e coloca o usuário em um shell root.

Um Detalhe Surpreendente sobre o Fragnesia

Conforme afirmado na seção anterior, o exploit Fragnesia foi projetado para ser completamente determinístico usando uma "tabela de consulta de keystream" construída através do bloco de contador AES-GCM.

Ao testar 65,536 nonces antecipadamente, o atacante cria um mapa de cada valor de byte possível que o processo de descriptografia do kernel fará XOR no arquivo alvo.

Isso permite que ele "inverta" qualquer byte em um arquivo para um valor desejado específico, um byte de cada vez, sem nunca precisar vencer uma condição de corrida.

Distribuições Linux Afetadas pelo Fragnesia

Se você usa Linux, provavelmente está no escopo. Os pesquisadores confirmaram que todas as versões afetadas pelo Dirty Frag original também são vulneráveis ao Fragnesia. Isso inclui qualquer kernel que não tenha aplicado o patch específico de coalescing lançado em May 13, 2026.

Grandes distribuições como Ubuntu são alvos confirmados. No entanto, usuários do Ubuntu têm uma ligeira vantagem porque o AppArmor restringe os namespaces de usuário sem privilégios necessários para parte do exploit por padrão.

Como Mitigar a Vulnerabilidade Fragnesia

A melhor defesa é atualizar seu kernel para uma versão que inclua o patch de May 13th.

Se você não puder aplicar o patch ainda, deve aplicar uma mitigação temporária desabilitando os módulos de rede vulneráveis.

Conforme recomendado no post do oss-security, você pode bloquear o exploit executando estes comandos para incluir na lista negra os módulos esp e rxrpc:

rmmod esp4 esp6 rxrpc
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf

Executar o Exploit de Teste Fragnesia

Pré-requisitos para Teste:

  • Sistema Alvo: O sistema deve estar executando uma versão de kernel afetada sem o patch de coalescing.
  • Nota para Ubuntu: Como o Ubuntu restringe namespaces de usuário sem privilégios por padrão, você deve primeiro habilitá-los executando: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0.
  • Arquivo Alvo: O exploit tem como alvo /usr/bin/su por padrão para obter um shell root.

Passos para Execução

Passo 1: Clone o Repositório:

Baixe o código de prova de conceito do GitHub:

git clone https://github.com/v12-security/pocs.git

Passo 2: Navegue até o Diretório:

cd pocs/fragnesia

Passo 3: Compile o Exploit:

Use o GCC para construir o executável:

gcc -o exp fragnesia.c

Passo 4: Execute o Exploit:

Execute o binário compilado:

./exp

Aqui está como o Exploit Funciona:

  • Configuração de Namespace: O binário chama unshare(CLONE_NEWUSER | CLONE_NEWNET) para obter privilégios CAP_NET_ADMIN dentro de um sandbox.
  • Geração de Keystream: Ele constrói uma tabela de consulta de 256 entradas mapeando bytes de keystream AES-GCM para nonces específicos.
  • Gatilhando a Escrita: O exploit usa um gatilho "Splice-then-ULP" onde ele faz splice de dados do arquivo alvo em um stream TCP e então atrasa a instalação do protocolo ESP-in-TCP.
  • O Bug de Lógica: Quando o protocolo é habilitado, o kernel "esquece" que os fragmentos são compartilhados com o page cache durante o coalescing. Ele então realiza incorretamente a descriptografia in-place, fazendo XOR do keystream diretamente na página do arquivo em cache.
  • Injeção de Payload: Este processo itera byte a byte para sobrescrever os primeiros 192 bytes de /usr/bin/su na memória com um stub de shell root.

Limpeza Crítica Pós-Exploit

Após executar um exploit de teste, seu page cache está contaminado. Qualquer uso posterior dos arquivos corrompidos pode levar à instabilidade. Você deve reiniciar seu sistema ou limpar manualmente o cache executando echo 1 | tee /proc/sys/vm/drop_caches para ensure que você está seguro.