Problemas al conservar $ HOME en sudo

10

En Ubuntu, el comportamiento predeterminado con sudo es preservar la variable de entorno $ HOME del usuario, lo que significa que sudo podrá leer los archivos de puntos en el directorio de inicio del usuario. Lo disfruto más notablemente porque cuando necesito editar un archivo de texto, sudo vim leerá mi vimrc.

En otros sistemas, el archivo sudoers tiene Defaults always_set_home , que establece el inicio en / root, por lo que no usa mi vimrc. Podría deshabilitar esto, pero como esta opción está, presumiblemente, establecida por razones de seguridad, me preguntaba qué tan graves eran y si debería o no simplemente lidiar con la molestia de la casa / raíz.

La única vulnerabilidad de seguridad que se me ocurre en esta introducción es si ejecuto un ejecutable no confiable o un script que edita uno de mis scripts de inicio. Luego, la próxima vez que sudo, ese script podría obtener el control. Sin embargo, si asumimos que mi cuenta se ha comprometido sin mi conocimiento, la secuencia de comandos malintencionada podría haber cambiado mi ruta de acceso a un comando sudo falso de todos modos, por lo que no parece una vulnerabilidad adicional.

¿Qué vulnerabilidades de seguridad hace que se abra $ HOME en sudo?

Edit: Me doy cuenta ahora que sudoedit resuelve mi caso de uso principal, pero me pregunto sobre el problema de seguridad.

    
pregunta Sam King 09.08.2012 - 17:19
fuente

2 respuestas

8

Para un usuario que puede ejecutar comandos arbitrarios con sudo , cambiar las variables de entorno no es un problema de seguridad directo. Si lo desea, puede ejecutar tmp=$(mktemp); export >$tmp; sudo bash -c ". $tmp; exec bash" ; en otras palabras, guardar el entorno y restaurarlo dentro del shell raíz.

Como observas, un troyano en un archivo de configuración no es una preocupación, ya que el troyano podría colocar un envoltorio alrededor de sudo de todos modos (y agarrar tu contraseña mientras está en eso).

El tema ha aparecido varias veces en las listas de correo de Ubuntu ( 1 2 ). Ubuntu no reinicia HOME . Los argumentos de David Mandelberg cubren la mayor parte del caso para restablecer HOME .

El restablecimiento de HOME protege contra la explotación de los errores que pueda cometer. Por ejemplo, uno de sus archivos de configuración podría contener una vulnerabilidad de archivo temporal que podría ser explotada para obtener acceso a la cuenta raíz. Este ejemplo es, como antes, no es realmente una preocupación, ya que la vulnerabilidad podría afectar a su cuenta primero y luego conectarse a su llamada de sudo .

El restablecimiento de HOME también protege contra los errores que pueda cometer, y es aquí donde el caso tiene un punto, pero no muy convincente.

  • Hay una vista extrema que dice que debes mantener la configuración predeterminada como root. De esta manera, cualquier cosa que se haga como root se distingue fácilmente de lo que debe hacer en su propia cuenta personalizada, por lo que no olvidará que está actuando como root. También hacer cosas como root es doloroso, por lo que está incitado a usar la cuenta de root lo menos posible. No compro esto: hacer las cosas "de la manera más difícil" en lugar de la forma en que uno se siente cómodo hace que sea más probable que cometa errores, no menos. Normalmente es bastante fácil saber si estás actuando como root: si estás editando un archivo en /etc , eres root¹. Si está ejecutando un shell y el indicador finaliza con # en lugar de $ o % (siguiendo la convención habitual), es root, y puede usar elementos como los colores para hacer que la distinción sea más visible. Si está ejecutando un programa de administración de paquetes, es root.
  • Por error, puede dejar un archivo confidencial en una ubicación legible públicamente en su directorio personal, creyendo que está en /root . O podría dejarlo en /tmp ... Este argumento me parece muy descabellado. Claro, es un error que podrías cometer, pero no es más probable que, por ejemplo, agregar una regla de firewall que deja todo abierto, o hacer que /bin/* sea escribible en todo el mundo.
  • Uno de sus archivos de configuración puede causar que aparezca información confidencial en su directorio de inicio. Esto es plausible, podría ser un archivo histórico o un archivo de guardado automático, pero estos archivos probablemente se encuentren en una ubicación privada de todos modos, de lo contrario la gente podría espiarte.
  • Las aplicaciones que guardan automáticamente su configuración pueden escribir en su directorio de inicio. Esto no es tanto un problema de seguridad como una cuestión de conveniencia para usted, y está más que compensado por la conveniencia de tener su configuración habitual cuando actúa como root.
  • Es posible que edite erróneamente los archivos en ~ , pensando que este es el directorio de inicio de root cuando en realidad es su directorio de inicio. Sí, pero si $HOME es su directorio de inicio, también tendrá su configuración habitual, por lo que es menos probable que piense que se está ejecutando como usuario root y es más probable que piense que está ejecutando en Un modo privilegiado. Este argumento es elevado por su propio petardo.

Scott James Remnant lo expresó de esta manera:

  

"sudo -s" es para personas perezosas que no desean duplicar archivos de configuración, "sudo -i" es para personas olvidadas.

Pero sudo -i (ejecutar una shell raíz) parece ser una mala idea para las personas olvidadas. Y duplicar los archivos de configuración como root solo es posible en una máquina de un solo usuario, en cuyo caso la ejecución como root no es tan importante en primer lugar.

Conclusión: no, no hay ningún problema de seguridad grave, y el caso para restablecer HOME es bastante débil. El propósito de always_set_home es protegerte contra ti mismo, pero protege tan poco que no vale la pena.

¹ Excepto que no debe ejecutar un editor como root: use el método sudoedit o Emacs (Tramp) sudo para ejecutar el editor como su usuario normal.

    
respondido por el Gilles 09.08.2012 - 19:24
fuente
2

Otra preocupación es que cuando solo ejecutas sudo command que está usando podría estar usando el entorno que el usuario que lo ejecuta ha establecido, esto incluye la ruta.

Esto se puede personalizar en el archivo de configuración, o mediante indicadores, pero, de forma predeterminada, muchos sistemas conservan el entorno de los usuarios iniciales.

Este comportamiento puede ser modificado por el siguiente

  • Cambiar la opción env_reset en el archivo sudoers.
  • invocando sudo -i que simula el inicio de sesión inicial del usuario con el que se ejecutará el comando
respondido por el Phillip Nordwall 09.08.2012 - 18:14
fuente

Lea otras preguntas en las etiquetas