29 noviembre 2010

Vulnerabilidad en Twitter

Algo sabíamos que se estaba cociendo cuando mediante un RT de reverseskills nos hacia participes de un agradecimiento del equipo de seguridad de Twitter por reportar una vulnerabilidad.

Francisco Alonso, contribuidor en este blog en varias ocasiones, y compañero de aventuras en la NcN descubrió una vulnerabilidad en el servicio del pájaro azul. 

Ahora que esta solucionada, nos cuenta los detalles con una nota de seguridad que saldrá publicada en breve en otras listas de correo y que copio integra aquí.

Desde SbD nuestra enhorabuena a Francisco por este hallazgo en uno de los servicios que posiblemente más se auditen y por una técnica tan trabajada.


-- [ SOBRE MI

Francisco Alonso - ReverseSkills
Security researcher from Spain. *Nix lover & Hardware Hacking ░▒▓

-- [ SOBRE EL SERVICIO

Extraido de la Wikipedia :

Twitter es un sitio web de microblogging que permite a sus usuarios enviar y leer micro-entradas de texto de una longitud máxima de 140 caracteres denominados como "tweets". El envío de estos mensajes se puede realizar tanto por el sitio web de Twitter, como vía SMS (short message service) desde un teléfono móvil, desde programas de mensajería instantánea, o incluso desde cualquier aplicación de terceros.


-- [ DESCRIPCION DE LA VULNERABILIDAD

Un fallo de seguridad en los perfiles de usuario, permite subir ficheros para el avatar que no son realmente imágenes, directamente desde el formulario de la web. Cuando un usuario quiere modificar su imagen de perfil, puede subir una imagen cualquiera en tres formatos diferentes JPG, PNG y GIF. Al subir la imagen en cualquiera de los tres anteriores se generan otros dos ficheros con diferentes tamaños para ciertas partes del perfil. Si se intenta subir una imagen JPG y PNG al ser tratadas por la librería GD del backend de Twitter elimina cualquier tipo de contenido extra de la imagen y comprueba de forma correcta la cabecera.

Esto no pasa con la aplicación que trata los ficheros GIF, permitiendo a un usuario subir contenido que realmente no es un fichero GIF, simplemente modificando las cabeceras del mismo. Combinado con la posibilidad del formulario de definir el Content-type del fichero enviado podemos subir contenido HTML y JavaScript (XSS, Weaponized, etc) y contenido binario/ejecutable para distribuir Malware directamente desde los servidores de Twitter (Alojados en Akamai y Amazon S3).

El poc más sencillo y menos preocupante es este:


También podíamos jugar un poco con el filtro de nombre de imagen subida.

--[ Form POST

Content-Disposition: form-data; name="profile_image[uploaded_data]";
filename="namefile"\r\nContent-Type:
application/octet-stream\r\n\r\n\r

Esto podemos hacerlo al enviar el fichero en el formulario del perfil,añadiendo un NOP (x:ö) al nombre de fichero. Por lo que el filtro eliminaba toda la cadena "filename.html" pero era subido correctamente.

http://a2.twimg.com/profile_images/xxxx/

Por motivos de seguridad no se han realizado más pruebas de este tipo, pero existe la posibilidad de que el usuario pudiese moverse un directorio atrás y sobreescribir ficheros legítimos de Twitter o imágenes de otros perfiles. No se ha probado, pero creo que es totalmente factible.

--[ IMPACTO DE LA VULNERABILIDAD

- Un usuario malintencionado puede modificar su imagen de perfil para atacar clientes de Twitter ya sea mediante aplicaciones o acceso desde la Web.

- Puede ser usado para distribuir o alojar Malware en los servidores de Twitter.

- Técnicamente es posible modificar ficheros legítimos dentro de ese Bucket (HTML, Javascript o imágenes por defecto de Twitter)

--[ SOLUCIÓN

Mejorar el filtro de subida de imágenes para permitir correctamente la subida de ficheros GIF, tratando en todos los casos las imágenes como una nueva y eliminando contenido no validado en la cabecera del fichero.(Ya ha sido arreglado por twitter)

--[ LÍNEA DEL TIEMPO

27/09/10 - Encontrado el fallo de seguridad
08/11/10 - Twitter ha sido notificado sobre este fallo
08/11/10 - Twitter responde (en apenas 7 minutos)
16/11/10 - Twitter parchea gran parte del fallo de seguridad, ya no es
posible hacer uso del mismo.

--[ AGRADECIMIENTOS

- Un tiempo de respuesta inigualable en Twitter security team, gracias a Bob Lord
- Gracias a todo el equipo de http://www.securitybydefault.com / @secbydefault

6 comments :

Anónimo dijo...

Me parece curioso que pasen dos meses desde que se descubre la vulnerabilidad hasta que twitter se hace eco de ello o se le comunica...porqué es esto?

silverhack dijo...

Impresionante
Mis felicitaciones!!

cyberdardanio dijo...

@anonimo posiblemente ese haya sido el tiempo que se haya estado probando y estudiando la vulnerabilidad de todas las formas que se le hayan ido ocurriendo.

Al menos es la explicación más lógica que le veo.

Juan David dijo...

en hora buena!!

Anónimo dijo...

Al pajarito de Disney le crecen los enanitos, aunque parece que los han controlado pronto.
Felicidades por el hallazgo!

silverhack dijo...

Impresionante
Mis felicitaciones!!