S'assurer que sudo ignore les commandes du répertoire courant - sudo ignore_dot
Active l'option Defaults ignore_dot afin que sudo ignore toute entrée . (répertoire courant) présente dans PATH lors de la résolution de la commande à exécuter.
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
Si . fait partie du PATH, un attaquant capable d'écrire dans un répertoire où travaille un utilisateur peut y déposer un binaire malveillant portant le nom d'une commande courante. Lorsque l'utilisateur l'exécute via sudo, le binaire piégé s'exécute avec les privilèges root. ignore_dot retire le répertoire courant du chemin de recherche, fermant cette voie d'élévation de privilèges trivialement exploitable.
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 ... ignore_dot. Comme sudo fusionne sa politique à partir du fichier principal et de tous les drop-ins, parcourir toute l'arborescence reflète la politique effective plutôt qu'un seul fichier qu'un drop-in ultérieur pourrait écraser.
describe command('grep -rqE \'^[^#]*Defaults[^#]*\bignore_dot\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 grep -rE '^[^#]*Defaults.*ignore_dot' /etc/sudoers /etc/sudoers.d/. Une ligne correspondante, non commentée, confirme que l'option est active (et non annulée par !ignore_dot).
Inspecter et investiguer
Les appels à sudo sont journalisés dans /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL), et via journalctl -t sudo. Le chemin absolu de la commande journalisé permet de confirmer que sudo a résolu le binaire système attendu et non un binaire du répertoire courant.
Remédiation
Le plan de durcissement de Pavois écrit une ressource file dans /etc/sudoers.d/99-Pavois-ignore_dot contenant Defaults ignore_dot, 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. Le drop-in dédié isole la modification et la rend réversible.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| content | Defaults ignore_dot |
|---|---|
| group | root |
| mode | 0440 |
| owner | root |
| path | /etc/sudoers.d/99-pavois-ignore_dot |
| 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
ignore_dot ne casse que rarement quelque chose, car compter sur . dans le PATH de sudo est déjà une mauvaise pratique. Seuls sont concernés les usages exécutant délibérément un binaire du répertoire courant via sudo, ils devraient l'appeler par chemin absolu (sudo ./outil). Le drop-in est validé par visudo avant activation : une erreur de syntaxe ne peut donc pas corrompre sudoers ni vous verrouiller.
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.