Limitar um programa que inspeciona outro
Um programa só pode se anexar aos próprios filhos, então um malware na sua sessão não lê nem altera seus outros programas.
Por que importa
ptrace é a chamada que depuradores usam para ler e alterar outro programa em execução. Sem limites, um malware rodando como você pode se anexar ao seu navegador, agente de SSH ou gerenciador de senhas e tirar segredos da memória deles. A documentação do kernel usa exatamente esse cenário para explicar por que o Yama existe.
Como funciona
Define kernel.yama.ptrace_scope como 1 (ptrace restrito). Um processo só pode se anexar aos próprios descendentes, ou a um processo que o nomeou como depurador permitido. O modo 2 permite só administradores e o modo 3 proíbe por completo.
Quem deve usar
Um padrão saudável para desktops e servidores. Desenvolvedores que anexam depuradores a programas em execução podem usar sudo, ou iniciar o programa sob o depurador.
O que você pode notar
gdb -p ou strace -p num programa já em execução falha com ptrace: Operation not permitted. Iniciar o programa pelo gdb ou strace continua funcionando, como usar sudo.
Verifique no seu computador
Leia o valor atual:
sysctl kernel.yama.ptrace_scope Um valor mais restritivo que este também serve.
Aplique à mão
Defina agora (até a próxima reinicialização):
sudo sysctl -w kernel.yama.ptrace_scope=1 Mantenha após reinicializações, em um arquivo seu:
sudo tee /etc/sysctl.d/90-kernel-ptrace.conf <<'EOF'
kernel.yama.ptrace_scope = 1
EOF
sudo sysctl --system Desfaça
Remova o arquivo e reinicie, ou volte ao valor antigo com sysctl -w.
Configurações relacionadas
Fontes
- Linux Hardening Guide (madaidans)
- 2.2.3
- Linux kernel documentation, Yama
- ptrace_scope