Limitar que un programa inspeccione a otro

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

Un programa solo puede engancharse a sus propios hijos, así que el malware de tu sesión no puede leer ni cambiar tus otros programas.

Por qué importa

ptrace es la llamada que usan los depuradores para leer y cambiar otro programa en ejecución. Sin límites, un malware ejecutándose como tú puede adjuntarse a tu navegador, agente SSH o gestor de contraseñas y sacar secretos de su memoria. La documentación del kernel usa exactamente este escenario para explicar por qué existe Yama.

Cómo funciona

Fija kernel.yama.ptrace_scope en 1 (ptrace restringido). Un proceso solo puede adjuntarse a sus propios descendientes, o a un proceso que lo haya nombrado como depurador permitido. El modo 2 lo deja solo a administradores y el modo 3 lo prohíbe del todo.

Quién debería usarlo

Un valor por defecto sensato para escritorios y servidores. Los desarrolladores que enganchan depuradores a programas en ejecución pueden usar sudo, o iniciar el programa bajo el depurador.

Qué puedes notar

gdb -p o strace -p sobre un programa ya en ejecución falla con ptrace: Operation not permitted. Iniciar el programa desde gdb o strace sigue funcionando, igual que usar sudo.

Compruébalo en tu equipo

Lee el valor actual:

sysctl kernel.yama.ptrace_scope

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.yama.ptrace_scope=1

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

sudo tee /etc/sysctl.d/90-kernel-ptrace.conf <<'EOF'
kernel.yama.ptrace_scope = 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.3
Linux kernel documentation, Yama
ptrace_scope