Tres fallas cross-site scripting (XSS) encontradas en Facebook

A pesar de invertir millones de dólares en seguridad, Facebook reporta el continuo hallazgo de vulnerabilidades que podrían exponer la información de sus usuarios. Un especialista en vulnerabilidades informáticas reveló el hallazgo de tres vulnerabilidades de scripts entre sitios (XSS) que ponen en riesgo a los usuarios de esta red social.

Acorde al reporte, elaborado por Bipin Jitiya, estas fallas en Facebook fueron un poco difíciles de detectar y explotar, y su detección se debe a que el experto estaba buscando la funcionalidad de carga de archivos para poder cargar un shell en el servidor. Al enumerar las tareas pre construidas, el experto descubrió que la tarea uploadFile estaba registrada y accesible.

No había mucha documentación disponible en el sitio web de MicroStrategy sobre esta tarea, por lo que el investigador revisó manualmente el código fuente. El SDK de MicroStrategy Web ya había sido descargado en un sistema local, por lo que se procedió a la búsqueda de la clase de Java para esta tarea.

El especialista en vulnerabilidades informáticas descompiló cada archivo jar del SDK usando la herramienta jd-gui, y buscando la clase com.microstrategy.web.tasks.UploadFileTask, encontrando que WebTasks.jar tenía una clase com.microstrategy.web.tasks.UploadFileTask.

Se admite la carga de archivos y su funcionalidad de procesamiento, verificando en primera instancia el parámetro URL FileFieldName que debe coincidir con el nombre de archivo que se carga. Luego verificará la extensión del archivo, si resulta ser un archivo Excel (xlsx y xls) llamará a la función parseUploadedExcelFile, mientras que otros archivos serán procesados usando la función parseUploadedFile.

La función parseUploadedExcelFile  busca una sesión válida, por lo que no pude cargar ningún archivo de Excel, pero la función parseUploadedFile no verifica una sesión válida.

En su prueba, el experto en vulnerabilidades informáticas en realidad no almacenó el archivo cargado en el servidor. En vez de esto, la tarea uploadFile se usó para procesar el archivo cargado desde el formulario HTML y devolver el contenido del archivo al cliente. No fue posible cargar el shell web porque no se almacenó en el servidor.

La clase UploadFileTask procesa datos del archivo cargado sin codificación de salida, lo que podría conducir a la ejecución de JavaScript arbitrario en el contexto de m-nexus.thefacebook.com.

Esto demuestra que las fallas XSS existen, aunque aún faltaba por demostrar que su explotación era posible, para lo que el investigador creó un sitio especialmente diseñado. Por desgracia, el experto no pude explotar las fallas porque, al actuar como atacante, no puede controlar el contenido del archivo.

No obstante, después de un largo proceso de ensayo y error, el investigador pudo crear un fragmento de código HTML+JavaScript, el cual envió en un archivo mediante un formulario POST, explotando así las fallas XSS. Los ataques XSS permiten que un hacker malintencionado ejecute scripts en la máquina del cliente, permitiendo la recopilación de información sobre el sistema objetivo.

Para mayores informes sobre vulnerabilidades, exploits, variantes de malware y riesgos de seguridad informática, se recomienda ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS), al igual que a las plataformas oficiales de las compañías tecnológicas.