Le sugiero que mire si puede o no hacer algo con esos archivos en el sistema que está viendo como usuario regular. Lo más probable es que descubra que la mayoría de los realmente importantes (dispositivos de almacenamiento, por ejemplo) ya no pueden ser accedidos por los usuarios normales, porque esa es la configuración estándar en la gran mayoría de los sistemas UNIX, incluso desde 4.3BSD y SVR4 . Si está siendo verdaderamente realista, es probable que no permita el acceso no root a estos archivos de dispositivo por seguridad (si el atacante tiene acceso de root, los archivos de dispositivo no importan, ya que probablemente pueden ejecutar fácilmente el código en el espacio del kernel, lo que no No necesito archivos de dispositivo para meter hardware. Si el sistema en cuestión está configurado para usar SELinux u otro LSM, también puede aprovechar eso (si la configuración predeterminada no lo tiene) para limitar aún más el acceso.
Sin embargo, incluso si oculta o bloquea rutas en /dev
, eso realmente no evita que las personas creen nuevos nodos de dispositivos en otros lugares con los números de dispositivo mayor y menor apropiados y los permisos arbitrarios. No puede impedir fácilmente que la gente cree dichos archivos, pero puede hacerlos prácticamente inútiles montando todo excepto /dev
con la opción de montaje nodev
, que desactiva el manejo especial de los nodos del dispositivo en el sistema de archivos montado. Hacer esto correctamente requiere que su sistema de archivos raíz esté separado de /dev
(que debería ser un sistema de archivos virtual automático provisto por el kernel (como devtmpfs
) o una instancia tmpfs
poblada por un administrador de dispositivos).
Más allá de eso, muchos de los realmente desagradables ( /dev/mem
, /dev/port
, /dev/kmem
y /dev/msr
, así como /dev/hpet
) se pueden deshabilitar completamente en el momento de la compilación. Esto no solo evita que aparezcan en /dev
, sino que, literalmente, nunca puede tener instancias de trabajo de estos nodos de dispositivo en el sistema. La mayoría de las distribuciones de Linux deshabilitan explícitamente /dev/kmem
en estos días porque nada lo usa, y muchas de ellas también deshabilitan /dev/mem
y /dev/port
porque en gran parte son solo usadas por software heredado. Por otro lado, /dev/msr
generalmente se construye como un módulo cargable (y, por lo tanto, se puede incluir explícitamente en la lista negra sin reconstruir el kernel) porque existen usos prácticos reales para él que no implican atacar el sistema (por ejemplo, la depuración de la CPU). cuestiones de gestión).
Además, como una vista aparte, no bloquee /dev/null
o /dev/urandom
, probablemente rompa su sistema si lo hace, y ninguno de ellos es realmente un vector de ataque.