
xfs kernel LPE (CVE-2026-64600), divulgado pela Qualys em 22 de julho de 2026
(originalmente RefluXFS ou CVE-2026-64600)
O nome descreve o mecanismo:
No entanto, os créditos oficiais pertencem à Qualys e ao seu RefluXFS (CVE-2026-64600),
divulgado via oss-security.
O COWSlip foi criado de forma independente a partir do patch aplicado no branch
for-next do xfs. O RefluXFS da Qualys foi descoberto uma semana antes e foi
corrigido como null-day.
O COWSlip é um PoC one-day baseado na correção do XFS enviada no aviso da Red Hat
RHBA-2026:39332, que foi
marcado como [Exploits (KEV)] (inicialmente).
Após inspecionar o kernel.spec e o diff do SRPM, o patch correspondente foi
encontrado no branch for-next do XFS Linux:
xfs: resample the data fork mapping after cycling ILOCK
O momento foi notável: a correção apareceu em uma atualização de kernel empresarial pouco depois de a mudança correspondente chegar ao branch de desenvolvimento. Em resumo, o patch corrige uma primitiva de escalação local de privilégios no XFS. A explorabilidade depende do layout do sistema de arquivos e da configuração de setuid; é especialmente relevante para instalações da família RHEL que usam XFS para o sistema de arquivos raiz.
O PoC tem como alvo um kernel XFS pré-correção com reflink habilitado, um alvo
ELF setuid existente pertencente ao root (/usr/bin/su por padrão) e um
diretório de clone gravável pelo usuário no mesmo sistema de arquivos XFS. Por
padrão, o alvo é /usr/bin/su e o diretório de clone é /tmp/cowslip-clones,
portanto /tmp deve estar nesse sistema de arquivos XFS. Ele faz corrida entre
escritas CoW de I/O direto alinhadas e clones reflink, substitui o caminho do
interpretador ELF do alvo no primeiro bloco disputado e inicia /bin/bash -p
quando o alvo setuid executa o loader.
Compilação:
gcc -O2 -Wall -Wextra -pthread poc.c -o /tmp/cowslip
gcc -nostdlib -static-pie -s -Wl,-e,_start -o /tmp/cowslip-loader loader.S
O loader static-PIE é necessário para o caminho do kernel EL8 mais antigo; o antigo loader ET_EXEC pode causar segfault antes de iniciar o shell.
Execute como usuário sem privilégios com o alvo e o diretório de clone no mesmo sistema de arquivos XFS com reflink habilitado:
/tmp/cowslip
Controles opcionais são POC_TARGET, POC_TRIES e POC_THREADS:
POC_TARGET=/usr/bin/su POC_TRIES=20000 POC_THREADS=32 /tmp/cowslip
O PoC intencionalmente não restaura o alvo após um acerto. A partir de um login root normal, reinstale o pacote proprietário e verifique-o:
dnf -y reinstall util-linux || yum -y reinstall util-linux
rpm -V util-linux
Um resultado vazio de rpm -V indica que os arquivos do pacote correspondem ao
banco de dados de pacotes instalados.
Kernels testados:
6.12.0-211.33.1.el10_2: acerto5.14.0-687.25.1.el9_8: acerto5.14.0-687.26.1.el9_8: sem acerto; este kernel contém a correção do XFS4.18.0-553.143.1.el8_10: acerto4.18.0-553.144.1.el8_10: sem acerto; este kernel contém a correção do XFSCorreção: xfs: resample the data fork mapping after cycling ILOCK
Introduzido por 3c68d44a2b49a0 na v4.11; afetado até que a correção de reamostragem seja aplicada.
O gatilho requer um sistema de arquivos XFS com reflink habilitado, um alvo ELF setuid pertencente ao root nesse sistema de arquivos e um diretório no mesmo sistema de arquivos que seja gravável pelo usuário sem privilégios.