← Toutes les règles
SOCLE-CLD-SYS-069// Kernel & network (sysctl)moyenneruntime effectif

Désactiver l'utilisation des espaces de noms utilisateur

Désactive les espaces de noms utilisateur non privilégiés en plafonnant user.max_user_namespaces à 0.

Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0

Pourquoi cette règle

Les espaces de noms utilisateur permettent à un processus non privilégié d'obtenir l'ensemble des capacités root au sein d'un espace de noms isolé. Bien que puissants pour les conteneurs sans privilège, ils ont été à maintes reprises une source de vulnérabilités d'élévation de privilèges locale, car ils exposent à des utilisateurs ordinaires des chemins de code noyau normalement réservés à root. Fournir une fonctionnalité au-delà de ce dont le système a réellement besoin élargit la surface d'attaque. Sur les systèmes qui n'exécutent pas de conteneurs sans privilège, régler user.max_user_namespaces = 0 désactive entièrement la fonctionnalité et supprime cette classe de primitives d'exploitation.

Ce que vérifie Pavois

Pavois lit la valeur effective du noyau pour user.max_user_namespaces, pas un fichier de configuration. La valeur active fusionne /etc/sysctl.conf, les drop-ins dans /etc/sysctl.d/ et /run/sysctl.d/, les paramètres de démarrage du noyau et tout sysctl -w à chaud (les moteurs de conteneurs et Podman peuvent l'augmenter à l'exécution). Un fichier propre peut coexister avec un noyau qui autorise encore les espaces de noms utilisateur ; Pavois rapporte la valeur réellement appliquée.

describe kernel_parameter('user.max_user_namespaces') do
  its('value') { should cmp 0 }
end
describe command("grep -hsE '^[[:space:]]*user.max_user_namespaces[[:space:]]*=[[:space:]]*0([[:space:]]|$)' /etc/sysctl.conf /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf 2>/dev/null") do
  its('stdout') { should match(/\S/) }
end

Comment vérifier qu’elle est appliquée

Exécutez sysctl user.max_user_namespaces et vérifiez que la sortie est user.max_user_namespaces = 0. Vous pouvez aussi confirmer que la fonctionnalité est bloquée en tentant unshare --user --map-root-user true en tant qu'utilisateur non-root, la commande doit échouer.

Inspecter et investiguer

Aucun journal dédié. Inspectez l'état d'exécution avec sysctl user.max_user_namespaces. Les tentatives de création d'espaces de noms utilisateur lorsqu'ils sont désactivés échouent avec EPERM ; les échecs de conteneur/runtime mentionnant clone(CLONE_NEWUSER) ou des erreurs unshare dans journalctl indiquent que la restriction prend effet.

Remédiation

Le plan de durcissement de Pavois utilise la ressource sysctl pour définir user.max_user_namespaces = 0, en le persistant dans un drop-in géré et en l'appliquant à chaud. Exécutez pavois harden apply pour l'imposer ; il est réappliqué au démarrage via l'entrée persistante.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

keyuser.max_user_namespaces
resourcesysctl
value0
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Impact opérationnel élevé là où des conteneurs sans privilège/rootless sont utilisés : régler ce paramètre à 0 casse Podman rootless, Docker/runc non privilégié, systemd-nspawn, les navigateurs en bac à sable (sandbox Chrome/Firefox), les bacs à sable Flatpak/Snap, et tout outil reposant sur unshare --user. Avant d'appliquer, vérifiez que l'hôte n'exécute pas de conteneurs rootless ni de bacs à sable basés sur les espaces de noms. Sur les serveurs n'exécutant que des charges privilégiées, c'est un gain de durcissement important et réversible en réinitialisant la clé (aucun redémarrage nécessaire).

Sources & références