360XSS: inyección masiva de anuncios a través de panoramas virtuales

dell vulerabilidaades
Múltiples Vulnerabilidades en Productos Dell: Riesgos y soluciones
28 de febrero de 2025
opsec
Seguridad Operacional (OPSEC): Protegiendo la Información crítica
3 de marzo de 2025

Una vulnerabilidad de Cross-Site Scripting (XSS) en el framework Krpano, utilizado para integrar imágenes y videos de 360° en sitios web y desarrollar recorridos virtuales y experiencias de realidad virtual (VR), ha sido explotada en una campaña masiva de spam que afecta a más de 350 sitios web. Entre los afectados se encuentran portales gubernamentales, universidades estadounidenses, cadenas hoteleras, medios de comunicación y empresas de la lista Fortune 500. Esta campaña ha manipulado los resultados de búsqueda, redirigiendo a los usuarios a contenido no deseado y potencialmente malicioso.

El investigador Oleg Zaytsev descubrió esta vulnerabilidad al encontrar un anuncio de contenido pornográfico en los resultados de búsqueda de Google, cuya URL apuntaba a un subdominio del sitio oficial de la Universidad de Yale:

Este subdominio correspondía a un recorrido virtual del Instituto de Cuántica de Yale. La URL contenía un parámetro que apuntaba a otra URL de un sitio legítimo, en este caso, la Asociación Scout del Reino Unido. El subdominio de esta segunda URL había sido comprometido a través de una cuenta abandonada de Azure. Al acceder a dicha URL, se obtenía un documento XML con una carga útil codificada en Base64 que, al decodificarse y ejecutarse, cargaba el anuncio en un tercer sitio web legítimo. Como resultado, la URL aparentemente legítima de la Universidad de Yale redirigía al contenido pornográfico. Si se eliminaba el parámetro ‘xml’, la redirección no ocurría y se accedía al recorrido virtual original.

Configuración insegura en Krpano

Krpano incluye un parámetro de configuración llamado ‘passQueryParameters’, que determina si se permiten pasar parámetros de URL al visor panorámico. En versiones anteriores, este parámetro estaba configurado por defecto en ‘true’, lo que permitía que cualquier parámetro de la URL se transmitiera al visor. A partir de la versión 1.20.10, el valor por defecto se cambió a ‘false’, permitiendo solo los parámetros especificados en una lista blanca. Además, en la versión 1.22.4, se implementaron restricciones adicionales:

  • No se permiten URLs que comiencen con ‘data://’ ni URLs externas.
  • Los valores del parámetro ‘xml’ se limitan a aquellos dentro de la estructura de carpetas actual.

Utilizando técnicas de ‘Google dorking’, Zaytsev descubrió que más de 350 sitios web habían sido comprometidos explotando esta vulnerabilidad en Krpano. Estos sitios, muchos de ellos con millones de visitas mensuales, fueron utilizados para envenenamiento de SEO (SEO poisoning) y distribución de spam y anuncios potencialmente maliciosos. Los atacantes controlaban el título, la descripción y la miniatura de los resultados de búsqueda, falsificaban las puntuaciones de las reseñas y utilizaban cadenas de texto aleatorias en cada título para hacer que cada resultado fuera único.

Recomendaciones para mitigar riesgos

Si administras un sitio web que utiliza Krpano, es fundamental tomar medidas para mitigar riesgos y evitar que el sitio sea explotado por atacantes. Se recomienda:

  • Actualizar Krpano a la última versión disponible: Esto garantiza que se apliquen las últimas correcciones de seguridad y configuraciones predeterminadas más seguras.
  • Configurar ‘passQueryParameters’ a ‘false’: O especificar únicamente los parámetros que no permitan la ejecución de código, limitando así la superficie de ataque.
  • Utilizar herramientas como Google Search Console: Para identificar y eliminar las páginas infectadas de los resultados de búsqueda, evitando que los usuarios accedan a contenido comprometido.

Implementar estas medidas ayudará a proteger tu sitio web contra vulnerabilidades XSS y reducirá el riesgo de que sea utilizado en campañas de spam o ataques más sofisticados.