El K Desktop Environment (KDE) proporciona un entorno gráfico con un escritorio integrado para las estaciones UNIX. Como parte de este entorno proporciona su propia implementación del PPP (kppp) y su propio bloqueo de pantalla (Klock), ambos se instalan y se ejecutan bajo SUID root. Pero estos programas tienen vulnerabilidades que pueden llegar a exponer la seguridad de la máquina llegando a comprometer la cuenta root para un usuario local.
Esta vulnerabilidad en el escritorio KDE ( http://www.kde.org) puede permitir a los usuarios locales conseguir privilegios de root, matar procesos o crear directorios ocultos en cualquier sistema de archivos local. Se ha comprobado la existencia de estos problemas con la versión 1.0 del entorno bajo FreeBSD (x86) y Linux (x86).
Hace pocos dias se anuncio la existencia de unas banderas en el programa klock del KDE en las cuales se notaba que el programa ejecutaría «blankscrn.kss» en la ruta del usuario si el fichero .kss normal no se localizaba. Un análisis más profundo reveló nuevas y más serias vulnerabilidades tanto en el klock como en el kppp.
El problema general radica en que KDE confía demasiado en las variables de entorno proporcionadas por el usuario. Esta confianza conduce a varios problemas, por ejemplo, la confianza de los contenidos del fichero «.kss.pid» permitiría que procesos arbitarios puedan ser matados por klock . Ya que KDE confía en el contendido del archivo «.kss.pid», que contiene el ID de otros procesos ejecutando klock. Si los encuentra, los matará. Un usuario puede incluir un PID arbitrario en dicho archivo, que será destruido por klock como root.
KDE confia en el valor de la variable de entorno KDEDIR. En muchas ocasiones KDE utiliza el valor devuelto por el kde_bindir para localizar sus executables. Este valor es determinado por la variable de entorno KDEDIR. En el caso del klock, KDE utiliza este directorio como el camino de búsqueda para localizar el archivo de salvapantallas que se ejecutará, lo que efectuará como root.
El kppp confía en el valor de la variable de entorno HOME. Cuando el kppp se inicializa procura crear un conjunto de directorios jerarquizados para contener ficheros log y de configuración. Para localizar estos ficheros, utiliza el valor de la variable de la entorno HOME, y la función make_directories usa esto para crear el directorio del KDE como root. Dentro de este directorio, crea varios subdirectorios cuyo propietario es el usuario. El resultado es que un usuario puede crear un directorio del KDE en una localización arbitraria (incluso sobreescribir el directorio del kde de otro usuario), con espacio libre permisos de escritura dentro.
El remedio pasa por cambiar los permisos de los archivos klock y kppp, con la instrucción «chmod a-s klock kppp». Aunque KDE ya ha publicado el parche que resuelve el problema haciendo que tanto kppp como klock no se ejecuten nunca más con SUID de root. El parche se puede bajar del servidor ftp de kde: ftp://ftp.kde.org.
Vulnarabilidades en el KDE
Antonio Ropero
Deja una respuesta