
Um relatório sobre Dirty Frag, que é uma cadeia de vulnerabilidades de Escalação de Privilégio Local (LPE) do Linux que permite que um usuário não privilegiado obtenha acesso root.
Este repositório documenta a reprodução ponta a ponta, engenharia de detecção e resposta a incidentes para a cadeia de escalação de privilégio local (LPE) do kernel Linux Dirty Frag. Dirty Frag encadeia dois bugs de lógica determinísticos—CVE‑2026‑43284 (xfrm/ESP) e CVE‑2026‑43500 (RxRPC)—para permitir que um usuário local não privilegiado sobrescreva o cache de páginas de arquivos somente leitura (por exemplo, /usr/bin/su) e obtenha um shell root.
Dirty Frag é um erro de lógica, não uma corrupção de memória. É determinístico, afeta virtualmente toda distribuição Linux lançada desde 2017, e é completamente sem arquivo—o monitoramento tradicional de integridade de arquivos (AIDE, Tripwire) não consegue vê-lo. O PoC público é um único arquivo C que encadeia ambos os caminhos ESP e RxRPC.
| Componente | Detalhes |
|---|---|
| Hypervisor | VirtualBox |
| VM Alvo |
O laboratório começa confirmando que o alvo está executando um kernel vulnerável.
cat /etc/os-release | head -3
uname -r
📸 screenshots/pre_exploit_id.png — Detalhes da versão e kernel do Kali 2026.1. A saída de uname -r mostra o kernel vulnerável 6.18.12+kali‑amd64.
O exploit requer os módulos do kernel esp4, esp6 e rxrpc.
lsmod | grep -E "esp4|esp6|rxrpc"
modinfo esp4 esp6 rxrpc 2>/dev/null | grep -E "^(name|depends)"
📸 screenshots/module_mitigation.png — lsmod e modinfo confirmam que os módulos vulneráveis estão disponíveis.
A variante baseada em Python do PoC precisa de Python 3.10+. Verificamos o interpretador.
python3 --version
Python 3.12 está instalado e pronto.
Antes de executar o exploit completo, um script verificador seguro confirma se o sistema está vulnerável.
python3 poc/check_vulnerable.py
O verificador relata "potencialmente vulnerável", abrindo caminho para a exploração.
Uma conta de usuário não privilegiado testuser simula um atacante sem direitos especiais.
sudo useradd -m testuser
sudo passwd testuser
su - testuser
id
📸 id mostra UID 1001, confirmando acesso não root.
O PoC oficial do V4bel é clonado e compilado a partir da conta não privilegiada.
git clone https://github.com/V4bel/dirtyfrag.git
cd dirtyfrag
gcc -O0 -Wall -o exp exp.c -lutil
./exp
📸 screenshots/exploit_execution.png — O exploit sobrescreve o cache de páginas de /usr/bin/su e detona o binário corrompido.
📸 screenshots/post_exploit_root.png — As saídas de whoami e id comprovam a escalação total para root.
O exploit corrompe apenas o cache de páginas na memória. O /usr/bin/su em disco mantém seu checksum original.
sha256sum /usr/bin/su
O sha256sum corresponde ao hash original do pacote mesmo após a exploração, confirmando que não houve modificação em disco.
Após executar o exploit, o cache de páginas está contaminado. Sempre limpe-o:
echo 3 | sudo tee /proc/sys/vm/drop_caches
# Ou reinicie o sistema
Dirty Frag não pode ser detectado pelo monitoramento de integridade de arquivos. Em vez disso, focamos nas primitivas no nível de chamadas de sistema que ele utiliza.
Implantamos regras auditd personalizadas que acionam em:
# /etc/audit/rules.d/dirtyfrag.rules
-a always,exit -F arch=b64 -S socket -F a0=38 -F uid!=0 -k dirtyfrag_af_alg
-a always,exit -F arch=b64 -S socket -F a0=21 -F uid!=0 -k dirtyfrag_rxrpc
-a always,exit -F arch=b64 -S splice -F uid!=0 -k dirtyfrag_splice
-a always,exit -F arch=b64 -S unshare -F uid!=0 -k dirtyfrag_namespace
-w /usr/bin/su -p r -k dirtyfrag_suid_read
Todas as regras personalizadas estão ativas, verificadas com auditctl -l.
Após executar o exploit uma segunda vez, vemos alertas para as chamadas de sistema exatas usadas:
Uma regra Sigma traduz os achados do auditd em um formato de SIEM neutro de fornecedor.
File: detection/sigma/dirty_frag_exploit.yml
Uma regra YARA ajuda a identificar código do exploit Dirty Frag em disco e na memória.
File: detection/yara/dirty_frag_exploit.yar
Um relatório completo de resposta a incidentes está disponível em reports/incident-dirtyfrag.md. Ele inclui:
Mitigação imediata (nenhuma reinicialização necessária):
echo "install esp4 /bin/false" | sudo tee /etc/modprobe.d/dirtyfrag.conf
echo "install esp6 /bin/false" | sudo tee -a /etc/modprobe.d/dirtyfrag.conf
echo "install rxrpc /bin/false" | sudo tee -a /etc/modprobe.d/dirtyfrag.conf
sudo rmmod esp4 esp6 rxrpc 2>/dev/null
⚠️ Impacto: Desabilitar esses módulos quebra funcionalidades de VPNs IPsec e sistema de arquivos AFS.
Um script de mitigação pronto para uso está incluído em mitigation/dirtyfrag_mitigation.sh.
Correção permanente: Atualize seu kernel para uma versão corrigida.
| Kali Linux 2026.1 |
| Kernel | 6.18.12+kali‑amd64 |
| Exploit PoC | V4bel/dirtyfrag |
| Detecção | auditd, Sigma, YARA |
| Camada | O que Observa | Status |
|---|
| auditd | Chamadas socket AF_ALG/AF_RXRPC + splice + unshare | ✅ Implantado |
| Sigma | Padrões de chamadas de sistema via SIEM | ✅ Regra pronta |
| YARA | Código PoC em disco / na memória | ✅ Regra pronta |
| FIM (AIDE/Tripwire) | Alterações de arquivo | ❌ Cego – nenhuma escrita em disco ocorre |