Un atacante puede acceder a cualquier archivo existente en una máquina
Solaris donde se ejecute el daemon kcms_server.

KCMS («Kodak Color Management System») es un conjunto de funciones,
incorporadas en el sistema operativo Solaris, que mejoran la apariencia
y ofrecen una reproducción adecuada de las imágenes digitales a color
obteniendo las máximas prestaciones tanto de los ordenadores como de los
dispositivos asociados. Las funciones de esta biblioteca realizan las
manipulaciones y correcciones de color necesarias.

kcms_server es un daemon que permite a la biblioteca KCMS acceder a los
perfiles almacenados en máquinas remotas. Estos perfiles se encuentran
almacenados en los directorios /etc/openwin/devdata/profiles y
/usr/openwin/etc/devdata/profiles.

Existe una vulnerabilidad de escalada de directorios en la función
KCS_OPEN_PROFILE que puede ser utilizada para acceder a cualquier
archivo existente en un sistema remoto vulnerable. Dado que el
kcms_server se ejecuta con privilegios de root, esta vulnerabilidad
permite a un atacante acceder a cualquier archivo de un sistema
vulnerable.

Esta vulnerabilidad afecta a todas las versiones de Solaris posteriores
a la 2.5.1 y hasta la versión 9 (incluida) en las plataformas Sparc e
Intel.

Para determinar si una máquina Solaris ejecuta este kcms_server, puede
ejecutarse el siguiente mandato:

$ ps -ef | grep kcms_server

root 484 156 0 15:12:01 ? 0:00 kcms_server

Si lo que desea es determinar el puerto tcp utilizado por el demonio, es
preciso utilizar el programa rpcinfo:

$ rpcinfo -p | grep 100221
100221 1 tcp 32781

$ netstat -a | grep 32781

*.32781 Idle
*.32781 *.* 0 0 24576 0 LISTEN

en este caso, el servicio está operativo y asociado al puerto 32781/tcp

Hasta el momento en que Sun facilite el parche que elimine esta
vulnerabilidad, se aconseja deshabilitar el servicio kcms_server. Para
ello es preciso editar el archivo /etc/inetd.conf y comentar la línea

#
# Sun KCMS Profile Server
#
100221/1 tli rpc/tcp wait root /usr/openwin/bin/kcms_server kcms_server

y reiniciar inetd. Si esto no es posible, como mínimo deben configurarse
las medidas de protección perimetrales para impedir la utilización del
servicio desde redes inseguras, como puede ser Internet.

Xavier Caballé
xavi@hispasec.com

Compártelo: