Endurecer o compilador do eBPF
Torna mais difícil abusar do código que o compilador do eBPF produz em ataques que introduzem instruções escolhidas.
Por que importa
Programas eBPF viram código de máquina por um compilador just-in-time. Um atacante que consegue carregar um programa pode forjar constantes dentro dele para que, lidas de um deslocamento diferente, virem instruções escolhidas por ele. Isso se chama JIT spraying, e o endurecimento existe para impedir.
Como funciona
Define net.core.bpf_jit_harden como 2. Proteções como a ofuscação de constantes passam a valer para programas eBPF de todos os usuários, não só os sem privilégio. A documentação do kernel observa que custa alguma performance e que vale quando o JIT está em uso.
Quem deve usar
Uma precaução barata para quase todos. Máquinas com processamento pesado de pacotes em eBPF, que se importam com cada bit de velocidade, podem preferir medir antes.
O que você pode notar
Normalmente nada. Programas eBPF podem rodar um pouco mais devagar, o que só aparece em cenários carregados de rede ou rastreio.
Verifique no seu computador
Leia o valor atual:
sysctl net.core.bpf_jit_harden Um valor mais restritivo que este também serve.
Aplique à mão
Defina agora (até a próxima reinicialização):
sudo sysctl -w net.core.bpf_jit_harden=2 Mantenha após reinicializações, em um arquivo seu:
sudo tee /etc/sysctl.d/90-kernel-bpf-jit-harden.conf <<'EOF'
net.core.bpf_jit_harden = 2
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
- net.core.bpf_jit_harden