Esconder endereços do kernel

Risco baixo Marcada por padrão no IbexWall Catálogo revisado em: 2026-11-05

Programas sem direitos especiais deixam de ler onde as coisas ficam na memória do kernel. Atacantes usam esses endereços para mirar explorações.

Por que importa

Muitas explorações do kernel precisam saber exatamente onde um código ou dado fica na memória. Endereços do kernel podem vazar por várias interfaces, e um atacante que já roda um programa no seu computador pode coletá-los e mirar a exploração com precisão. Escondê-los não corrige nenhum erro, mas tira do atacante um mapa que ele usaria.

Como funciona

Define o parâmetro do kernel kernel.kptr_restrict como 2. Ponteiros do kernel impressos com o formato %pK passam a aparecer como zeros para todo usuário, inclusive o root. O valor 1 os esconde apenas de usuários sem a capacidade CAP_SYSLOG.

Quem deve usar

Serve para quase todo desktop e servidor. Deixe em 0 ou 1 se você depura o próprio kernel ou roda ferramentas de profiling em uma máquina de desenvolvimento que precisam de endereços reais do kernel.

O que você pode notar

Normalmente nada. Ferramentas como o perf podem avisar que os mapas de endereços do kernel estão restritos, e /proc/kallsyms mostra zeros até para o root.

Verifique no seu computador

Leia o valor atual:

sysctl kernel.kptr_restrict

Aplique à mão

Defina agora (até a próxima reinicialização):

sudo sysctl -w kernel.kptr_restrict=2

Mantenha após reinicializações, em um arquivo seu:

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