Accéder au contenu France-Français
Accueil HP.com France Produits et Services Support et Pilotes Espaces Comment Acheter
» Contacter HP
Plus d'options
Accueil HP.com France
Guide de l'administrateur système HP-UX : Gestion de la sécurité : HP-UX 11i version 3 > Chapitre 2 Administration de la sécurité système et utilisateur

Gestion des programmes setuid et setgid

» 

Documentation technique

Manuel complet en PDF
» Commentaires
Début du contenu

 » Table des matières

 » Glossaire

 » Index

Étant donné qu'ils présentent un risque potentiel pour la sécurité, vous devez noter quels sont les programmes setuid (set user ID) et setgid (set group ID). Un pirate peut exploiter les vulnérabilités des programmes setuid et setgid de deux façons :

  • En faisant exécuter par setuid ou setgid des commandes définies par le pirate, soit de manière interactive, soit par script.

  • En substituant des données pirates à celles générées par un programme.

Appliquez les recommandations suivantes pour sécuriser les programmes setuid et setgid :

  • Essayez de détecter toute modification des programmes setuid et setgid.

  • Examinez soigneusement tout programme qui semble être inutilement un programme setuid.

  • Modifiez en setgid l'autorisation d'un programme qui est inutilement un programme setuid. Pour plus d'informations, voir chmod(1) et chmod(2).

    La forme longue de la commande ls (ll ou ls -l) affiche les programmes setuid en remplaçant l’autorisation d’exécution de l’utilisateur, qui est - ou x, par S ou s. Elle montre les programmes setgid en remplaçant l’autorisation d’exécution de groupe, qui est - ou x par S ou s.

    Vous pourrez trouver des fichiers système setuid et setgid, mais ils doivent posséder les mêmes autorisations d’accès que celles du support d’usine, à moins que vous ne les ayez modifiés vous-même.

  • N'autorisez pas les utilisateurs à avoir normalement des programmes setuid, en particulier lorsqu'ils utilisent setuid pour des utilisateurs autres qu'eux-mêmes.

  • Examinez le code de tous les programmes importés à partir de sources externes, afin de détecter s'ils contiennent des programmes destructeurs tels que des chevaux de Troie. Vous ne devez jamais restaurer ou installer de programme setuid pour lequel vous n'avez pas de source à examiner.

  • Pour permettre aux utilisateurs d’accéder à certains programmes de superutilisateur, HP recommande vivement d’utiliser SMH en mode restreint. SMH en mode restreint permet aux non-superutilisateurs d'accéder à certaines zones de SMH. Pour plus de détails, voir smh(1M).

Risques éventuels liés à l’utilisation des programmes setuid et setgid

Lorsqu’un programme quelconque est exécuté, il génère un processus qui comporte quatre ID : les ID utilisateur réels et effectifs (ruid et euid) et les ID de groupe réels et effectis (rgid et egid). En général, ces paires d'ID sont identiques.

Cependant, lorsque vous exécutez un programme setuid ou setgid, vous modifiez l’euid ou l’egid du processus associé : l’identification du propriétaire fait place à celle de l’objet. Les processus générés acquièrent leurs attributs de l’objet et confèrent à l’utilisateur les mêmes autorisations d’accès que celles du propriétaire du programme et de son groupe.

  • Si le bit setuid est activé, les privilèges du processus sont définis comme ceux du propriétaire du fichier.

  • Si le bit setgid est activé, les privilèges du processus sont définis comme ceux du groupe du fichier.

  • Si ni le bit setuid, ni le bit setgid n’est activé, les privilèges du processus demeurent inchangés.

  • Le cas le plus grave est celui où un programme contient un setuid vers root : dans ce cas, l’utilisateur obtient tous les privilèges de root. Le danger vient de ce que le programme peut servir à enfreindre toutes les règles de sécurité du système. Dans une moindre mesure, le problème existe avec des accès setuid ou setgid moins privilégiés.

Pour des raisons de sécurité, les bits setuid et setgid sur les scripts sont normalement ignorés par le noyau HP-UX. Cette règle peut être allégée en modifiant le paramètre ajustable secure_sid_scripts, mais il est vivement recommandé de ne pas modifier la valeur par défaut de ce paramètre. Pour plus d'informations sur ce paramètre ajustable, voir secure_sid_scripts(5).

Mode de définition des ID

Les ID sont définis des manières suivantes :

  • Les paramètres ruid et rgid sont hérités du processus login, qui définit votre uid et votre gid. Les valeurs uid et gid sont stockées dans /etc/passwd.

  • La commande login modifie également les valeurs ruid, euid, rgid et egid.

  • La commande su modifie les valeurs euid et ruid.

  • La commande newgrp peut modifier la valeur de gid.

  • Définissez les bits setuid et setgid à l'aide de l'appel système chmod() ou de la commande chmod. Pour plus d'informations, voir chmod(1) et chmod(2).

Recommandations concernant la limitation du pouvoir de setuid

Soyez extrêmement prudent lorsque vous ajoutez des programmes setuid-vers-root à un système existant. L’ajout d’un programme setuid-vers-root modifie en effet la configuration système et peut compromettre la sécurité.

Les recommandations suivantes relatives à l'administration et à la programmation vous permettront de limiter l’utilisation des programmes privilégiés :

  • N’utilisez setuid et setgid qu'en cas d'absolue nécessité.

  • Veillez à ce qu’aucun programme setuid ne soit accessible en écriture à d’autres utilisateurs.

  • Si possible, utilisez setgid plutôt que setuid pour réduire l’étendue des dégâts que pourrait causer une brèche dans votre système de sécurité.

  • Examinez régulièrement les systèmes de fichiers à la recherche de programmes setuid et setgid nouveaux ou modifiés. Vous pouvez utiliser la commande ncheck -s.

  • N’ignorez jamais ce que font exactement vos programmes setuid et setgid, et vérifiez qu’ils n’exécutent que les tâches pour lesquelles ils ont été prévus. Si ce n’est pas le cas, supprimez le programme ou bien ses attributs setuid.

  • Si vous devez copier un programme setuid, veillez à ce que les modes soient corrects sur le fichier de destination.

  • Écrivez les programmes setuid de sorte qu’ils puissent être testés sur des données de peu d’importance, sans attributs setuid ou setgid. N’affectez ces attributs qu’une fois le code vérifié, et après que les différents départements concernés se sont assurés de l’innocuité des programmes.

  • Veillez à ce que les programmes setuid ne créent pas de fichiers accessibles en écriture par un autre utilisateur que celui prévu.

  • Réinitialisez l'euid avant un appel système exec(*). Souvenez-vous que exec(*) peut être appelé par des programmes de la bibliothèque, et évitez d’utiliser des procédures (comme popen(), system(), execlp() et execvp()) qui dupliquent un shell avec fork pour exécuter un programme. Pour plus d'informations, voir les pages de manuel exec(2), popen(3S) et system(3S).

  • Lorsque vous écrivez des programmes setuid, utilisez la fonction setresuid() autour des éléments de code qui exigent des privilèges, afin de réduire l’étendue des faiblesses. Pour plus d’informations, voir setresuid(2).

  • Fermez tous les descripteurs de fichiers inutiles avant d’appeler exec(*).

  • Veillez à ce que toutes les variables (PATH, IFS) et la valeur de umask dans l’environnement de programmation soient suffisamment restrictives.

  • N’utilisez pas l’appel système creat() pour créer un fichier verrouillé. Préférez la fonction lockf() ou encore fcntl(). Pour plus d’informations, voir les pages de manuel lockf(2) et fcntl(2).

  • Veillez tout particulièrement à éviter les débordements de tampon qui peuvent, par exemple, découler de l’utilisation de sprintf(), strcpy() et strcat() sans une validation de la longueur appropriée des paramètres. Pour plus d'informations, voir les pages de manuel printf(3S) et string(3C).

Version imprimable
Respect de la vie privée L'utilisation de ce site implique que vous en acceptez les conditions
© 2008 Hewlett-Packard Development Company, L.P.