Limitar que un programa inspeccione a otro
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