
Exploração determinística de escalonamento de privilégios local no kernel Linux que encadeia duas primitivas de escrita em page-cache (xfrm/ESP e RxRPC) para acesso root confiável em todas as principais distribuições desde 2017.
Escalação Universal de Privilégios no Kernel Linux
| Campo | Detalhe |
|---|---|
| CVE | CVE-2026-43284 (xfrm/ESP) + CVE-2026-43500 (RxRPC) |
| Apelido | Dirty Frag |
| CVSS | 7.8 HIGH |
| Tipo | Escalação Local de Privilégios (LPE) |
| Introduzido | Linux kernel 4.10 (2017, commit cac2661c53f3) |
| Corrigido | Commits da mainline f4c50a4034e6 / aa54b1d27fe0 |
| Requisitos | Acesso local a shell sem privilégios |
| Vetor remoto | Nenhum — apenas local |
| Divulgado | 7 de maio de 2026 por Hyunwoo Kim (@v4bel) |
Uma falha lógica nos subsistemas xfrm/ESP e RxRPC do kernel Linux permite que um usuário local sem privilégios realize uma gravação arbitrária determinística e controlada no page cache de qualquer arquivo legível do sistema — incluindo binários setuid como /usr/bin/su.
A causa raiz é a descriptografia in-place insegura de fragmentos compartilhados de socket buffer (skb) que referenciam páginas do page cache, particularmente ao usar splice(2) ou sendfile(2). Isso fornece uma primitiva poderosa de gravação arbitrária no page cache, que pode ser aproveitada para sobrescrever arquivos sensíveis em memória e obter acesso total de root.
Duas primitivas distintas são encadeadas para obter cobertura universal:
xfrm-ESP Page-Cache Write: compartilha o mesmo sink do Copy Fail, mas é acionada via os módulos esp4/esp6, independentemente de algif_aead estar disponível. Requer privilégios de criação de namespaces.RxRPC Page-Cache Write: não requer privilégios de namespace, mas rxrpc.ko deve estar presente (carregado por padrão no Ubuntu). Cobre os pontos cegos do CVE-2026-43284.Encadear as duas variantes faz com que elas cubram os pontos cegos uma da outra, alcançando root confiável em todas as principais distribuições.
Sem condição de corrida. Sem novas tentativas. Sem risco de crash. Determinístico em todas as distribuições testadas.
Importante: Mesmo em sistemas onde a mitigação publicamente conhecida do Copy Fail (lista negra do
algif_aead) é aplicada, o Dirty Frag permanece explorável via CVE-2026-43284.
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Dirty Frag (2026) | |
|---|---|---|---|---|
| Condição de corrida necessária | Sim | Parcial | Não | Não |
| Específico de versão | Sim | Sim | Não | Não |
| Confiabilidade | Instável | Moderada | Determinística | Determinística |
| Cobertura de distribuições | Limitada | Limitada | Todas desde 2017 | Todas desde 2017 |
| Contorna a mitigação do Copy Fail | — | — | N/A | Sim |
algif_aead (solução alternativa do Copy Fail)CVE-2026-43284 (xfrm/ESP): Linux kernel do commit cac2661c53f3 (2017-01-17) até f4c50a4034e6 (2026-05-05).
CVE-2026-43500 (RxRPC): Linux kernel do commit 2dc334f1a63a (2023-06-08) até aa54b1d27fe0 (2026-05-10).
O tempo de vida efetivo da cadeia de vulnerabilidades é de aproximadamente 9 anos.
Todas as principais distribuições que distribuem kernels nesse intervalo são afetadas, incluindo:
| Distribuição | Versão Testada | Status |
|---|---|---|
| Ubuntu 24.04.4 | 6.17.0-23-generic | Afetada — patch sendo distribuído |
| RHEL 10.1 | 6.12.0-124.49.1.el10_1.x86_64 | Afetada — patch sendo distribuído |
| AlmaLinux 10 | 6.12.0-124.52.3.el10_1.x86_64 | Afetada — patch disponível |
| CentOS Stream 10 | 6.12.0-224.el10.x86_64 | Afetada — patch sendo distribuído |
| Fedora 44 | 6.19.14-300.fc44.x86_64 | Afetada — patch disponível |
| openSUSE Tumbleweed | 7.0.2-1-default | Afetada — em andamento |
| Debian | — | Afetada — em andamento |
gcc -O0 -Wall -o exp exp.c -lutil && ./exp
Não use em sistemas nos quais você não está autorizado a testar.
⚠️ Importante: Após executar este exploit, o page cache fica contaminado. Para limpar o page cache poluído e garantir a estabilidade do sistema, execute:
echo 3 > /proc/sys/vm/drop_caches
ou reinicie o sistema.
Atualize para um kernel que contenha as correções da mainline e reinicie.
Corrigido na mainline via:
f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE / openSUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
# Fedora
sudo dnf upgrade --refresh && sudo reboot
Se não for possível aplicar o patch imediatamente, desabilite os módulos vulneráveis e limpe o page cache.
# Blacklist vulnerable modules
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'
# Unload modules immediately
sudo rmmod esp4 esp6 rxrpc 2>/dev/null || true
# Drop page cache
echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
| Componente | Impacto |
|---|---|
| SSH | ✅ Não afetado |
| dm-crypt / LUKS | ✅ Não afetado |
| kTLS / TLS no kernel | ✅ Não afetado |
| OpenSSL / GnuTLS / NSS (builds padrão) | ✅ Não afetado |
| IPsec / XFRM (túneis ESP, VPNs) | ⚠️ Quebra — esp4 e esp6 ficarão indisponíveis |
| Clientes AFS / OpenAFS que usam RxRPC | ⚠️ Quebra — rxrpc ficará indisponível |
Aplicações que usam AF_ALG + AEAD diretamente | ⚠️ Verifique com lsof | grep AF_ALG |
Para cargas de trabalho não confiáveis — contêineres, runners de CI, ambientes com sandbox — restrinja a criação de sockets AF_ALG e splice() via política seccomp ou AppArmor, independentemente do estado do patch. Isso limita a superfície de ataque mesmo em kernels vulneráveis, mas não é uma correção completa.
Verifique se os módulos vulneráveis estão atualmente carregados ou em uso:
# Check if modules are loaded
lsmod | grep -E 'esp4|esp6|rxrpc'
# Check if any process has an AF_ALG socket open
lsof | grep AF_ALG
ss -xa | grep alg
# Confirm workaround is active after reboot
cat /etc/modprobe.d/dirtyfrag.conf
| Recurso | Link |
|---|---|
| Correção na mainline do CVE-2026-43284 | f4c50a4034e6 |
| Correção na mainline do CVE-2026-43500 | aa54b1d27fe0 |
| NVD — CVE-2026-43284 | https://nvd.nist.gov/vuln/detail/CVE-2026-43284 |
| NVD — CVE-2026-43500 | https://nvd.nist.gov/vuln/detail/CVE-2026-43500 |