← Toutes les règles
SOCLE-CLD-IAM-056// Sudomoyenneconfig persistante

S'assurer que sudo s'exécute dans un environnement minimal - sudo env_reset

Active l'option Defaults env_reset afin que sudo exécute les commandes dans un environnement propre et minimal plutôt que d'hériter des variables d'environnement de l'utilisateur appelant.

Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.

Un PASS prouve? actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 1 norme

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

Forcer sudo à réinitialiser l'environnement garantit que les variables contrôlées par l'utilisateur (par ex. LD_PRELOAD, LD_LIBRARY_PATH, PATH, IFS) ne sont pas transmises à la commande privilégiée. Sans env_reset, un attaquant maîtrisant l'environnement du shell appelant pourrait détourner le processus privilégié, en chargeant une bibliothèque malveillante ou en le redirigeant vers un binaire piégé, transformant un simple sudo en vecteur d'élévation de privilèges.

Ce que vérifie Pavois

Pavois recherche dans l'arborescence sudoers active, /etc/sudoers et chaque fichier sous /etc/sudoers.d/, une directive non commentée Defaults ... env_reset. Comme sudo construit sa politique à partir du fichier principal et de tous les drop-ins (et des directives @include), parcourir toute l'arborescence reflète la politique sudo effective, et pas un seul fichier qu'un drop-in ultérieur pourrait écraser.

describe command('grep -rqE \'^[^#]*Defaults[^#]*\benv_reset\b\' /etc/sudoers /etc/sudoers.d/ 2>/dev/null && echo ok || echo ko') do
  its('stdout.strip') { should eq 'ok' }
end

Comment vérifier qu’elle est appliquée

Exécutez sudo -V | grep -i 'reset the environment' ou inspectez la politique avec sudo grep -rE '^[^#]*Defaults.*env_reset' /etc/sudoers /etc/sudoers.d/. Une ligne correspondante confirme que l'option est active. env_reset est la valeur par défaut compilée des versions récentes de sudo ; le résultat attendu est donc qu'elle soit présente et non annulée par !env_reset.

Inspecter et investiguer

Chaque appel à sudo est journalisé dans /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL), ainsi que via journalctl -t sudo. Ces entrées indiquent qui a exécuté quoi ; combinées au contrôle de politique, elles confirment que les commandes privilégiées s'exécutent dans l'environnement minimal.

Remédiation

Le plan de durcissement de Pavois écrit une ressource file dans /etc/sudoers.d/99-Pavois-env_reset contenant Defaults env_reset, appartenant à root:root avec le mode 0440, et la valide avec visudo -cf avant qu'elle ne prenne effet. Appliquez-le avec pavois harden apply. L'usage d'un drop-in dédié isole la modification et la rend réversible sans toucher au fichier principal /etc/sudoers.

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

contentDefaults env_reset
grouproot
mode0440
ownerroot
path/etc/sudoers.d/99-pavois-env_reset
resourcefile
verifyvisudo -cf %{path}
pavois harden plan local

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

Impact & précautions

env_reset supprime la plupart des variables d'environnement, ce qui peut casser des scripts s'appuyant sur la transmission de variables (par ex. http_proxy, PATH personnalisé) à travers sudo. Si certaines variables sont réellement nécessaires, n'autorisez que celles-ci via Defaults env_keep += "VAR" plutôt que de désactiver env_reset. Le drop-in est validé par visudo avant activation : une erreur de syntaxe ne peut donc pas corrompre la politique sudoers ni vous priver de sudo.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R39direct2.0haute

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références