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 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' }
endComment 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 :
| content | Defaults env_reset |
|---|---|
| group | root |
| mode | 0440 |
| owner | root |
| path | /etc/sudoers.d/99-pavois-env_reset |
| resource | file |
| verify | visudo -cf %{path} |
pavois harden plan localoù 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
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R39 | direct | 2.0 | haute |
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.