lunes, febrero 22, 2010

Firefox, Gmail y el contenido mixto Http/Https

Como muchos ya sabéis, yo soy el confidente de Bil Gates y tengo línea directa con él, así que podéis seguir enviándome todos vuestros problemas con tecnología Microsoft. Será un placer para mí hacer caso a vuestras demandas de información o no. En este caso quiero hacer una rápida respuesta al tema de “No veo las imágenes de Gmail con IE8”.

Sí, supongo que muchos habréis oído eso de “Joder, es que Internet Explorer es una mierda y por eso no se ven las imágenes”. Claro, es porque esos chavalotes de RedMond no deben saber programar.

El caso de la historia se remonta a BlackHat 2008, donde un chavalote rubio con rastas en el pelo de Pittsburg, daba una charla sobre, como él dice: “Puentes”. Sí, sobre los puentes que se construyen entre páginas con contenido transmitido con conexiones seguras https y contenido transmitido con conexiones sin cifrar http.

La idea es que la gente se conecta a un banco por su URL sin especificar su conexión http a la web pública, es decir, con http://www.mibanco.com y espera ser conectado, mediante un link a la parte de login, es decir, a https://www.mibanco.com/login.aspx [.NET, que es más mejor].

Con un juguetito que hizo él, que se llama ssltrip, el objetivo es que, mediante un ataque de Man In The Middle, cuando se reciba el código html de la página, todos los links https son “strippeados”, es decir, se les quita la “s”. De tal forma que el usuario, acostumbrado a conectarse con un link a su conexión segura, no se da cuenta de nada. Además, para que la gracia sea mejor, lo que Moxie propone es no quitar todos los https, es decir, dejar parte del contenido en https y lo que nos interesa en http con lo que algunos navegadores, que admiten contenido mixto http y https no mostrarán ninguna alerta al usuario e incluso mantendrán el candadito de conexión segura https en la barra de título. ¿A que no mola si te lo hacen a ti?

Para eso, en MS Internet Explorer 8, cuando estás en una conexión segura, eres tú el que decide como quieres que se comporte el navegador ante esas situaciones. Basta irse a las opciones de seguridad (¿benditas opciones, verdad?) y elegir el comportamiento deseado. En mi caso he elegido que se me informe.


Figura 1: Configuración de comportamiento ante contenido mixto

En este ejemplo, si yo entro a ver el Tchenews en mi conexión segura de Gmail, obtendré una alerta si lo hago desde Internet Explorer 8 que me informa de que las imágenes se cargan con http (sí, así lo hacemos en el Technews) y yo puedo decidir si me fío o no del contenido pero, está claro, que si alguien me pide una password en esa página ya sé que puedo estar en riesgo.


Figura 2: Alerta de contenido con http en una conexión https


Figura 3: Y se cargan las imágenes

Sin embargo, si hago lo mismo con Firefox, lo que obtengo es que se me cargan las imágenes ipso facto. ¿Qué guay no? Sin avisar ni nada, y en la barra de título el protocolo sigue siendo https por defecto. Así que debes tenerlo presente y configurar las opciones de seguridad.


Figura 4: En Firefox del tirón

Para evitar comportamientos de riesgo en este tipo de navegadores, el Killer MS Outlook Web Access, uses el navegador que uses, si las imagenes se cargan sin ser de forma segura, te avisa él mismo. Eso quiere decir que podría implementarlo Gmail... si le importase de verdad la seguridad, ¿no?


Figura 5: OWA 2k7 bloqueando el contenido inseguro

Saludos Malignos!

ACTUALIZACIÓN:

No me creía que no recordara la opción de FF así que he instalado una nueva copia y el campeón, primero carga el contenido remoto inseguro y luego te avisa. A tutiplén.


Figura: La imagen cargada y encima la alerta de seguridad

Vamos a probar una de Chrome por defecto, que dicen las malas lenguas que tampoco lo hace bien

37 comentarios:

  1. Tan fácil como en Firefox:

    Preferencias > Seguridad > Mensajes de advertencia: Configuración > Marcar la opción: "Vaya visualizar una página cifrada que contenga información no cifrada."

    Así que similar que en tu querido IE8.

    ResponderEliminar
  2. Cierto, anónimo, cambiado en el post. La pena es que no sea "la configuración por defecto".

    Saludos!

    ResponderEliminar
  3. Pero si firefox hace lo mismo... tus palabras exactas,cambiando el navegador.

    Para eso, en Firefox, cuando estás en una conexión segura, eres tú el que decide como quieres que se comporte el navegador ante esas situaciones. Basta irse a las opciones de seguridad (¿benditas opciones, verdad?) y elegir el comportamiento deseado. En mi caso he elegido que se me informe.

    http://img710.imageshack.us/img710/8140/pantallazoadvertenciasd.png

    ResponderEliminar
  4. La diferencia aqui es que Firefox la primera vez que conecta un sitio HTTPS con elementos HTTP te muestra una alerta con una casillita de: No seas mas pesado y no me avises mas, que yo ya me apaño...

    Y seguro que marcastes esa casilla y ya no te acordabas :)

    Prueba una instalacion nueva de Firefox.

    ResponderEliminar
  5. @Pedro Laguna, voy a instalarme la FF limpia a ver si he sido yo o ha sido él. De todas formas, Gmail, debería avisarte como OWA o Hotmail.

    Saludos!

    ResponderEliminar
  6. A parte... Aunque hayas configurado FF para que no te avise más, la marca en azul o verde indicando el nivel del certificado desaparece y el candado inferior muestra una exclamación y un tooltip informando del motivo si reposas el puntero sobre él.

    Quiero decir... que te lo podías haber revisado más, no?

    ResponderEliminar
  7. @Pedro, ahí tienes el comportamiento por defecto. Bastante divertido para robar hashes y realizar ataques CSRF. Primero la carga y luego te avisa. Un campeón.

    ResponderEliminar
  8. Bueno, comprobado Google Chrome ni avisa. EPIC FAIL!!!

    ResponderEliminar
  9. No es por hacer sangre, pero si carga las imagenes sin preguntar es porque tambien la primera vez que recibes un correo con imagenes te dice: quieres que te las muestre ahora o siempre? Es mas facil darle siempre...

    Mirate si no tienes activado esto: http://img695.imageshack.us/img695/1707/30857112.png

    ResponderEliminar
  10. @Pedro, he puesto la imagen por defecto en el post. Primero las carga y luego te avisa.

    ResponderEliminar
  11. Y para más INRI la alerta es invertida, por defecto no te avisa y tú tienes que pedir expresamente que te avise.

    ResponderEliminar
  12. Pues vaya, es verdad... mirando con el Wireshark si que hace las peticiones... lastima que no me pilles con ningun IE8 a mano para probar lo mismo ;)

    @Maligno: Ya sabes, https://bugzilla.mozilla.org/enter_bug.cgi

    ResponderEliminar
  13. Anónimo que no quiere pagar una cena22/2/10 11:35 a. m.

    @Pedro, me juego 1 cena a que si das de alta el bug alguien te dirá que es una feature :)

    ResponderEliminar
  14. En twitter te preguntaba si existe una solución real para no tener que mezclar contenidos, como por ejemplo incrustar las imágenes dentro del correo.
    La culpa no es de los navegadores, aunque si tendrían que avisar como hace ie8.

    Firmado: el que prendió la mecha

    Por cierto, opera 10.10 también FAIL

    ResponderEliminar
  15. alguno me tachara de masoca por usarlo... perooo, que me decis de Safari? por que me parece que mas de lo mismo...

    ResponderEliminar
  16. firefox>>about:config>> security.warn_viewing_mixed;(false/true)

    desde 2006 activo (y por defecto)en firefox... en IE desde cuando?

    Chema que saques al OWA+Firefox tiene tela...

    Eso si, cada vez que posteas algo de firefox te salen amigos por todas partes..

    Saludos!

    Wi®

    ResponderEliminar
  17. Centos, en IE desde muuuuuucho antes,pero léete la actualización del post... Que en FF vale para más bien poco esa opción.

    Saludos!

    PD: Sale OWA pq también quería darle lo suyo a Gmail. ;)

    ResponderEliminar
  18. leo leo (que lo dejé abierto esta mañana y no refrescó solo), pues fail de FF..

    Tampoco IE8 lo hace mejor Chema..

    vete a
    https://blogs.msdn.com/askie/archive/2009/05/14/mixed-content-and-internet-explorer-8-0.aspx

    con los dos navegadores y a ver cual de los dos te cuenta que hay contenido sin autenticar... (no he tocado nada en IE8 y me lo da como página segura) mientras FF avisa con el simbolito de admiracion en el candado.. (subiría fotos y eso pero el señor NDA no me deja, no tengo otros pc para probar sorry)

    Por cierto en esa web en mayo del año pasado ya se quejaban de tu IE + FaceBook o GMail por estos temas

    Saludos, voy a ver si curro algo :P

    Wi®

    ResponderEliminar
  19. Hola

    Y siguen las cagadas y los juegos entre navegadores, que chuli xD

    Nos vemos mañana en el security day
    Una cena hoy noche?

    ResponderEliminar
  20. @Centos, a mi me da, con IE8, un pedazo de alerta como la que se ve en el post...

    Saludos!

    ResponderEliminar
  21. IE8 no hace las peticiones antes de preguntar.

    ResponderEliminar
  22. Chema, hay un 0day en FF3.6 y tú aquí perdiendo el tiempo con nimiedades.

    ResponderEliminar
  23. Que puta mierda de volumen de usuarios debe usar IE8 que nos están dando la chapa...decididamente creo que lo haces por trolear, o las cosas van muy mal con esa mierda de navegador SUPER-PROPIETARIO jodedor de desarrolladores.

    Se lo podían meter por el ojal.

    ResponderEliminar
  24. @Anónimo: No vuelvas a cambiar las pastillas de la noche por las del desayuno.

    ResponderEliminar
  25. @Tayoken, le iba a decir algo similar, pero como Ricky Rubio, estás al quite macho!

    jajaja.

    ResponderEliminar
  26. Lo mismo pasa con Buzz (sí la chapuza de web social de Google) teniendo activado en FF que te avise al pasar de un contenido a otro lo hace pero carga los link de igual modo.

    Tengo que decir que yo soy de FF pero la verdad es que se tienen que espabilar mucho por lo que estoy viendo el tema de la seguridad.

    Que Chrome non haga nada se puede achacar a que esta en fase beta (como el 90% de los proyectos de Google, buena forma de cubrirse las espaldas).

    S2!

    ResponderEliminar
  27. @Tonio, están en version 4.0!!!! que tiene webs la cosa...

    ResponderEliminar
  28. Bueno, no he podido hacer las pruebas hasta ahora pero despues de crear un sitio con SSL, crear una pagina que cargase contenido mixto, sacar de paseo el Wireshark y revisar unos logs de Apache... Debo decir que IE8 hace el mismo comportamiendo que Firefox: carga y despues pregunta: http://img52.imageshack.us/img52/189/ie8.png

    La unica diferencia aqui es que Firefox muestra las imagenes e Internet Explorer las esconde, por lo que podriamos pensar que estamos mas seguros...

    ResponderEliminar
  29. @Pedro Laguna, mirando el correo en detalle, me parece que Gmail es el que debería preveer de esta situación, como hace OWA.

    No obstante, que Chrome no avise y que la alerta de Firefox sea por defecto no avisar y tan fácil de desactivar, debería ser mejorada.

    Saludos!

    ResponderEliminar
  30. Mucho comentario que voy a pasar de leerme. Perdería mucho tiempo para decir...

    "Pero gmail tiene la opción de evitar que salgan las imagenes de los correos. Si confiamos en ese correo, le dices que las muestre". :S.

    Vale. No es lo mismo que la propia aplicación web trate ese tema a que lo haga el navegador. Estoy tooooootaaaaaalmente de acuerdo. Pero, a poco que haga eso, algo, es algo. ¿No? :P

    ResponderEliminar
  31. @Maligno, y GMail lo hace, ya te lo puse en otro comentario. La primera vez que cargas un email con imagenes de un remitente desconocido te pregunta si quieres mostrarlas una vez o siempre. Yo como confio en I64 le di que siempre a las imagenes del technet...

    Por otro lado creo que el comportamiento de Internet Explorer es mas peligroso. Mostrar una imagen vacia como si no se hubiese cargado la imagen puede dar falsa sensacion de seguridad al usuario, cuando realmente las peticiones se han realizado.

    Lo que si veo mejor es el mensaje de advertencia de Internet Explorer, el texto es mucho mas claro y conciso, ademas de dar la opcion de decir que no (aunque luego no haga nada...)

    Saludos!

    ResponderEliminar
  32. @Pedro_Laguna, me has hecho hacerme una cuenta nueva en Gmail y comprobarlo. El mensaje que da es de "no se muestran las imagenes" no de contenido mixto. Es decir, es para los amantes del texto y el correo rápido.

    Además, la configuración no es por email sino por dirección de remitente y viendo como se comporta gmail con los correos spoofeados, eso es sigue siendo una chapuza. Sin hablar de que no sé si se puede volver atrás esa configuración, porque no he sido capaz de encontrar la lista de direcciones que yo he aprobado.

    Saludos!

    Por último, la prueba que nos queda por hacer es mirar

    ResponderEliminar
  33. @Pedro_Laguna Con respecto al contenido mixto, si está publicado con http en el servidor, quiere decir que el servidor no está preocupado por el objeto. Es el usuario el que debe estar preocupado por ello en no interactuar con el objeto, me parece mejor que no se pueda interactuar con él a que te avise de que se ha cargado y no sepas cual es objeto. De todas formas, estoy contigo en que yo pondría la alerta y luego haría las peticiones.

    Saludos!

    ResponderEliminar
  34. Si no fuese porque te conozco pensaria que no me lees...

    Para desactivar por email la opcion de que te muestre las imagenes solo tienes que hacer click en Mostrar detalles y luego en dejar de mostrar imagenes por defecto: http://img695.imageshack.us/img695/1707/30857112.png

    Quizas la opcion del IE "cante" mas al mostrar la imagen rota y descolocar la estructura de la pagina, pero esto con un poco de CSS tambien se podria solventar.

    Lo de los correos spoofeados te lo dejo a ti, yo ahora ando con una extension de Greasemonkey que elimine todas las referencias a imagenes externas inseguras cuando navegamos por paginas HTTPS. Te avisare cuando la termine para que puedas tener el navegador mas seguro de todos para navegar por paginas de contenidos mixtos ;)

    Saludos!

    ResponderEliminar
  35. @Pedro_Laguna, sí, y ya he visto donde desactivo la de ese usuario, pero no tengo la lista de todos los aprobados. Hazme una extensión en grease monkey tb para ello ;)

    De todas formas, como bien dice es por remitente, y eso es un validador estático, y tú sabes lo que eso signfica...

    Pero en fin, que sea ese el menor de los problemas de Gmail...

    ;)

    ResponderEliminar
  36. Como ya comentaste en algún momento (y lo corroboramos muy buin, :D ) también les falta trabajar con el SPF. Porque mucho poner en las cabeceras que si fail, que si fail, pero después se lo come con patatas fritas.

    ResponderEliminar
  37. Bueno, no es la panacea, pero al menos funcionara en la mayoria de los casos: Mixed content protection

    Bloquea todas las referencias inseguras en una pagina intentando cargarlas de manera segura. Si no puede cargarlas hace como Internet Explorer 8, no muestra el recurso. Pero, en este caso, sin que se haga la peticion insegura primero.

    No funciona con elementos llamados desde ficheros Javascript o mediante CSS.

    Ahora lo puedo decir, mi Firefox es mas seguro que tu IE8 (al menos en lo que a contenidos mixtos se refiere :P )

    Sugerencias y bugs bienvenidos!!

    ResponderEliminar