Desligar sandboxes sem privilégio (user namespaces)
Os user namespaces dão aos programas comuns muito código do kernel para atacar. Desligá-los remove boa parte da superfície.
Por que importa
Namespaces de usuário permitem que um programa comum finja ser administrador dentro de um espaço privado. Isso é útil para sandboxes, mas também expõe muito código privilegiado do kernel a usuários sem privilégio, e muitas escaladas de privilégio locais começaram aí. Desligar encolhe essa superfície.
Como funciona
Define user.max_user_namespaces como 0, então ninguém cria novos namespaces de usuário. Programas já rodando dentro de um continuam, mas novos não conseguem iniciá-los.
Quem deve usar
Só para máquinas trancadas onde você não usa Flatpak, contêineres rootless ou navegador em sandbox. Para a maioria dos desktops é uma troca: essas sandboxes também protegem você, e removê-las pode deixá-lo menos seguro.
O que você pode notar
Aplicativos Flatpak falham com um erro do bwrap sobre criar namespace. Chromium e Firefox podem avisar que a sandbox deles está indisponível. Contêineres rootless e muitos AppImages param de iniciar.
Verifique no seu computador
Leia o valor atual:
sysctl user.max_user_namespaces Aplique à mão
Defina agora (até a próxima reinicialização):
sudo sysctl -w user.max_user_namespaces=0 Mantenha após reinicializações, em um arquivo seu:
sudo tee /etc/sysctl.d/90-kernel-user-namespaces.conf <<'EOF'
user.max_user_namespaces = 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
- Linux kernel documentation
- user.max_user_namespaces