Setuid
100%

Permissions · Leçon 5

Setuid

Découvrez comment le bit set-user-ID affecte les programmes exécutables et pourquoi il exige un examen de sécurité attentif.

Certains programmes ont besoin d’un accès étroitement contrôlé que leurs appelants ne possèdent pas normalement. Sur un fichier ordinaire exécutable, le bit set-user-ID peut attribuer au nouveau processus l’identifiant utilisateur du propriétaire du fichier comme identifiant utilisateur effectif. Le programme peut alors effectuer des opérations autorisées pour cette identité tout en conservant des informations sur l’appelant.

Setuid n’est pas une instruction générale signifiant « exécuter en tant que root ». Son effet dépend du propriétaire de l’exécutable, du système d’exploitation, du système de fichiers et de ses options de montage, ainsi que de la manière dont le programme gère ses identifiants.

Reconnaître setuid

Sur un système qui emploie un exécutable passwd setuid, une liste détaillée peut ressembler à ceci :

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68248 Jan 10 09:30 /usr/bin/passwd

Le s minuscule à la position d’exécution du propriétaire signifie que setuid et l’exécution du propriétaire sont tous deux définis. Si setuid est présent mais que l’exécution du propriétaire est absente, ls -l affiche un S majuscule à cette position.

Ne supposez pas que chaque distribution possède le même mode ou la même conception de l’authentification. Examinez le système réel au lieu de vous fier à l’exemple.

Qu’indique un s minuscule à la position d’exécution du propriétaire ?

Comprendre le changement d’identifiant

Lorsque le noyau honore setuid pendant l’exécution, le nouveau processus reçoit normalement un identifiant utilisateur effectif dérivé du propriétaire de l’exécutable. Pour un programme appartenant à root, cela peut fournir un accès autorisé pour root, mais uniquement pendant l’exécution du programme et à travers les opérations réalisées par son code.

Ce mécanisme peut permettre à un programme soigneusement écrit de valider une demande et d’apporter une modification limitée à un état protégé. Par exemple, un utilitaire local de changement de mot de passe peut nécessiter un accès contrôlé à des données d’authentification que les utilisateurs ordinaires ne peuvent pas modifier directement. Les implémentations modernes reposent aussi sur PAM, le verrouillage des fichiers, des politiques et d’autres protections ; setuid seul n’explique pas toute la procédure.

Lorsqu’un exécutable setuid est honoré, quelle identité provient principalement du propriétaire du fichier ?

Définir et retirer le bit

Définissez setuid symboliquement avec :

$ sudo chmod u+s myfile

En notation octale, setuid contribue pour 4 au premier chiffre des bits spéciaux :

$ sudo chmod 4755 myfile

Ici, le premier 4 définit setuid et 755 les bits ordinaires du propriétaire, du groupe et des autres. Retirez setuid sans modifier le reste du mode avec chmod u-s myfile.

Quelle première valeur octale représente le bit spécial setuid ?

Considérer setuid comme sensible pour la sécurité

Une faille dans un programme setuid privilégié peut devenir une voie d’élévation des privilèges. Ces programmes doivent valider leurs entrées, contrôler l’environnement et les chemins auxquels ils font confiance, éviter les comportements dangereux des sous-processus, réduire le code privilégié au minimum et abandonner les identifiants élevés dès que possible.

Linux n’honore normalement pas setuid sur les scripts interprétés, car une mise en œuvre sûre pose des problèmes de concurrence et d’interpréteur. Les systèmes de fichiers montés avec nosuid suppriment également les effets de setuid et setgid. Préférez des mécanismes plus étroits, tels que les opérations médiées par un service, une politique sudo soigneusement limitée ou les capacités lorsqu’ils répondent au besoin.

N’ajoutez jamais setuid à un shell, un interpréteur ou un programme copié arbitrairement pour faire une expérience sur un système partagé. Auditez les fichiers setuid existants et entraînez-vous uniquement dans un environnement isolé et jetable.

Quel est le but du montage d’un système de fichiers avec nosuid ?

Leçon terminée

Vous avez terminé Setuid

Vous savez maintenant reconnaître setuid et expliquer ses conséquences sur les identifiants et la sécurité.

  • Repérer s ou S à la position d’exécution du propriétaire.

  • Relier l’exécution setuid à l’identité utilisateur effective du propriétaire de l’exécutable.

  • Définir ou retirer le bit avec les modes symboliques ou octaux de chmod.

  • Considérer chaque exécutable privilégié comme du code sensible pour la sécurité.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Permissions