Noticia
Nathan Power, pentester de seguridad, ha hecho publica una vulnerabilidad que contiene el sitio de Facebook®. Dicha vulnerabilidad se encuentra en la sección de mensajes al adjuntar archivos. Facebook® no permite adjuntar archivos ejecutables que terminan con .exe; sin embargo es posible burlar el parseador que identifica el tipo de archivo.
Cuando se detecta que un archivo es .exe, el usuario recibe como respuesta que hubo un error al subir el archivo, ya que no está permitido cargar ese tipo de archivos.
Vulnerabilidad
Consiste en poder adjuntar archivos ejecutables [exe] en la sección de mensajes. Lo que cabe destacar aquí, como lo menciona Nathan Power, es que para enviar mensajes no es necesario tener como "amigo" a los otros usuarios; siendo el atacante capaz de enviar el mensaje a los usuarios que elija.
Descripción del ataque
Al adjuntar un archivo .exe en un mensaje, Facebook® envía un mensaje de error indicando que el archivo no puede adjuntarse por el tipo de archivo identificado.
Realizando la captura de las cabeceras se logra obtener el contenido que se envía a través del método POST, y se identifica una línea:
De aquí se pudo detectar que la variable filename es 'parseada' para identificar el tipo de archivo, e impedir cargar archivos no permitidos. Según la descripción del ataque que realizó Nathan Power, dicha cabecera debía modificarse agregando un espacio al final del nombre del archivo, de tal forma que el parseador no identifica la terminación de forma correcta, quedando de la siguiente forma dicha línea:
Nosotros al realizar la prueba de concepto de esa forma, no logramos cargar el archivo ejecutable; y tras realizar la nueva petición al servidor con las cabeceras modificadas obtuvimos como resultado lo siguiente:
Sin embargo, modificamos el nombre verdadero del archivo a través del comando cp o mv de UNIX, agregando un espacio al final del nombre del archivo [en Windows no realizamos la prueba]; e intentamos cargar de nuevo el archivo.
Esto ocasionaría que el archivo con el nuevo nombre generara las cabecera con los valores necesarios para poder cargar el archivo y obtuvimos lo siguiente:
Daños que puede ocasionar
Al tener un archivo ejecutable adjunto, generalmente los navegadores para descargarlos detecta el tipo de archivos que son. En caso de ser ejecutables nos pregunta si deseamos ejecutarlos o almacenarlos en memoria. En el peor de los casos puede existir una configuración realizada por el usuario en su navegador que indique que se abran los archivos al descargar, permitiendo que los archivos .exe sean ejecutados al descargarse.
Fechas de aviso y publicación
Nathan Power en su blog ha dado las siguientes fechas:
09/30/2011 - Vulnerabilidad reportada a Facebook®
10/26/2011 - Vulnerabilidad reconocida por Facebook®
10/27/2011 - Publicación de la vulnerabilidad
Créditos
Como bien lo menciona Nathan Power en su blog Security Pentest, los créditos son de él, ya que ha sido quien ha descubierto la vulnerabilidad.
Comentarios
- Dicha vulnerabilidad aplica básicamente a sistemas Windows como se puede observar.
- Desconocemos si la modificación de las cabeceras eran suficiente en el momento que Nathan Power descubrió la vulnerabilidad, el concepto que el plantea como vulnerabilidad es el mismo que establecimos en nuestra Prueba de Concepto, pero aplicado de otra forma. Existe la posibilidad de que no haya detallado dicha vulnerabilidad de la forma que aquí se expone. Por la información que se ha publicado en Internet, la forma en la que aquí se aplicó, es la forma de traspasar el mecanismo de seguridad implementado.
- Se ha confirmado en otros medios que dicha vulnerabilidad no ha sido corregida en SecLists.org
- Cabe mencionar que, si bien no parece algo demasiado importante, es un bug que debe de ser corregido ya que muchos usuarios pueden desconocer lo que ocurrirá, y el objetivo es protegerlos. Aunado a esto el spam puede volverse más agresivo, y si le sumamos que un archivo puede tener cualquier nombre, estaríamos haciendo uso de ingeniería social que lograría su objetivo a través de un bug no corregido.
Disclaimer
Desconocemos si Facebook® ha realizado alguna corrección en sus códigos o servidores, y si dichas modificaciones se hayan apegado a la repetición de petición con nuevas cabeceras, lo que realizamos aquí no significa que nuestra publicación sea un nuevo 0day, ya que la vulnerabilidad sigue presente en el código, tal cual fue reportada. Esta publicación es informativa y el reporte de la existencia de dicha vulnerabilidad tiene 29 días de haber sido reportado. Nathan Power ha realizado la publicación de acuerdo a las responsabilidades del "Full Disclosure" [divulgación completa].
Nathan Power vulnerability description
Nathan Power POC
SecLists.org
TechWorld
DarkNet.org UK