El contenido mixto se produce cuando los sitios protegidos por TLS incluyen elementos que se cargan a través del protocolo HTTP no seguro. Esto crea una vulnerabilidad de la que se pueden aprovechar los atacantes.
Después de leer este artículo podrás:
Contenido relacionado
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el enlace del artículo
Con TLS (también conocido como SSL), la comunicación en Internet se encripta, creando una experiencia de navegación más segura. Los usuarios pueden identificar fácilmente los sitios encriptados con TLS porque tienen "https://" en la URL en lugar de "http://". Pero en algunos casos, un sitio HTTPS también puede incluir algunos elementos que se cargan utilizando el protocolo HTTP en texto plano. Esto crea una condición conocida como contenido mixto, a veces denominado "HTTP sobre HTTPS".
Con el contenido mixto, los usuarios tendrán la impresión de que están en una conexión segura y encriptada porque están en un sitio protegido por HTTPS, pero los elementos no encriptados de la página crean vulnerabilidades, abriendo a esos usuarios a actividades maliciosas como el rastreo no autorizado y los ataques en ruta. La gravedad de la vulnerabilidad depende de si el contenido mixto es pasivo o activo.
Contenido mixto pasivo/de muestra: en este caso, el contenido HTTP no encriptado se limita a los elementos encapsulados del sitio que no pueden interactuar con el resto de la página, por ejemplo, imágenes o vídeos. Por ejemplo, un atacante puede bloquear o sustituir una imagen cargada a través de HTTP, pero no podría modificar el resto de la página.
Contenido Mixto Activo: en este caso, los elementos o dependencias que pueden interactuar y alterar toda la página web se sirven a través de HTTP. Esto incluye dependencias como archivos JavaScript y solicitudes de API.
El contenido mixto activo presenta una amenaza más grave que el contenido mixto pasivo/de muestra; cuando se ve comprometido, permite que un atacante tome el control de toda una página web, recopile datos confidenciales del usuario, como las credenciales de inicio de sesión, sirva al usuario una página falsa o redirija al usuario a un sitio del atacante.
La mayoría de los navegadores modernos tienen advertencias para el contenido mixto en la consola de desarrollador, así como el bloqueo de los tipos más peligrosos de contenido mixto. Cada navegador tiene su propio conjunto de reglas, pero en general, es mucho más probable que se bloquee el contenido mixto activo.
Aunque el contenido mixto pasivo/de muestra supone una amenaza menor, sigue siendo una oportunidad para que los atacantes pongan en riesgo la privacidad y rastreen la actividad del usuario. Además, debido a que muchos navegadores permiten algunas formas de contenido mixto pasivo, y solo proporcionan a los usuarios advertencias de contenido mixto en la consola de desarrollador, muchos usuarios no serán conscientes de que están expuestos a contenido mixto.
Los usuarios de navegadores anticuados son especialmente vulnerables, ya que puede que estos navegadores no bloqueen el contenido mixto.
Desgraciadamente, un gran número de sitios web populares ofrecen contenidos mixtos de una u otra forma. Un navegador que bloquee todos los contenidos mixtos estaría ofreciendo a sus usuarios una versión muy limitada de la web. Hasta que un mayor número de sitios web solucione este problema, los navegadores tienen que asumir riesgos al permitir algunas de las formas menos graves de contenido mixto.
Los desarrolladores web tienen la responsabilidad de eliminar los contenidos mixtos. Con el paso del tiempo, los navegadores se han vuelto cada vez más restrictivos en lo que respecta al contenido mixto, y esta tendencia continuará. Por lo tanto, es imperativo que los desarrolladores eliminen el contenido mixto si quieren que los navegadores web sigan mostrando su sitio.
La solución para el contenido mixto es bastante sencilla: los desarrolladores web deben asegurarse de que todos los recursos de su página se carguen por HTTPS. En la práctica, esto puede resultar complicado, ya que los sitios web modernos suelen cargar varios recursos diferentes desde varios lugares.
Una buena herramienta para que los desarrolladores detecten todas las instancias de contenido mixto en sus páginas es la consola de desarrollador de Google Chrome. Los desarrolladores también pueden comprobar su código fuente para buscar instancias de recursos, como llamadas a la API y bibliotecas, que se cargan utilizando una URL 'http://'. En algunos casos, la solución pasa por sustituir la URL 'http://' por 'https://'. Pero primero hay que comprobar que existe una versión HTTPS de ese recurso. Si no hay una versión encriptada del recurso, habrá que sustituirlo o eliminarlo por completo.