Reforzar el compilador de eBPF
Hace que el código que produce el compilador de eBPF sea más difícil de aprovechar en ataques que introducen instrucciones elegidas.
Por qué importa
Los programas eBPF se convierten en código máquina mediante un compilador justo a tiempo. Un atacante que logre cargar un programa puede forjar constantes dentro de él para que, leídas desde otro desplazamiento, se conviertan en instrucciones elegidas por él. Esto se llama JIT spraying, y el endurecimiento existe para impedirlo.
Cómo funciona
Fija net.core.bpf_jit_harden en 2. Protecciones como la ofuscación de constantes pasan a aplicarse a los programas eBPF de todos los usuarios, no solo a los sin privilegios. La documentación del kernel advierte de que cuesta algo de rendimiento y de que aplica cuando el JIT está en uso.
Quién debería usarlo
Una precaución barata para casi todos. Los equipos con procesamiento intenso de paquetes en eBPF, que cuidan cada bit de velocidad, pueden preferir medir antes.
Qué puedes notar
Normalmente nada. Los programas eBPF pueden ir algo más despacio, lo que solo se nota en cargas fuertes de red o rastreo.
Compruébalo en tu equipo
Lee el valor actual:
sysctl net.core.bpf_jit_harden Un valor más estricto que este también sirve.
Aplícalo a mano
Establécelo ahora (hasta el próximo reinicio):
sudo sysctl -w net.core.bpf_jit_harden=2 Consérvalo tras los reinicios, en un archivo tuyo:
sudo tee /etc/sysctl.d/90-kernel-bpf-jit-harden.conf <<'EOF'
net.core.bpf_jit_harden = 2
EOF
sudo sysctl --system Deshazlo
Elimina el archivo y reinicia, o vuelve a poner el valor anterior con sysctl -w.
Ajustes relacionados
Fuentes
- Linux Hardening Guide (madaidans)
- 2.2.1
- Linux kernel documentation
- net.core.bpf_jit_harden