Contenido mixto HTTPS: Sigue siendo la Forma Más Fácil de Romper SSL

Los problemas de contenido mixto surgen cuando los sitios web entregan sus páginas a través de HTTPS, pero permiten que algunos de los recursos se entreguen en texto plano. El atacante de red activo no puede hacer nada sobre el tráfico cifrado, pero jugar con el texto plano puede resultar en ataques que van desde el phishing en el mejor de los casos hasta el compromiso total del navegador en el peor. Un solo script expuesto es suficiente: el atacante puede secuestrar la conexión e inyectarle cargas útiles de ataque arbitrarias.

Tendemos a hablar mucho sobre otros aspectos de SSL/TLS, pero el contenido mixto es posiblemente la forma más fácil de estropear por completo el cifrado de su sitio web.

En los primeros días de la Web, se permitía todo el contenido mixto; los navegadores web esperaban que los operadores del sitio pensaran en las consecuencias de mezclar contenido. Eso, por supuesto, no resultó con gran seguridad. Los operadores del sitio hicieron lo que necesitaban para realizar su trabajo y reducir los costos. Solo en los últimos años, los proveedores de navegadores comenzaron a prestar atención y a restringir el contenido mixto.

Contenido mixto en los navegadores modernos

Hoy en día, casi todos los navegadores principales tienden a dividir el contenido mixto en dos categorías: pasivo para imágenes, videos y sonido; y activo para recursos más peligrosos, como scripts. Tienden a permitir contenido mixto pasivo de forma predeterminada, pero rechazan el contenido activo. Esto es claramente un compromiso entre romper la Web y una seguridad razonable.

Internet Explorer ha sido el líder en el manejo seguro de contenido mixto. Ya en Internet Explorer 5 (según este post), tenían detección y prevención de contenido inseguro de forma predeterminada. Chrome comenzó a bloquear de forma predeterminada en 2011, y Firefox en 2013. Sin embargo, el navegador predeterminado de Android y Safari aún permiten todo el contenido mixto sin restricciones (y con advertencias casi inexistentes).

Aquí están los resultados de mis pruebas recientes de qué contenido inseguro está permitido por defecto:

Navegador Imágenes CSS secuencias de comandos XHR WebSockets Marcos
navegador de Android 4.4.x
Chrome 33 No No No
Firefox 28 No No No No No
Internet Explorer 11 No No No No No
Safari 7

En su mayoría son tan esperanzadores, pero hay una sorpresa con Chrome, que bloquea el contenido de la página activa, pero aún permite conexiones de texto sin formato XMLHttpRequest y WebSocket.

vale la pena mencionar que la tabla no nos dice todo. Por ejemplo, los navegadores tienden a no controlar lo que hacen sus complementos. Además, ciertos componentes (por ejemplo, Flash o Java) son entornos completos por derecho propio, y hay poco que los navegadores pueden hacer para reforzar la seguridad.

Pruebas para el manejo de contenido mixto en SSL Labs

Para que sea más fácil evaluar el manejo del navegador de este problema, recientemente extendí la prueba de cliente de SSL Labs para probar el manejo de contenido mixto. Cuando visita la página, se prueba su navegador de usuario y obtendrá resultados similares a estos:

ssl-labs-client-test-mixed-content

Prevalencia de contenido mixto

Anecdóticamente, el contenido mixto es muy común. En Qualys, investigamos este problema en 2011, junto con varios otros problemas a nivel de aplicación que resultan en la rotura total del cifrado en las aplicaciones web. Analizamos las páginas de inicio de unos 250.000 sitios web seguros de la lista de los 1 millones de Alexa, y determinamos que el 22,41% de ellos utilizaba contenido inseguro. Si se excluyen las imágenes, el número cae al 18,71%.

En 2013 se realizó un estudio más detallado de 18.526 sitios extraídos de Alexa top 100.000: Una mezcla peligrosa: Análisis a gran escala de sitios web de contenido mixto (Chen et al.). Para cada sitio se analizaron hasta 200 páginas seguras, con un total de 481.656 páginas. Sus resultados indican que hasta el 43% de los sitios web tienen problemas de contenido mixto.

Mitigación

La mejor defensa contra problemas de contenido mixto es simplemente no tener este tipo de problema en su código. Pero eso es fácil de decir que de hacer; hay muchas maneras en las que el contenido mixto puede subir. Cuando eso falla, hay dos tecnologías que pueden ser útiles:

  • HTTP Strict Transport Security (HSTS) es un mecanismo que impone la recuperación segura de recursos, incluso ante errores de usuario (intentar acceder a su sitio web en el puerto 80) y errores de implementación (los desarrolladores colocan un enlace inseguro en una página segura). HSTS es una de las mejores cosas que le han pasado a TLS recientemente, pero solo funciona en los nombres de host que controlas.
  • La política de seguridad de contenido (CSP) se puede usar para bloquear la recuperación de recursos insegura de sitios web de terceros. También tiene muchas otras características útiles para abordar otros problemas de seguridad de aplicaciones, por ejemplo, XSS.

Write a Comment

Tu dirección de correo electrónico no será publicada.