25 abril 2011

Vulnerabilidad en eyeOS 1.x

eyeOS es, para el que no lo conozca, un escritorio virtual accesible desde navegadores web basado en la nube en el cual podemos realizar infinidad de tareas, entre las que se encuentran almacenamiento de ficheros, ejecución de aplicaciones, gestión de usuarios y permisos y un largo etcétera. Al ser software libre podemos descargarlo para instalar nuestro propio servidor independiente.

Actualmente existen dos ramas, la 1.x, que ha sido la rama estable durante bastante tiempo, y la nueva rama 2.x donde se centra el desarrollo principal en este momento.

En este artículo vamos a ver un fallo de seguridad que afectaba a toda la rama 1.x de eyeOS, la rama 2.x no es vulnerable. Después de ponernos en contacto con el equipo de desarrolladores, la vulnerabilidad ya está solucionada en la última versión, lanzada hace sólo unas horas. Destacada la seriedad, entrega y rápida respuesta por parte del equipo, especialmente de Lars Knickrehm, de nota.

Aquí podéis encontrar el advisory que fue enviado.

Los ficheros y sus extensiones, no todo es lo que parece

Cuando un usuario sube un fichero a eyeOS, el tipo de fichero únicamente es determinado por la extensión que éste posea. Es decir, un fichero .jpg será una foto, y un .doc un documento con formato. Esto es, en cierto modo, un problema, ya que el fichero será abierto con las aplicaciones para su formato según la extensión, aunque no sea realmente la aplicación adecuada. Posteriormente las aplicaciones podrán tener su propio filtrado.

Por ejemplo, podemos subir una foto renombrando su extensión a .doc, y cuando la abramos en eyeOS, intentará ser abierta con el visor de documentos en lugar del visor de imágenes.

El visor de imágenes

Para visualizar imágenes en eyeOS utilizaremos el visor que tiene integrado. Cuando abrimos una imagen se crea un nuevo frame HTML que contiene el fichero de imagen puro, y nuestro navegador se encarga de mostrarla.


Explotación

Entonces, ¿que pasaría si subimos un fichero HTML con extensión de fotografía y lo abrimos? La lógica nos dice que será abierto con el visor de imágenes en un nuevo frame, por lo que el navegador lo interpretará. Vamos a subir el fichero xss.png que contiene lo siguiente:

<!doctype html>
<script>alert("XSS done");</script>

Lo abrimos en eyeOS y ...


Es una vulnerabilidad de tipo XSS persistente, hemos inyectado código que queda almacenado en el sistema por medio del fichero de imagen, y que al ser abierto se ejecuta.

Un usuario malintencionado lo podría utilizar para, por ejemplo, programar un malware que se propague por el sistema mediante ficheros compartidos y mensajes internos entre los usuarios, o para incrustar exploits de navegadores que intenten comprometer los equipos del resto de usuarios.

Se pueden tomar medidas para mitigar los efectos, como deshabilitar los directorios compartidos, o descargar en el equipo los ficheros de imagen para verlos, en lugar de abrirlos directamente. Aunque por supuesto la opción más eficaz es, siempre que se pueda, actualizar a la última versión.

2 comments :

ehooo dijo...

Felicidades Alberto, buen trabajo, dado el tipo de sistema que es, meparece un error importante.

Hydria dijo...

Error muy grave de seguridad, muy bien chicos buen trabajo, me ha gustado que el equipo de eye os haya tenido una respuesta tant rapida.