Agujero de seguridad en facebook

Hace unos días, hablando con un amigo, le expliqué que a mi parecer, todas las redes sociales son inseguras, que ninguna brinda la suficiente seguridad, como para que yo depositase en ella mis datos, y que por lo tanto, por eso no utilizo facebook, ni nada similar.

Mi amigo, me respondió que facebook era muy seguro, que con los millones de personas que lo usan, seguro que muchos expertos lo habían auditado, a lo que yo le contesté que no se fiase de eso, que sistemas mas grandes, como windows, tienen muchos agujeros de seguridad, y que la seguridad no depende del número de usuarios del sistema.

Al final, todo ello desembocó en una mini discusión y finalmente, en una apuesta. Apostamos a ver si yo era capaz de descubrir un agujero de seguridad en facebook, lo suficientemente peligroso, como para robar información o incluso suplantar a un usuario normal.

Pues bien, hoy, después de solo unas cuantas horas mirando facebook, ya he encontrado el primer agujero de seguridad, un XSS que a priori no parecía explotable, pero que al final, con un poco de picaresca, he conseguido explotar.

El bug consiste en un enlace especialmente preparado, que si el usuario entra, verá su facebook, sin trampa ni cartón, pero en el centro, tendrá un texto que le dice que ha habido un error, y que haga click ahí para continuar, si lo hace, podremos ejecutar código Javascript en el contexto de facebook, y con ello, robar su cookie, por ejemplo.

Es un XSS normal y corriente, pero que requiere que el usuario siga un enlace, lo cual reduce un poco el % de éxito y la peligrosidad, ya que un usuario experto, vería el truco.

El bug reside en ciertas aplicaciones de facebook, hasta donde he podido averiguar, es decir, el usuario debe tener instalado en su facebook, una aplicación, las típicas de encuestas y cosas de esas, una vez con la aplicación instalada y autorizada, este bug solo funciona en algunas aplicaciones, por lo que la forma de proceder es la siguiente:

  1. Mirar que aplicaciones tiene instaladas tu amigo, y ver si alguna está afectada por el bug
  2. Si no tiene ninguna, invitarle a que use alguna que sabes que está afectada por el bug, esto es muy fácil
  3. Una vez el usuario tiene la aplicación afectada instalada, ya podemos proceder.

Ojo, no estamos hablando de una aplicación maligna creada por nosotros, sino de aplicaciones normales y corrientes, de las que usa la gente, las cuales algunas, son inseguras.

Una vez nuestro amigo tiene alguna aplicación vulnerable instalada, solo necesitamos que visite un enlace especialmente preparado, que le mostrará un mensaje de error, y le pedirá que haga click para continuar, ese enlace, es el XSS, que de hacer click, podría permitir robar la cookie, y enviarla a un sitio de terceros.

Yo he hecho la prueba con la aplicación “EreS BuEn PoLvO?” (lo siento, es la primera que vi vulnerable), y el enlace con el XSS, es el que sigue:

http://apps.facebook.com/qeres-buen-pol-ceijh/?target=list&send_id=1517598431&x=24897%22%20href=%22%20javascript:alert(document.cookie);%22%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Ccenter%3E%3Ch1%20style=%22color:red;position:relative;left:-60px;%22%3EA%20ocurrido%20un%20error,%20haz%20click%20aqu%C3%AD%20para%20volver%3C/h1%3E%3C/center%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%3C/a%3E%3Cspan%20style=%22

En este ejemplo, el enlace es totalmente inofensivo, si hacemos click en el texto “se ha producido un error…” solo veremos nuestra cookie en un pop up del navegador, pero nuestra cookie no se envía a ningún sitio.

Bastaría con modificar el alert, por un document.location para pasar la cookie a un sitio de terceros.

Como se puede ver, ninguna red social es segura, cualquiera con tiempo, paciencia e imaginación puede aprovecharse de cualquier cosa para suplantarte o robar tu identidad, cuando tu solo has hecho 2 clicks que parecían inofensivos.

Evidentemente, he notificado este agujero a facebook, por lo que en poco tiempo es probable que deje de funcionar (si es que hacen caso).

Para los escepticos: si os parece que esto es poco peligroso (robar la cuenta de alguien con 2 clicks de la victima) lo tenéis muy fácil: salid del blog y seguid con vuestras vidas, esto es un blog de seguridad informática (y frikadas), por lo que poner comentarios diciendo que un XSS no sirve para nada, solo conllevará la eliminación de los mismos.

31 Respuestas a “Agujero de seguridad en facebook”


  • 1) La vulnerabilidad no está “en facebook”, sino “en algún plugin de facebook”.
    Es muy difícil permitir la suficiente flexibilidad a los plugins garantizando que no puedan tener bugs.

    2) ¿”A” ocurrido un error? Se te ha caído una letra por el agujero ;-)

    Hay muchas aplicaciones que se valen de trucos así para obtener popularidad. En estos casos es más efectivo el botón “reportar aplicación”.

  • Te iba a comentar lo mismo que DZ, el error es de un portlet de Facebook, que a saber como estan hecho.

    De igual forma, comprometen la seguridad del sistema.

  • Pero cuidado, DZPM, el agujero está en el sistema de plugins de facebook, no en la propia aplicación en si.

    Cualquier aplicación que permita ver una lista de apps (basicamente) utilizando esa API, está afectada, por lo que…

    ¿De que nos sirve aquí el botón reportar aplicación?

    La aplicación utiliza una API legitima, que está defectuosa, como muchas otras, de hecho puse una de ejemplo, pero echando un ojo rapidamente, hay mas afectadas.

    Por lo que considero que al exisitir el error en la propia API de facebook, el error está en facebook y no en el plugin.

    Es como cuando petan libpng, y petán con ello X programa que la usaba. Hay que considerar que el error es del programa? No, es de libpng.

  • Adicionalmente, olvidando todo lo explicado, si yo puedo crear esa aplicación, meterla en facebook, y darte un enlace, ya hay XSS en facebook, es decir, la cookie que voy a recibir es la de facebook, no la de mi App. Por lo que, dejando a un lado los conceptos de arquitectura de facebook, el hecho final es que se roba la cookie de facebook, con un XSS, mediante acciones que no requieren privilegios, ni advierten al usuario de nada.

  • La seguridad de un sitio la marca el eslavon mas debil. En el momento que se aceptan pluguins de terceros es muy dificil hacer que todo el sistema sea seguro.

    De todas formas hay que utilizar bastante ingenieria social para hacer lo que dices. Crear tu propia aplicación y conseguir que tu victima la acepte podria ser mas sencillo. En tu aplicacion puedes añadir el javascript que quieras sin necesidad de bugs.

    Con un poco de suerte, las cookies de sesion estan vinculadas a la IP de cada usuario logueado. Por lo que leer las cookies serviria de poco si no utilizas la misma IP que tu victima. Lo has comprobado?

    Saludos!

  • Ahorita los denuncio a Facebook por hacer cosas indebidas.

  • El XSS de robar la cookie es fácilmente parcheable (no por robar la ID de sesión si no por evitar que se pueda utilizar desde otro sitio), el problema es que muchos desarrolladores no pueden dedicar las horas necesarias a revisar el sistema y incluso a veces estas redes sociales las montan desarrolladores/programadores sin ninguna idea de seguridad web.

    De igual forma, estoy de acuerdo contigo con que es un fallo de facebook, ya que es su obligación (o no) la de asegurar poner las suficientes limitaciones al desarrollo de aplicaciones para evitar el XSS.

    Aparte, no conozco la API de fuckbook como para afirmar nada, pero… ¿hay herramientas de validación de datos? porque un validador de variables GET para evitar el javascript: o el tag script es algo absolutamente necesario (entre otras muchas cosas).

  • Hola Emili,

    En teoría, los responsables de facebook intentan velar por la seguridad de los plugins (hasta cierto punto como hemos comprobado). Si realizas una aplicación claramente maliciosa, esta va a ser sin duda bloqueada por los webmasters de esta red social en cuestión. No siempre la cookie está relacionada con la ip si bien creo que no es el caso de facebook. En todo caso si tumbamos la ip original y spoofeamos la nuestra, podríamos inducir alguna cosita más a la conexión (no se si incluso se podría realizar un cambio de contraseña), en todo caso sería algo de lo que evidentemente no obtendríamos una respuesta…Me equivoco?

  • Retiro lo de la password… no se puede automatizar pq te pide la anterior… Lo que si creo factible es automatizar una pregunta y una respuesta para resetear la cuenta…

  • Muy interesante el agujero descubierto! Ya mismo hare un par de pruebas, me dio curiosidad =)

    Saludos!

  • Alguien me puede decir qué riesgo se corre robando las cookies del documento? Qué tipos de datos van en esas cookies y como se puede utilizar para hacer daño a alguien? Por ahora no soy capaz de ver hasta donde llega el peligro.

  • “si hacemos click”, es clic

  • y qué ganaste?

  • Me ha parecido muy interesante y he estado haciendo algunas pruebas. Veo que uno de los valores importantes de la cookie sería por ejemplo: XS, login_x, h_user, c_user, pero ninguno de ellos aparecen en la captura de la cookie, sólo aparecen datos que aparentemente no son útiles.

    Desde el punto de vista de la inseguridad de facebook (o de aplicaciones de terceros) por este agujero, ¿qué posibilidades nos aporta informaciones como: locale=es_ES, x-referer=http://www.facebook.com/home.php, …?

    Gracias por hacerme pasar una tarde entretenida ;)

  • hola otromas,

    a mi si me coge todas las cookies de facebook, fijate que cuando estás en apps.facebook.com estás logueado, se ve tu usuario arriba etc, Esto sería imposible sin todas las cookies.

    Un saludo.

  • Ummh… Si ejecuto el enlace sin estar logeado, primeramente me pide el usuario, y a continuación me muestra la aplicación con el mensaje de error. Los valores de la cookie que obtengo son los mismos que si ejecuto el enlace sobre una sesión abierta:
    locale, s_vsn_facebookpoc_1, test_cookie, s_cc, s_sq, presence y x-referer, si no me dejo alguno.

    ¿A ti te salen XS, login_x, h_user, c_user entre otros?

  • los programas nunca fallan, solo existen malos pensadores

  • Recomiendo instalar el plugin de Firefox NoScript.

  • http://codigodeamor.wordpress.com/

    visiten, reinagurado desde hace poco y actuaizandoce cada dia.

  • No es por maldad, pero logicamente este tipo de pluging que buscan el click enlacan y nos presentan accesos a publicidades en usan los datos a los cuales les hemos autorizado, estan basados en la popularidad.
    Nacen y mueren igual de rapidamente, no solo en facebook si no cualquier red social es por esta corta vida, que deben pensar enganches rapidos y llamativos continuamente (Que polvo eres, que personaje de ……, etc) , por eso no es raro que se queden bugs perdidos en ellos.
    Yo por eso y estoy de acuerdo contigo limito mucho los datos que facilito en estas redes, porque soy consciente de sus riesgos.

    Salu2.

  • Desde mi punto de vista (tecnicismos informáticos a parte), los agujeros de Windows no son comparables con los de Facebook y demás redes sociales. Porque Windows necesita tener esos agujeros para vendernos los antivirus y demás historias. Es negocio. En las redes sociales es que son unos dejados y punto.

    Yo uso esas redes sociales, pero directamente no pongo ni todos mis datos ni los completamente reales (Mis amigos no necesitan saber mi nombre completo, mi dirección o mi teléfono, porque ya lo conocen). Y si me roban la cuenta, poco van a sacar de ahí. Ademas, si hay quien consigue colarse en webs bancarias, ¿qué no podrán hacer con facebook?

    Un saludo, me ha parecido interesante.

    Necart.

  • Que Genial
    muchas gracias

  • Clap, clap! Muy bueno! Creo que eso demuestra que no importa lo grande que se sea, siempre habrá un Talón de Aquiles en cualquier cosa.

    Parece que no fueron suficientes los problemas de Google, la gente sigue creyendo ciegamente en grandes redes sólo por eso, porque son grandes ‘y todo el mundo está ahí y no puede pasar nada’…

    Mis felicitaciones, me saco el sombrero!

    PD: Recuérdale a tu amigo que te pague la apuesta!

    Saludos
    PLPLE

  • Internet Explorer 8 no me ha dejado abrir el sitio, modificando el contenido de la página para evitar un posible ataque de scripts de sitios.

    O sea que esa falla de seguridad es evitable escribiendo bien los navegadores.

    No he hecho más pruebas…

  • snake te pone critico !!!

    facebook es una lacra hay que eliminarlo te pude dibulgar tu privacidad aunque yo igual esa esa mierda !!!

  • pero donde encuentro el cookis con la contrasena del facebook de la otra persona.

    gracias

  • donde encuentro las cookis con el password del facebook de la otra persona.

  • valla buena info ni enterado estaba xD y ami k me gusta jugar el farmville de facebook xD y solo por eso tengo uno xD

  • a como eres pendejo xD

  • Hola, estamos haciendo un trabajo sobre fallos de seguridad en las redes sociales y tu articulo nos ha parecido muy interesante. Hemos pinchado en el link y vemos el error, pero al pinchar en él no nos aparece el pop up con las cookies. Agradeceriamos tu ayuda.
    Seria posible incluir algunos datos de tu articulo como ejemplo en nuestro trabajo?

    Gracias

Añade un Comentario