Los usuarios comunes pueden leer / etc / passwd, ¿es esto un agujero de seguridad?


19
ls -l /etc/passwd

da

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd

Entonces, un usuario común puede leer el archivo. ¿Es este un agujero de seguridad?

Respuestas:


49

Los hashes de contraseñas reales se almacenan /etc/shadow, lo que no es legible por los usuarios habituales. /etc/passwdcontiene otra información sobre identificadores de usuario y shells que todos los usuarios deben poder leer para que el sistema funcione.


3
En realidad, no; históricamente las contraseñas se guardaban en / etc / passwd, pero esto hacía que la coincidencia de la fuerza bruta fuera sencilla, de ahí que los sistemas modernos usaran / etc / shadon con pam_unix y similares.
symcbean

44
Usos modernos de Linux/etc/shadow . El uso de los BSD /etc/master.passwd. Usos de Solaris /etc/security/passwd. HP-UX usa /.secure/etc/passwdy la lista continúa ...
Chris S

16

Por lo general, las contraseñas hash se almacenan en la /etc/shadowmayoría de los sistemas Linux:

-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow

(Se almacenan en /etc/master.passwdel sistemas BSD ).

Los programas que necesitan realizar autenticación aún deben ejecutarse con rootprivilegios:

-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd

Si no le gustan los setuid rootprogramas y un solo archivo que contiene todas las contraseñas hash en su sistema, puede reemplazarlo con el módulo Openwall TCB PAM . Esto proporciona a cada usuario su propio archivo para almacenar su contraseña hash ; como resultado, la cantidad de setuid rootprogramas en el sistema puede reducirse drásticamente.


13

Las contraseñas no se han almacenado en /etc/passwdaños; el nombre es heredado, la función de ser la base de datos de usuarios local permanece y debe ser legible por todos para ese propósito.


2
la legibilidad mundial es una decisión de diseño, no una necesidad
Ben Voigt

@Ben: ¿es razonable que nadie pueda identificar archivos que pertenecen a otra persona? Es la tienda local para NSS en estos días, no para PAM a pesar de su nombre.
geekosaur

1
Es completamente posible tener un servicio privilegiado que haga uid -> traducción de nombres, sin permitir que usuarios sin privilegios enumeren toda la lista de usuarios. Algunos sistemas operativos eligen esa opción.
Ben Voigt

1
Los sistemas operativos actuales de @joechip no están diseñados para ocultar usuarios entre sí. Todos los usuarios se pueden enumerar de muchas maneras más que / etc / passwd. ls -la / home en Linux, ls -la / Users en MacOS X, dir C: \ Users en Windows 7, ps -afux en sistemas Unix. Cambiar la elección del diseño al que Ben Voigt aludió simplemente hace la vida difícil sin cambiar la seguridad.
Magicianeer

1
@ Magicianeer: solo decir que el ejemplo de Windows no es del todo correcto. Puede obtener los usuarios a través de otros métodos, pero al mirar la carpeta C: \ users solo se enumerarán los usuarios que han iniciado sesión; No hay usuarios del sistema.
burnt_hand

6

Hasta cierto punto lo es, ya que puede identificar a los usuarios. En el pasado también podías recoger sus contraseñas. Sin embargo, el único ID de usuario que realmente vale la pena descifrar es rootel bien conocido sin el archivo de contraseña.

La utilidad de que el archivo de contraseña sea legible en todo el mundo generalmente supera el riesgo. Incluso si no fuera legible para el mundo, un getent passwdcomando en funcionamiento anularía la ganancia de seguridad.

La capacidad de los usuarios no root para identificar archivos propiedad de otros desaparecería. Ser capaz de identificar los archivos propios (usuario en el archivo passwd) y los no propios (usuario no en el archivo passwd) puede ser útil para revisar el contenido de un sistema de archivos. Si bien sería posible resolver esto con los setuidprogramas apropiados , eso agregaría un gran vector de ataque a través de esos programas.

Al final, es una cuestión de equilibrio, y en este caso, diría que el equilibrio está firmemente en tener una contraseña mundial legible.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.