Masquer les adresses du noyau

Risque faible Coché par défaut dans IbexWall Catalogue révisé le: 2026-11-05

Les programmes sans droits spéciaux ne peuvent plus lire où se trouvent les éléments dans la mémoire du noyau. Les attaquants utilisent ces adresses pour viser leurs exploits.

Pourquoi il compte

Beaucoup d’exploits du noyau ont besoin de savoir où se trouvent exactement un code ou une donnée en mémoire. Des adresses du noyau peuvent fuiter par plusieurs interfaces, et une attaquante qui exécute déjà un programme sur votre ordinateur peut les collecter et viser son exploit avec précision. Les masquer ne corrige aucun bug, mais retire à l’attaquant une carte dont il se servirait.

Comment il fonctionne

Met le paramètre noyau kernel.kptr_restrict à 2. Les pointeurs du noyau imprimés au format %pK sont alors remplacés par des zéros pour tout utilisateur, root compris. La valeur 1 ne les masque que pour les utilisateurs sans la capacité CAP_SYSLOG.

À qui il s'adresse

Convient à presque tout ordinateur de bureau et tout serveur. Laissez à 0 ou 1 si vous déboguez le noyau lui-même, ou si vous utilisez sur une machine de développement des outils de profilage qui ont besoin des vraies adresses du noyau.

Ce que vous pouvez remarquer

En général rien. Des outils comme perf peuvent avertir que les cartes d’adresses du noyau sont restreintes, et /proc/kallsyms affiche des zéros même pour root.

Le vérifier sur votre ordinateur

Lire la valeur actuelle :

sysctl kernel.kptr_restrict

L'appliquer à la main

La définir maintenant (jusqu'au prochain redémarrage) :

sudo sysctl -w kernel.kptr_restrict=2

La conserver après les redémarrages, dans un fichier qui vous appartient :

sudo tee /etc/sysctl.d/90-kernel-kptr-restrict.conf <<'EOF'
kernel.kptr_restrict = 2
EOF
sudo sysctl --system

L'annuler

Supprimez le fichier et redémarrez, ou remettez l'ancienne valeur avec sysctl -w.

Réglages liés

Sources

Linux Hardening Guide (madaidans)
2.2.1
Linux kernel documentation
kernel.kptr_restrict