Ocultar las direcciones del kernel

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

Los programas sin derechos especiales ya no pueden leer dónde está cada cosa en la memoria del kernel. Los atacantes usan esas direcciones para apuntar sus ataques.

Por qué importa

Muchas explotaciones del kernel necesitan saber exactamente dónde está un código o un dato en memoria. Las direcciones del kernel pueden filtrarse por varias interfaces, y un atacante que ya ejecuta un programa en tu equipo puede recopilarlas y apuntar la explotación con precisión. Ocultarlas no corrige ningún fallo, pero le quita al atacante un mapa que usaría.

Cómo funciona

Fija el parámetro del kernel kernel.kptr_restrict en 2. Los punteros del kernel impresos con el formato %pK pasan a mostrarse como ceros para todo usuario, incluido root. El valor 1 los oculta solo de usuarios sin la capacidad CAP_SYSLOG.

Quién debería usarlo

Sirve para casi cualquier escritorio y servidor. Déjalo en 0 o 1 si depuras el propio kernel o usas herramientas de profiling en una máquina de desarrollo que necesitan direcciones reales del kernel.

Qué puedes notar

Normalmente nada. Herramientas como perf pueden avisar de que los mapas de direcciones del kernel están restringidos, y /proc/kallsyms muestra ceros incluso a root.

Compruébalo en tu equipo

Lee el valor actual:

sysctl kernel.kptr_restrict

Aplícalo a mano

Establécelo ahora (hasta el próximo reinicio):

sudo sysctl -w kernel.kptr_restrict=2

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

sudo tee /etc/sysctl.d/90-kernel-kptr-restrict.conf <<'EOF'
kernel.kptr_restrict = 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
kernel.kptr_restrict