Los únicos directorios obligatorios de FHS que comúnmente se pueden escribir en el mundo son /tmp
y /var/tmp
. En ambos casos, esto se debe a que están destinados a almacenar archivos temporales que cualquier persona puede crear.
También es común /dev/shm
, como tmpfs (sistema de archivos respaldado por RAM), para un acceso rápido a datos de tamaño medio compartidos entre procesos, o simplemente para crear archivos que se garantiza que serán destruidos al reiniciar.
También puede haber un /var/mail
o /var/spool/mail
, y a veces otros directorios de cola de impresión. Esos se utilizan para retener el correo temporalmente antes de que se procese. No siempre se pueden escribir en todo el mundo, dependiendo de las herramientas en uso. Cuando lo están, es porque las herramientas de usuario pueden crear archivos allí para que sean procesadas por demonios.
Todos estos directorios generalmente tienen el bitt
fijo ( ), lo que significa que solo el propietario de un archivo o del directorio puede mover o eliminar los archivos que contiene .
Cualquier programa que se ejecute como cualquier usuario puede crear archivos en estos directorios, y depende del programa creador hacer lo correcto en lo que respecta a la seguridad de sus datos particulares. No hay ningún problema de seguridad general en particular que no sea alguien que potencialmente está llenando el sistema de archivos, pero hay un amplio margen para que un programa se equivoque.
Ha habido algunos movimientos hacia /tmp
directorios específicos del servicio . Esto evita algunos de los posibles errores que pueden surgir, por lo que no es tan vital que el programa esté libre de errores en la forma en que utiliza el directorio.
Puede encontrar los directorios de escritura mundial en su sistema con:
find / -maxdepth 3 -type d -perm -777
/var/lock
→/run/lock
/tmp
Es arriesgado, porque necesita agregar código adicional para usarlo de manera segura. Obviamente esto se pasa por alto.
Steve Kemp da un ejemplo reciente. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html
Si usted (el atacante) reemplaza / tmp / shadow antes de la segunda línea, puede reemplazar la contraseña de todos. (Supongo que el ataque requiere que crees el archivo antes de la primera línea y que el archivo se pueda escribir en todo el mundo).
Systemd en Linux permite mitigar tales vulnerabilidades al aislar / tmp para muchos servicios del sistema. (Excepto los que "mal uso / tmp como una ubicación para sockets IPC y otras primitivas de comunicación").
En Fedora Linux: http://fedoraproject.org/wiki/Features/ServicesPrivateTmp
Explicación de Systemd: http://0pointer.de/blog/projects/security.html
fuente
fopen
sobrescribe pero no restablece los permisos, por lo que el usuario malintencionado aún puede realizar cambios. Además, un usuario malintencionado podría haber hecho algo comoln -s /bin/bash /tmp/shadow
antes de la primera línea, para que se sobrescribiera un sistema binario esencial.Para encontrar directorios de escritura mundial, puede usar
Para archivos, cambie el tipo a
f
Para enlaces simbólicos escriba a
l
Para establecer un bit adhesivo:
fuente