GNU/Linux >> Tutoriels Linux >  >> Linux

Comment se fait-il qu'aucun vidage de mémoire ne soit créé lorsqu'une application a défini SUID ?

La mémoire d'un programme setuid peut (est susceptible de contenir, même) des données confidentielles. Ainsi, le vidage de mémoire devrait être lisible par root uniquement.

Si le vidage de mémoire appartient à root, je ne vois pas de faille de sécurité évidente, bien que le noyau doive faire attention à ne pas écraser un fichier existant.

Linux désactive les core dumps pour les programmes setxid. Pour les activer, vous devez au moins faire ce qui suit (je n'ai pas vérifié que cela suffise) :

  • Activez les vidages de mémoire setuid en général en définissant le fs.suid_dumpable sysctl à 2, par ex. avec echo 2 >/proc/sys/fs/suid_dumpable . (Remarque :2, et non 1 ; 1 signifie "Je débogue le système dans son ensemble et je souhaite supprimer toutes les sécurités".)
  • Appelez le prctl(PR_SET_DUMPABLE, 1) du programme.

Le vidage mémoire contient une copie de tout ce qui était en mémoire au moment de l'erreur. Si le programme exécute suid, cela signifie qu'il a besoin d'accéder à quelque chose auquel vous, en tant qu'utilisateur, n'avez pas accès. Si le programme obtient ces informations puis vide le noyau, vous pourrez lire ces informations privilégiées.

D'après votre exemple ci-dessus, il semble que vous puissiez obtenir un vidage de mémoire lorsque vous exécutez en tant que root ou si vous supprimez l'élévation des privilèges.

Bien qu'il puisse être pratique (pour les développeurs uniquement, je pense) d'avoir un accès facile à un coredump à partir d'un programme setuid, il s'agit d'une faille de sécurité et doit être laissée en place.


Linux
  1. Comment définir/créer des variables d'environnement et de shell sous Linux

  2. Comment changer le programme de « lecture » ​​par défaut ?

  3. Comment créer des fichiers Linux Proc dans le programme C à l'aide de LKM

  4. Comment créer des threads sous Linux (avec un exemple de programme C)

  5. Comment puis-je obtenir ce que ma fonction principale a renvoyé?

Comment créer un équilibreur de charge d'application sur AWS

Comment configurer un cluster Pacemaker pour Linux haute disponibilité

Comment créer un raccourci sur le bureau ?

Comment définir l'ID de processus sous Linux pour un programme spécifique

Comment définir l'emplacement (et le nom) du fichier de vidage principal ?

Comment ajouter au groupe lorsque le nom a un espace ?