Restringir o userfaultfd

Risco baixo Marcada por padrão no IbexWall Catálogo revisado em: 2026-11-05

Um programa comum não pode mais usar o lado do kernel desta interface, que atacantes usaram para cronar seus movimentos com precisão. Programas que tratam a própria memória em espaço de usuário continuam funcionando.

Por que importa

A chamada de sistema userfaultfd deixa um programa tratar faltas de página por conta própria. Atacantes a usaram para pausar o kernel num momento exato, alargando uma janela de tempo pequena o bastante para vencer uma corrida num erro como um use-after-free. Tirar a forma kernel dessa chamada de usuários comuns dificulta muitas dessas explorações.

Como funciona

Define vm.unprivileged_userfaultfd como 0. Segundo a documentação do kernel, usuários sem CAP_SYS_PTRACE passam a poder usar userfaultfd só para faltas que ocorrem em modo usuário, passando a flag UFFD_USER_MODE_ONLY. O acesso por /dev/userfaultfd pode ser concedido à parte.

Quem deve usar

Serve para quase todo desktop e servidor. Reveja se você usa migração a quente de máquinas virtuais, ferramentas de checkpoint e restore, ou outro software construído sobre userfaultfd.

O que você pode notar

Quase nunca aparece. Software que precisa do userfaultfd completo como usuário comum pode falhar com erro de permissão até receber /dev/userfaultfd ou rodar com mais direitos.

Verifique no seu computador

Leia o valor atual:

sysctl vm.unprivileged_userfaultfd

Aplique à mão

Defina agora (até a próxima reinicialização):

sudo sysctl -w vm.unprivileged_userfaultfd=0

Mantenha após reinicializações, em um arquivo seu:

sudo tee /etc/sysctl.d/90-kernel-userfaultfd.conf <<'EOF'
vm.unprivileged_userfaultfd = 0
EOF
sudo sysctl --system

Desfaça

Remova o arquivo e reinicie, ou volte ao valor antigo com sysctl -w.

Configurações relacionadas

Fontes

Linux Hardening Guide (madaidans)
2.2.1