Estoy tratando de determinar si, en Linux, las variables de entorno para un proceso son observables por otros usuarios (no root).
El caso de uso inmediato es poner secretos en variables de entorno. Esto se discute en muchos lugares a través de la web como inseguro, pero no he podido concentrarme en el punto de exposición exacto en Linux.
Tenga en cuenta que no hablando de poner secretos de texto claro en archivos. También tenga en cuenta que no hablando de la exposición a la cuenta raíz (veo intentar ocultar secretos de un adversario con la raíz como un no iniciador).
Esta pregunta parece abordar la mía, con comentarios que clasifican las variables de entorno como completamente sin seguridad, o simplemente ofuscadas, pero ¿cómo se accede a ellas?
En mis pruebas, un usuario sin privilegios no puede observar las variables de entorno de otro usuario a través de la tabla de procesos ("ps auxwwe"). Los comandos que establecen las variables de entorno (p. ej., exportar) son funciones internas de shell que no llegan a la tabla de procesos y, por extensión, no están en /proc/$pid/cmdline. /proc/$pid/environ solo es legible por el UID del propietario del proceso.
Quizás la confusión sea entre diferentes sistemas operativos o versiones. Varias fuentes (recientes) en la web denuncian la inseguridad de las variables de entorno, pero mi verificación puntual de diferentes versiones de Linux parece indicar que esto no es posible desde al menos 2007 (probablemente más allá, pero no tengo casillas en mano para probar).
En Linux, ¿cómo puede un usuario sin privilegios observar las variables de entorno de los procesos de otro?
Respuesta aceptada:
Como explicó Gilles en una respuesta muy completa a una pregunta similar en security.stackexchange.com, los entornos de proceso solo son accesibles para el usuario propietario del proceso (y raíz, por supuesto).