Una sola clave de Cloudflare permitió hackear 100.000 sitios web

Una sola clave de Cloudflare permitió hackear 100.000 sitios web

Programa malicioso servía páginas falsas en tiempo real sin tocar los archivos originales.

image

Una clave de API de Cloudflare robada convirtió la infraestructura de la plataforma de marketing Brevo en un distribuidor de código malicioso para alrededor de 100.000 sitios externos.

Los atacantes obtuvieron una clave de API de Cloudflare de larga duración con permisos completos, que Brevo almacenaba directamente en el código fuente de la aplicación. El acceso permitía crear Cloudflare Workers, cambiar rutas y registros DNS en todas las zonas de la empresa. El 14 de septiembre el atacante desplegó su propio Worker y luego lo conectó a sitios y componentes cliente de Brevo.

La característica principal del ataque se ocultaba a nivel de la CDN. El Worker reescribía las respuestas después de salir de los servidores de Brevo y eliminaba los encabezados de protección Content-Security-Policy. Las páginas originales y los archivos JavaScript permanecían sin cambios, por lo que las comprobaciones de integridad habituales no detectaban la suplantación. A los visitantes se les mostraba de forma selectiva una comprobación falsa de Cloudflare con la técnica ClickFix.

La página falsa pedía pulsar Win+R, pegar el contenido del portapapeles y ejecutar un comando. Tras pulsar Enter, el equipo descargaba un software malicioso. En sitios WordPress el guion era más peligroso: si la página la abría un administrador autenticado, el script intentaba instalar sigilosamente un complemento malicioso.

El complemento se hacía pasar por Web Media Optimizer, desaparecía de la lista habitual de extensiones y se copiaba en el directorio de complementos obligatorios para persistir. El módulo obtenía periódicamente nuevo JavaScript desde un servidor de control, y la clave integrada permitía crear una sesión administrativa válida sin conocer la contraseña. Un ataque similar a WordPress en junio se propagó a 1,2 millones de recursos a través de infraestructura de confianza.

Según la evaluación de Sansec, los componentes infectados de Brevo podrían haberse cargado en aproximadamente 100.000 sitios. Los archivos JavaScript cliente fueron sustituidos entre las 16:07 y las 20:30 UTC del 14 de septiembre, aunque el Worker malicioso en sí funcionó alrededor de cinco horas y media.

La aplicación de Brevo, la API, la infraestructura de correo y los datos de clientes almacenados en el servicio, según la investigación de la empresa, no resultaron afectados. Días antes del ataque, Brevo ya había sufrido un incidente separado tras el cual correos de phishing enviados a través de la infraestructura de Trezor alcanzaron a 347.000 destinatarios.

Aunque Sansec no logró obtener el archivo, se detectó subido en VirusTotal y se confirmó que el archivo se presenta como un complemento de WordPress llamado "Web Media Optimizer", pero en realidad es una puerta trasera persistente y un cargador de JavaScript.

Entre otros dominios que distribuyen el complemento malicioso y scripts para WordPress figuran https://yelahaye[.]surfi https://boiseno[.]club.

Tras detectar la intrusión, Brevo eliminó el Worker y los dominios creados por el atacante, revocó la clave y las credenciales relacionadas, limpió las cachés de la CDN y retiró el secreto del código fuente. La empresa tiene previsto almacenar las claves de Cloudflare en HashiCorp Vault, rotarlas automáticamente y supervisar las operaciones con Workers, DNS y permisos de acceso. El informe oficial del incidente recomienda a los administradores de WordPress que estuvieron autenticados en sus sitios el 14 de septiembre que revisen los complementos instalados ese día y cambien las contraseñas.

El análisis adicional del complemento mostró que el malware conservaba una dirección de JavaScript de reserva en caso de que se desconectara el servidor de control. A los usuarios que ejecutaron el comando desde la comprobación falsa de Cloudflare se les recomienda considerar el equipo comprometido, desconectarlo de la red, realizar un examen completo y cambiar las contraseñas utilizadas en la máquina.

La mecánica ya se había visto en otros ataques a la cadena de suministro. En junio los atacantes infectaron el widget del servicio de reseñas Okendo Reviews, tras lo cual el código ClickFix pudo aparecer en los sitios de más de 18.000 marcas.

Las comprobaciones falsas de Cloudflare también se han convertido desde hace tiempo en un señuelo independiente. En julio los especialistas analizaron un caso en el que una falsa CAPTCHA convenció a un empleado de una empresa industrial rusa para ejecutar por su cuenta un comando que instaló un infostealer.