Restringir eBPF a los administradores

Riesgo medio Marcado por defecto en IbexWall Catálogo revisado: 2026-11-05

eBPF permite que los programas ejecuten código dentro del kernel y ha sido una fuente constante de fallos. Esto lo limita a los programas con privilegios y refuerza su compilador.

Por qué importa

eBPF permite a los programas cargar fragmentos de código que el kernel ejecuta por ellos. El kernel revisa ese código con un verificador, y fallos en ese verificador han permitido varias veces que usuarios normales tomen el control total de la máquina. Si solo los programas privilegiados pueden cargar eBPF, esos fallos quedan fuera del alcance de los demás.

Cómo funciona

Fija kernel.unprivileged_bpf_disabled en 1. Las llamadas a bpf() sin CAP_BPF o CAP_SYS_ADMIN pasan a fallar con error de permisos. La documentación del kernel dice que, una vez en 1, no vuelve a 0 hasta reiniciar; el valor 2 lo desactiva pero deja que un administrador lo cambie después.

Quién debería usarlo

Correcto para la mayoría de escritorios y servidores. Déjalo apagado si ejecutas herramientas eBPF como usuario normal, como algunos experimentos de rastreo o red.

Qué puedes notar

Los programas que cargan eBPF sin privilegios fallan con Operation not permitted. Ejecútalos como root o con la capacidad adecuada. El software de escritorio habitual casi nunca lo necesita.

Compruébalo en tu equipo

Lee el valor actual:

sysctl kernel.unprivileged_bpf_disabled

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 kernel.unprivileged_bpf_disabled=1

Consérvalo tras los reinicios, en un archivo tuyo:

sudo tee /etc/sysctl.d/90-kernel-unprivileged-bpf.conf <<'EOF'
kernel.unprivileged_bpf_disabled = 1
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
kernel.unprivileged_bpf_disabled