Restringir o eBPF a administradores
O eBPF deixa programas executar código dentro do kernel e é fonte constante de falhas. Isto o limita a programas privilegiados.
Por que importa
O eBPF permite que programas carreguem pequenos trechos de código que o kernel executa por eles. O kernel verifica esse código com um verificador, e erros nesse verificador repetidamente permitiram que usuários comuns escapassem para o controle total da máquina. Se só programas privilegiados puderem carregar eBPF, esses erros ficam fora do alcance dos demais.
Como funciona
Define kernel.unprivileged_bpf_disabled como 1. Chamadas a bpf() sem CAP_BPF ou CAP_SYS_ADMIN passam a falhar com erro de permissão. A documentação do kernel diz que, uma vez em 1, o valor não volta a 0 sem reiniciar; o valor 2 desativa, mas deixa um administrador mudar depois.
Quem deve usar
Certo para a maioria dos desktops e servidores. Deixe desligado se você roda ferramentas eBPF como usuário comum, como alguns experimentos de rastreio ou rede.
O que você pode notar
Programas que carregam eBPF sem privilégios falham com Operation not permitted. Rode-os como root ou com a capacidade certa. Software de desktop raramente precisa disso.
Verifique no seu computador
Leia o valor atual:
sysctl kernel.unprivileged_bpf_disabled Um valor mais restritivo que este também serve.
Aplique à mão
Defina agora (até a próxima reinicialização):
sudo sysctl -w kernel.unprivileged_bpf_disabled=1 Mantenha após reinicializações, em um arquivo seu:
sudo tee /etc/sysctl.d/90-kernel-unprivileged-bpf.conf <<'EOF'
kernel.unprivileged_bpf_disabled = 1
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
- kernel.unprivileged_bpf_disabled