Resumen ejecutivo:
- El 25 de junio de 2024, el equipo forense de Sansec publicó un informe revelando un ataque a la cadena de suministro dirigido al ampliamente utilizado Polyfill.io ampliamente utilizada. El ataque se originó en febrero de 2024, cuando Funnull, una empresa china, adquirió el dominio Polyfill.io y la cuenta de GitHub, anteriormente legítimos. Poco después, el servicio comenzó a redirigir a los usuarios a sitios maliciosos y a desplegar malware sofisticado con técnicas de evasión avanzadas.
- El 27 de junio de 2024, Namecheap suspendido el malicioso polyfill.io mitigando la amenaza inmediata por ahora. Sin embargo, Censys sigue detectando 384.773 anfitriones incrustando un script polyfill JS que enlaza con el dominio malicioso a partir del 2 de julio de 2024, localizado principalmente en Alemania.
- Entre estos hosts se encuentran sitios web asociados a importantes plataformas como Hulu, Mercedes-Benz y WarnerBros. Los expertos en seguridad recomiendan encarecidamente a los propietarios de sitios web que eliminen cualquier referencia a polyfill.io y sus dominios asociados de su código base como medida de precaución. Cloudflare y Fastly han ofrecido puntos finales alternativos y seguros para los servicios de polyfill como solución.
- Investigaciones posteriores han descubierto una red más extensa de dominios potencialmente comprometidos. Los investigadores identificaron cuatro dominios activos adicionales vinculados a la misma cuenta que poseía el dominio polyfill.io. Censys detectó 1.637.160 hosts que hacían referencia a uno o más de estos puntos finales. Se ha observado que al menos uno de estos dominios realiza actividades maliciosas desde junio de 2023, pero se desconoce la naturaleza de los otros dominios asociados.
- Este incidente pone de manifiesto la creciente amenaza de ataques a la cadena de suministro de proyectos de código abierto.
- Detección con Censys
Antecedentes:
En la última semana, la comunidad de desarrolladores web se ha visto sacudida por un ataque a la cadena de suministro dirigido a la biblioteca de JavaScript Polyfill.io, ampliamente utilizada. Polyfill.js está diseñada para dar soporte a herramientas y funcionalidades más modernas en navegadores web antiguos que no las soportan de forma nativa, con el fin de mantener la compatibilidad cruzada.
En febrero de 2024, el dominio Polyfill.io y la cuenta de GitHub fueron adquiridos por Funnull, una empresa china de CDN, lo que suscitó preocupaciones inmediatas sobre la legitimidad del servicio. Posteriormente, el malware inyectado a través de cdn.polyfill.io comenzó a redirigir a los usuarios a sitios maliciosos, afectando a informes de más de 100.000 sitios web, incluidas plataformas de alto perfil como JSTOR, Intuit y el Foro Económico Mundial. Este sofisticado malware emplea diversas técnicas de evasión, lo que lo hace especialmente difícil de detectar y combatir.
Varias empresas han respondido a esta situación. Cloudflare y Fastly han ofrecido puntos finales alternativos y seguros para los usuarios. Google ha bloqueado los anuncios de los sitios de comercio electrónico que utilizan Polyfill.io. El bloqueador de sitios web uBlock Origin ha añadido el dominio a su lista de filtros. Andrew Betts, el creador original de Polyfill.io, ha instado a los propietarios de sitios web a eliminar inmediatamente la biblioteca, haciendo hincapié en que ya no es necesaria para los navegadores modernos.
La novedad más importante es que el 27 de junio, Namecheap, el registrador de dominios de polyfill.io, retiró el dominio malicioso, lo que mitiga la amenaza inmediata.
Esta historia es un recordatorio de la creciente amenaza de ataques a la cadena de suministro de proyectos de código abierto, especialmente en el ecosistema de desarrollo web, donde las aplicaciones dependen de una pila tecnológica diversa de paquetes de código abierto para su funcionalidad. Estas dependencias pueden llegar a ser tenues. Un ejemplo memorable es de 2016, cuando la eliminación de un solo paquete JavaScript de código abierto de npm por un desarrollador causó una interrupción generalizada en los sitios web de todo el mundo, lo que llevó a npm a revertir la acción en solo 2 horas. Las dependencias interconectadas dentro del ecosistema de código abierto tienen implicaciones de seguridad interconectadas.
(xkcd relevante: https://www.explainxkcd.com/wiki/index.php/2347:_Dependency)
Censys Hallazgos
Censys ha identificado un número significativo de alojamientos web que utilizan la CDN polyfill.io. Según los últimos datos 384.773 hosts que incluyen referencias a "https://cdn.polyfill[.]io" o "https://cdn.polyfill[.]com" en sus respuestas HTTP.
Una notable concentración de estos hosts, aproximadamente 237.700, están ubicados dentro de la red Hetzner (AS24940), principalmente en Alemania. Esto no es sorprendente, ya que Hetzner es un servicio de alojamiento web muy popular y muchos desarrolladores de sitios web lo utilizan.
Un análisis más detallado de los hosts afectados revela dominios vinculados a grandes empresas como Warner Bros (www.warnerbros.com), Hulu (www.hulu.com), Mercedes-Benz (shop.mercedes-benz.com) y Pearson (digital-library-qa.pearson.com, digital-library-stg.pearson.com) que tienen un gran número de hosts que hacen referencia al endpoint polyfill malicioso. Curiosamente, el nombre de host más común asociado con los hosts que presentan el endpoint es ns-static-assets.s3.amazonaws.comlo que indica un uso extendido entre los usuarios del alojamiento de sitios web estáticos S3 de Amazon.
La presencia de dominios como "www.feedthefuture.gov" en estos primeros resultados también pone de manifiesto el uso de polyfill.io en diversos sectores, incluidos los sitios web gubernamentales. En total, Censys observó 182 hosts afectados que mostraban un dominio ".gov".
Consulte el siguiente informe en el que se desglosan los nombres de host de los sitios que utilizan este punto final.
Aunque las estimaciones de la magnitud de los sitios web afectados varían mucho según las fuentes (Sansec informó de 100.000, mientras que Cloudflare sugirió "decenas de millones"), está claro que este ataque a la cadena de suministro ha tenido un impacto generalizado.
Cloudflare y Fastly han creado puntos finales de polyfill seguros alternativos para que los usuarios mitiguen la amenaza y eviten que se rompan los sitios web. Censys ha observado 216.504 hosts que hacen referencia a uno de estos puntos finales de polyfill alternativos: "polyfill-fastly.io" o "cdnjs.cloudflare.com/polyfill", un aumento con respecto a los 80.312 que observamos el pasado viernes 28 de junio.
Investigación del dominio malicioso Polyfill[.]io
Buscamos registros DNS históricos para cualquier cosa que se resolvió a cdn.polyfill.io. Además de los dominios cloudflare y fastly, los tres siguientes fueron de interés:
5f52353c.u.fn03.vip.
cdn.polyfill.io.bsclink.cn.
comodín.polyfill.io.bsclink.cn.
De ellos, encontramos 6 anfitriones que presentaban el tercer dominio (wildcard.polyfill.io.bsclink.cn) que seguían en línea el 2 de julio de 2024:
Todos están alojados en AS139057, LDPL-AS-AP LEGEND DYNASTY PTE. LTD.
LEGEND DYNASTY PTE. LTD. es una empresa con sede en Singapur. Según IPinfo su sitio web asociado es edgenext.com, perteneciente a EdgeNext, un proveedor de servicios en la nube que "se especializa en APAC, China, MENA y entrega global en la nube". (https://www.edgenext.com/). Todavía no está claro cómo esta infraestructura está vinculada a Funnull, la CDN china propietaria del dominio polyfill malicioso.
Otra cosa que hay que señalar aquí es que estos anfitriones están distribuidos uniformemente por diferentes países: 2 están en los Países Bajos, 2 en España y 2 en EE.UU.
Otros dominios potencialmente asociados
Investigaciones posteriores han descubierto una red más extensa de dominios potencialmente relacionados. Un usuario de Twitter descubrió que los mantenedores de la polyfill GitHub repo filtró su CloudFlare API secretos dentro de la repo.
Se descubrió posteriormente descubierto que la clave API de Cloudflare filtrada sigue activa, y muestra 4 claves activos dominios activos adicionales vinculados a la misma cuenta:
- bootcdn[.]net
- bootcss[.]com
- archivoestático[.]net
- archivoestático[.]org
Uno de estos dominios, bootcss[.]com, ha sido observado realizando actividades maliciosas muy similares al ataque polyfill[.]io, con pruebas que se remontan a junio de 2023.
Analizando el código JavaScript del polyfill malicioso, vemos una función llamada comprobar_tiaozhuan() cuya definición comienza así
función comprobar_tiaozhuan() {
var _isMobile = navigator.userAgent.match(
/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
);
si (_isMobile) {
...
Búsqueda de check_tiaozhuan() aparece un post en el foro de desarrolladores chinos V2EX del 20 de junio de 2023. El mensaje advierte de cdn.bootcss.com secuestrado para propagar malware a través de la biblioteca JavaScript highlight.js.
Las siguientes citas interesantes fueron traducidas de este post usando Google Translate:
- "Los dos principales nombres de dominio maliciosos implicados se registraron a finales de mayo"
- "Este malvado jQuery fue introducido por highlight.js alojado en cdn.bootcss.com. Cuando la solicitud de highlight.js tiene un Referer y un UA móvil específicos, el servidor devolverá highlight.js con código malicioso, de lo contrario devolverá código normal, que está muy camuflado. Además, existen condiciones específicas para saber si se introduce jQuery malicioso cuando se ejecuta este código".
Esta táctica parece reflejar de cerca las tácticas utilizadas en este ataque.
El siguiente comentario debajo de este post hace referencia a la función comprobar_tiaozhuan() :
Traducido: "La función check_tiaozhuan() parece comprobar si el usuario está usando un dispositivo móvil comprobando el objeto navigator. Si están usando un dispositivo móvil, establece el valor de _0x34f873 basado en varias condiciones y luego llama a la función vfed_update(_0x5e3fa1) con ese valor. La función vfed_update(_0x5e3fa1) carga un archivo JavaScript desde la URL especificada por _0x5e3fa1, que puede redirigir el navegador del usuario a otra página."
Esta descripción coincide con la implementación de la función que observamos en el script Polyfill[.]io.
Cuando cavamos Censys Búsqueda en busca de hosts expuestos que hicieran referencia a uno de los dominios sospechosos adicionales, observamos un total de 1.637.160 hosts públicos combinados que enlazaban con uno de ellos.
Hasta ahora, este dominio (bootcss.com) es el único que muestra signos de malicia potencial. La naturaleza de los otros endpoints asociados sigue siendo desconocida, y evitamos especular. Sin embargo, no sería del todo descabellado considerar la posibilidad de que el mismo actor malicioso responsable del ataque a polyfill.io pudiera explotar estos otros dominios para actividades similares en el futuro.
Referencias: