J'essaie de déterminer si, sous Linux, les variables d'environnement d'un processus sont observables par d'autres utilisateurs (non root).
Le cas d'utilisation immédiat consiste à placer des secrets dans des variables d'environnement. Ceci est discuté dans de nombreux endroits sur le Web comme n'étant pas sûr, mais je n'ai pas été en mesure de me concentrer sur le point d'exposition exact sous Linux.
Notez que je ne suis pas parler de mettre des secrets en clair dans des fichiers. Notez également que je ne suis pas parler de l'exposition au compte root (je considère la tentative de cacher des secrets à un adversaire avec root comme un échec).
Cette question semble répondre à la mienne, avec des commentaires qui classent les variables d'environnement comme étant totalement sans sécurité, ou simplement obscurcies, mais comment y accéder ?
Dans mes tests, un utilisateur non privilégié ne peut pas observer les variables d'environnement d'un autre utilisateur via la table de processus ("ps auxwwe"). Les commandes qui définissent les variables d'environnement (par exemple, l'exportation) sont des commandes internes du shell qui ne se retrouvent pas dans la table des processus et, par extension, ne se trouvent pas dans /proc/$pid/cmdline. /proc/$pid/environ n'est lisible que par l'UID du propriétaire du processus.
Peut-être que la confusion est entre différents systèmes d'exploitation ou versions. Diverses sources (récentes) sur le Web dénoncent l'insécurité des variables d'environnement, mais ma vérification ponctuelle de différentes versions de Linux semble indiquer que ce n'est pas possible depuis au moins 2007 (probablement plus loin mais je n'ai pas de cases sur main pour tester).
Sous Linux, comment un utilisateur non privilégié peut-il observer les variables d'environnement des processus d'un autre ?
Réponse acceptée :
Comme Gilles l'a expliqué dans une réponse très complète à une question similaire sur security.stackexchange.com, les environnements de processus ne sont accessibles qu'à l'utilisateur propriétaire du processus (et root bien sûr).