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. avececho 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.