¿Por qué es esto un problema de seguridad?
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=820331
>
> very predictable temporary files (like
> /tmp/cronic.out.$$) that depends only on PID:
> OUT=/tmp/cronic.out.$$
> ERR=/tmp/cronic.err.$$
> TRACE=/tmp/cronic.trace.$$
> "$@" >$OUT 2>$TRACE
Use CVE-2016-3992.
La seguridad a través de la oscuridad nunca ralentiza el software de piratería moderno y siempre hace que la depuración sea más difícil.
Dado que el directorio /tmp
siempre tiene establecido un bit fijo (drwxrwxrwt), ¿no impide eso la eliminación y el reemplazo por parte de un usuario malintencionado?
Actualización 2016-05-08
Basados en la Respuesta de Lie Ryan, he experimentado con los siguientes resultados ...
System
Puppy Linux 5.2.8 (based on Ubuntu 10.04)
Privileged User
root
/etc/passwd
root:x:0:0:root:/root:/bin/bash
$PATH
:/root/bin::/src/bin:/root/bin:/bin:/usr/bin: ...
> groups root
root : root tty
> id -nG root
root tty
Unprivileged User
spot
/etc/passwd
spot:x:502:502:Linux User,,,:/home/spot:/bin/sh
$PATH
:/root/bin::/src/bin:/root/bin:/bin:/usr/bin: ...
> groups spot
spot : spot
> id -nG spot
spot
Owners, Groups, Permissions
> ls -l /bin/busybox /bin/cat
-rwxr-x--- 1 root root 637960 2011-08-17 11:04 /bin/busybox
-rwxr-xr-x 1 root root 50820 2011-08-17 11:04 /bin/cat
> ls -l /usr/bin/less
lrwxrwxrwx 1 root root 17 2011-08-17 10:49 /usr/bin/less -> ../../bin/busybox
> ls -l /home/spot/myless /home/spot/text
lrwxrwxrwx 1 spot spot 13 2016-05-08 12:23 /home/spot/myless -> /usr/bin/less
-rw-r--r-- 1 spot spot 12 2016-05-08 13:01 /home/spot/text
Expected Behavior
Thus, unprivileged user 'spot' should be able to run 'cat', but not 'less'.
Attempt to run 'less' via the symlink (indented for clarity)
root@LX03:~ su spot
spot@LX03:~ pwd
/home/spot
spot@LX03:~ echo $PATH
:/root/bin::/src/bin:/root/bin:/bin:/usr/bin: ...
spot@LX03:~ ls -l myless text
lrwxrwxrwx 1 spot spot 13 2016-05-08 12:23 myless -> /usr/bin/less
-rw-r--r-- 1 spot spot 12 2016-05-08 13:01 text
spot@LX03:~ cat text
sample text
spot@LX03:~ myless text
sh: ./myless: Permission denied
Si entiendo correctamente, la vulnerabilidad de los archivos tmp con sufijos pid sería un programa malicioso que crea "un enlace simbólico a un archivo privilegiado" (presumiblemente un archivo ejecutable) para poder ejecutarlo, aunque el propietario del programa malicioso no tiene los permisos necesarios para hacerlo. ¿Es esta una comprensión correcta?
Si es así, me estoy perdiendo algo.
La propiedad, el grupo y los permisos (OGP) están en el archivo real, no en la entrada del directorio. Un enlace simbólico es una entrada de directorio que apunta a otra entrada de directorio.
No entiendo cómo un enlace simbólico puede abrir una vulnerabilidad.
Tal como lo entiendo, y el soporte de mis experimentos, los OGP son globales para todo el sistema de archivos, independientemente de cómo se encuentre el archivo. No importa si se accede al archivo mediante un enlace simbólico, buscando en los directorios $PATH
o ingresando la ruta completa directamente.
La única forma en que veo que un ejecutable puede usarse para acceder a los directorios y archivos a los que tiene acceso el propietario del ejecutable, pero el usuario que lo ejecuta no lo hace, es si el ejecutable tiene SETUID o SETGID habilitado.
¿Qué estoy entendiendo mal?