Désactiver les bacs à sable sans privilèges (espaces de noms utilisateur)
Les espaces de noms utilisateur donnent aux programmes ordinaires beaucoup de code noyau à attaquer. Les désactiver supprime une grande partie de la surface d'attaque.
Pourquoi il compte
Les espaces de noms utilisateur permettent à un programme ordinaire de se faire passer pour administrateur dans un espace privé. C’est utile aux bac à sable, mais cela expose aussi beaucoup de code privilégié du noyau aux utilisateurs sans privilèges, et nombre d’élévations de privilèges locales y ont commencé. Les couper réduit cette surface.
Comment il fonctionne
Met user.max_user_namespaces à 0, donc personne ne peut créer de nouveaux espaces de noms utilisateur. Les programmes déjà lancés dans un tel espace continuent, mais les nouveaux ne peuvent plus en ouvrir.
À qui il s'adresse
Seulement pour des machines verrouillées où vous n’utilisez ni Flatpak, ni conteneurs sans root, ni navigateur en bac à sable. Pour la plupart des ordinateurs de bureau c’est un compromis : ces bacs à sable vous protègent aussi, et les retirer peut vous rendre moins sûr.
Ce que vous pouvez remarquer
Les applications Flatpak échouent avec une erreur de bwrap sur la création d’un espace de noms. Chromium et Firefox peuvent signaler que leur bac à sable est indisponible. Les conteneurs sans root et beaucoup d’AppImages ne démarrent plus.
Le vérifier sur votre ordinateur
Lire la valeur actuelle :
sysctl user.max_user_namespaces L'appliquer à la main
La définir maintenant (jusqu'au prochain redémarrage) :
sudo sysctl -w user.max_user_namespaces=0 La conserver après les redémarrages, dans un fichier qui vous appartient :
sudo tee /etc/sysctl.d/90-kernel-user-namespaces.conf <<'EOF'
user.max_user_namespaces = 0
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
- user.max_user_namespaces