GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué es tan importante "nodev" en /etc/fstab? ¿Cómo se utilizan los dispositivos de caracteres para piratear?

Estoy aprendiendo sobre la seguridad de Linux y me cuesta entender por qué una memoria USB con un dispositivo de caracteres es potencialmente peligrosa.

Si tengo una memoria USB con un ejecutable bash que tiene setuid root, el peligro es obvio:cualquier persona con una memoria USB de este tipo puede obtener privilegios de root en mi computadora si tengo una entrada como

/dev/sdb1 /media/usbstick auto defaults 0 0

en mi /etc/fstab porque defaults incluye suid .

Pero, ¿qué pasa con los dispositivos de carácter? ¿Cómo puedo usar un dispositivo de caracteres para obtener privilegios de root o romper cosas si una memoria USB con un dispositivo de caracteres se monta con dev? o defaults ?

Respuesta aceptada:

Debido a que el acceso al dispositivo subyacente está controlado solo por permisos de archivo de forma predeterminada, por lo que si su memoria USB contiene un sistema de archivos POSIX con un nodo de dispositivo de escritura mundial correspondiente a un dispositivo real en el sistema, puede usar ese nodo de dispositivo para acceder al correspondiente dispositivo como un usuario "simple". Imagina un dispositivo correspondiente a uno de los dispositivos de audio, tu cámara web, /dev/sda (que es un dispositivo de bloques en lugar de un dispositivo de caracteres, pero el argumento es el mismo)…

Aquí hay un ejemplo para hacer las cosas más claras. Digamos que desea acceder a /dev/sda (entonces puedes hacer prácticamente lo que quieras con el contenido del disco, incluso plantar un programa que te permita convertirte en root; este es un dispositivo de bloque pero el problema es el mismo con los dispositivos de caracteres). En su sistema de destino, ls -l /dev/sda espectáculos

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

Esto significa /dev/sda es un dispositivo de bloque (el b al principio de la línea), con el número mayor 8 y el número menor 0 (el 8, 0 en el medio de la línea). El dispositivo solo es accesible para root (lectura/escritura) y miembros del disk grupo (también lectura/escritura).

Ahora imagina que en este sistema no puedes convertirte en root pero por alguna razón puede montar memorias USB como usuario sin nodev . En otro sistema, donde eres root , puede crear un archivo especial correspondiente en su llave USB:

mknod -m 666 usersda b 8 0

Esto creará un archivo especial llamado usersda , legible y escribible por todos.

Monte la clave en su sistema de destino y listo, puede usar el usersda dispositivo de la misma manera que /dev/sda , pero sin restricción de acceso…

Relacionado:¿Usando uniq en texto Unicode?

(Esto funcionará incluso con sistemas de archivos encriptados, siempre que pueda acceder al dispositivo mapeador descifrado:cree un dispositivo que coincida con el /dev/mapper apropiado entrada.)


Linux
  1. CentOS / RHEL:cómo priorizar los dispositivos utilizados para la partición de intercambio

  2. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

  3. Cómo configurar JAVA_HOME en Linux para todos los usuarios

  4. Cómo configurar ssh sin contraseña con claves RSA

  5. ¿Cómo puedo revertir un chmod en el directorio etc?

¿Qué es Fstab en Linux? Una introducción al archivo Linux /etc/fstab

Cómo silenciar completamente un cronjob a /dev/null/?

¿Cómo se actualiza /etc/motd?

CentOS / RHEL 7:cómo recuperarse de una entrada raíz eliminada en archivos /etc/shadow y/o /etc/passwd

¿Para qué se usa `/dev/console`?

Cómo configurar /etc/issues para mostrar la dirección IP de eth0