Cientos de sitios confiables se convirtieron involuntariamente en participantes de una campaña publicitaria a gran escala.
La vulnerabilidad de secuencias de comandos en sitios cruzados (XSS) en un popular framework para recorridos virtuales de 360° ha sido explotada por atacantes para inyectar masivamente scripts maliciosos en cientos de sitios web. El objetivo del ataque es manipular los resultados de búsqueda y llevar a cabo una campaña a gran escala para la promoción de anuncios de spam.
Según informa el investigador de seguridad independiente Oleg Zaytsev, la campaña, denominada 360XSS, ha afectado a más de 350 sitios, incluidos portales gubernamentales, universidades, hoteles, concesionarios de automóviles y grandes corporaciones de la lista Fortune 500.
Todos estos sitios utilizaban Krpano, un framework popular para la integración de imágenes y videos de 360°, que permite la creación de recorridos virtuales. Zaytsev descubrió la campaña por casualidad al notar publicidad de contenido pornográfico promovida a través de un dominio de la Universidad de Yale.
El mecanismo del ataque se basa en la transmisión de un parámetro XML que permite cargar una configuración externa. El código malicioso, codificado en Base64, se ejecutaba al acceder a una URL manipulada, lo que provocaba redirecciones a páginas publicitarias. La función passQueryParameters, utilizada en Krpano, transmitía parámetros HTTP al manejador, lo que permitía explotar la vulnerabilidad XSS.
El problema en Krpano se conocía desde 2020, cuando se registró la vulnerabilidad CVE-2020-24901 con una puntuación de 6.1 en la escala CVSS. En ese momento, los desarrolladores del framework lanzaron la versión 1.20.10, en la que se restringió el mecanismo de transmisión de parámetros a una lista de valores permitidos. Sin embargo, la investigación reveló que la adición explícita del parámetro XML a la lista de excepciones reabría la posibilidad de ataque.
Según Zaytsev, los atacantes utilizaron la vulnerabilidad para secuestrar masivamente dominios de confianza con el fin de promocionar publicidad de juegos de azar, suplementos dietéticos, noticias falsas e incluso aumentar las visualizaciones en YouTube. El uso de XSS para SEO Poisoning permitió que estos sitios subieran en los resultados de búsqueda, creando la ilusión de legitimidad.
Aunque el XSS normalmente requiere la interacción del usuario, en este caso, la propagación de enlaces a través de motores de búsqueda hizo que el ataque fuera especialmente efectivo. Zaytsev calificó este método como muy creativo y destacó que permite eludir fácilmente las medidas de protección tradicionales.
Tras la divulgación del problema, los desarrolladores de Krpano lanzaron la actualización 1.22.4, que desactiva por completo el soporte para configuraciones XML externas. Ahora, el parámetro passQueryParameters ya no puede utilizar URLs fuera del directorio actual.
La identidad de los atacantes sigue siendo desconocida, pero la naturaleza del ataque sugiere la participación de una red publicitaria con métodos de monetización cuestionables. Se recomienda a todos los propietarios de sitios que utilicen Krpano actualizar el framework a la última versión y deshabilitar passQueryParameters. A quienes ya hayan sido afectados se les aconseja buscar y eliminar las páginas comprometidas mediante Google Search Console.