Una vulnerabilidad en el entorno XFree86 X11 versión 3.3.3
permite elevados privilegios mediante un ataque local. Un
defecto del paquete, a la hora de manejar los directorios
temporales, facilita que un atacante manipule el programa
para cambiar los permisos en directorios arbitrarios de
manera que se pueda escribir en ellos.
XFree86 es un entorno gráfico basado en las X Windows
distribuible gratuitamente y que se ejecuta en sistemas
operativos Unix, derivados (Linux) y OS/2. Su nombre deriva
porque tradicionalmente se ha basado en las plataformas
x86 de Intel, aunque en estos momentos se encuentra
también disponible en otras plataformas.
En entornos Unix, como Linux, existen permisos para
controlar quién puede leer (r), escribir (w) y ejecutar
ó acceder (x) a un determinado fichero o directorio. Para
controlar los permisos existen 9 bits agrupados de
tres en tres. Estos grupos determina los permisos
del propietario, del grupo y del resto de usuarios
respectivamente.
Así por ejemplo, si el propietario de un directorio tiene
todos los permisos habilitados (rwx), el grupo permiso r-x, y
el resto de usuarios –x, el grupo de bits para esa configuración
sería 111 101 001, que equivale a 751 en octal.
A estos tres grupos de bits debemos de sumar otro grupo
compuesto por los bits SUID, SGID y sticky. Cuando se
activa el bit sticky (1000 en octal), sobre un directorio,
ningún usuario puede borrar o renombrar en ese directorio
ficheros que pertenecen a otros usuarios. Este bit es
especialmente útil en directorios temporales de escritura
pública (/tmp), ya que evita que se pisen entre usuarios.
Con todo lo anteriormente expuesto podremos comprobar que
los ficheros temporales suelen tener establecidos los permisos
con el modo 1777. Como último elemento participante en esta
vulnerabilidad, y a modo de repaso, nos encontramos con el
comando symlink, que crea una conexión simbólica, es decir,
permite dar un nuevo nombre a una trayectoria ó fichero.
La vulnerabilidad en sí viene establecida porque XFree86 crea
un directorio en /tmp con el nombre .X11-unix para los sockets
X y fija los permisos del directorio al modo 1777. Si un
atacante crea un symlink con ese nombre y apunta a otro directorio,
como por ejemplo /root, el permiso del directorio apuntado pasa a
ser también 1777.
Aprovechando esta vulnerabilidad un atacante local podría crear
ficheros en cualquier directorio, lo que supondría la posibilidad
de conseguir privilegios de root. Este hecho ha sido dado a conocer
en la distribución Linux de SuSE, pudiendo estar otras distribuciones
afectadas por el mismo problema.
Parches:
http://www.suse.de/patches/index.html
Más información:
SuSE:
http://www.suse.de/security/announcements/suse-security-announce-3.txt
Deja una respuesta