Un ataque a la cadena de suministro de Brevo inyectó el malware ClickFix con una clave robada de Cloudflare
Brevo confirmó que una clave API robada de Cloudflare permitió inyectar malware ClickFix en el borde de su CDN durante 5,5 horas el 14 de septiembre, afectando a más de 100 000 sitios de clientes.

En esta página
Puntos clave
- Brevo confirmó que una clave API de Cloudflare robada y de larga duración permitió a los atacantes desplegar un Worker malicioso que inyectaba scripts ClickFix en el borde de la CDN durante unas cinco horas y media el 14 de septiembre de 2026.
- Las superficies afectadas incluyeron brevo.com, sendinblue.com, varios subdominios de brevo.com y sibforms.com, además del script de formularios de Brevo, el widget Conversations y el cargador del SDK integrados en sitios de clientes.
- Sansec estima que el ataque sirvió malware a visitantes del propio sitio de Brevo y a más de 100 000 sitios de clientes; Brevo dice que app.brevo.com, su API, el envío de correo y los datos de cuentas de clientes no se vieron afectados.
- En sitios de WordPress con un administrador conectado, el script inyectado intentaba instalar un plugin que, según BleepingComputer, se hace pasar por «Web Media Optimizer» pero actúa como una puerta trasera persistente.
- Un incidente de SSO de Brevo del 10 de septiembre precedió a un phishing que, según SecurityWeek, alcanzó unos 347 000 correos de Trezor, con al menos 2500 usuarios haciendo clic; las pérdidas confirmadas de carteras siguen sin estar claras.
Brevo, la empresa francesa de gestión de relaciones con clientes y marketing por correo antes conocida como Sendinblue, confirmó que los atacantes robaron una clave API de Cloudflare y la usaron para inyectar malware ClickFix en sus propios sitios web y en el JavaScript que miles de clientes integran en los suyos. La manipulación ocurrió en el borde de la CDN y duró unas cinco horas y media el 14 de septiembre de 2026, según el análisis posterior de Brevo y el análisis independiente de la firma de seguridad neerlandesa Sansec.
Lectura relacionada: Los atacantes colaron un backdoor por los propios servidores de actualización de AOMEI Backupper · Capcom dice que una brecha expuso 11,7 millones de registros de CAPCOM ID y permitió a un atacante cambiar 196 contraseñas.
La divulgación importa más allá de un proveedor. Una sola credencial de larga duración en el código fuente de una plataforma de marketing dio a un atacante acceso de escritura a la capa de borde que se sitúa delante de unos 100 000 sitios web de clientes. Ese es el riesgo definitorio de los scripts de terceros integrados: un compromiso aguas arriba lo hereda cada sitio que confía en la etiqueta del proveedor.
Qué confirmó Brevo
Brevo dijo que una clave API de Cloudflare de larga duración con permisos completos de cuenta estaba embebida en el código fuente de la aplicación y fue obtenida por el atacante. Con ella, el atacante podía crear Cloudflare Workers, rutas y registros DNS en las zonas de Brevo sin activar ninguna alerta, escribió la empresa en su análisis posterior.
El Worker malicioso reescribía las respuestas a su paso por Cloudflare, lo que significa que los servidores de origen y los archivos de Brevo nunca se modificaron. El Worker también eliminaba cabeceras de seguridad como Content-Security-Policy, según la empresa, de modo que las comprobaciones de integridad estándar no lo detectaron. La investigación de Brevo indica que la clave se usó indebidamente por primera vez a finales de agosto de 2026, pero no encontró ninguna inyección maliciosa antes del 14 de septiembre.
La cronología de Brevo sitúa la ventana total de impacto entre las 15:01 y las 20:30 UTC, un lapso de 5 horas y 29 minutos. El Worker se enrutó a todo brevo.com a las 15:01 y luego se actualizó a las 16:07 para añadir un cargador a tres archivos JavaScript integrados y para cubrir sibforms.com. Brevo eliminó el Worker y sus rutas a las 20:30 y dijo que revocó la clave y cualquier credencial creada con ella, borró los nombres de host del atacante, purgó las cachés de borde y sustituyó la credencial embebida por tokens de corta duración y alcance reducido.
Dominios y scripts afectados
Brevo enumera las superficies afectadas como brevo.com, sendinblue.com, los subdominios login, account, my y onboarding de brevo.com, y sibforms.com. Los tres archivos integrados en clientes eran el script de formularios de Brevo, el widget de chat Brevo Conversations y el cargador del SDK de Brevo.
Sansec, que informó primero de la campaña, documentó el código inyectado y nombró dos archivos directamente: https://cdn.brevo.com/js/sdk-loader.js y https://conversations-widget.brevo.com/brevo-conversations.js. En cada caso, el archivo manipulado ganó una función corta que creaba un nuevo elemento script y cargaba malware desde un nombre de host rotativo cdn*.sendibt1.com. Sansec señaló que sendibt1.com es propiedad de Brevo y lo opera la propia Brevo, y que se creó un certificado para cdn.sendibt1.com el 25 de agosto, lo que, según dijo, demuestra que el atacante tenía acceso de escritura al DNS de Brevo.
Las dos firmas describen ventanas horarias ligeramente distintas. Sansec observó el primer sdk-loader.js malicioso a las 16:05:18 UTC y la última actividad de malware desde un dominio de Brevo a las 20:12:53 UTC. Brevo describe la fase de inyección como activa hasta las 20:30. Ambas coinciden en que la actividad ha terminado: Sansec dijo que todos los hosts maliciosos dejaron de resolverse el 15 de septiembre y que los archivos de origen están limpios, y Brevo dijo que una verificación independiente confirmó que todas las páginas y scripts afectados estaban limpios a las 20:42 del 14 de septiembre.
Brevo insistió en que app.brevo.com, su API, el envío de correo y los datos de cuentas de clientes alojados en Brevo no se vieron afectados. El contenido malicioso se añadía en tránsito, no se almacenaba en el origen.
Qué vieron visitantes y clientes
BleepingComputer informó de que Brevo confirmó la campaña, y Sansec dijo que el ataque sirvió malware a los visitantes del propio sitio de Brevo y a más de 100 000 sitios de clientes que integran componentes de Brevo. La cifra de 100 000 procede del escaneo de Sansec de datos web públicos, no de Brevo, y debe leerse como una estimación de la exposición, no como un recuento de infecciones confirmadas.
El malware tenía dos comportamientos. Cuando un visitante corriente cargaba una página afectada, se mostraba una superposición ClickFix a pantalla completa: un falso aviso de Cloudflare de «verifica que eres humano» que pedía a la persona pulsar Win+R, luego Ctrl+V y luego Intro. El análisis de Brevo dice que ya se había colocado un comando en el portapapeles, así que seguir los pasos ejecutaba código del atacante y descargaba malware a la máquina Windows del visitante. La superposición se mostraba de forma selectiva, por lo que muchos visitantes y visitas repetidas no veían nada.
Cuando el visitante estaba conectado a WordPress como administrador, Sansec encontró que el mismo script intentaba en su lugar instalar un plugin desde https://cdn10.sendibt1.com/p/wm.zip usando la propia sesión del administrador. Sansec no pudo recuperar el archivo. BleepingComputer encontró después una copia en VirusTotal e informó de que se hace pasar por un plugin de WordPress llamado «Web Media Optimizer», pero actúa como puerta trasera persistente y cargador de JavaScript, se oculta de la lista de plugins y se copia a sí mismo en el directorio de plugins de uso obligatorio. La recomendación de Sansec es comparar el directorio de plugins en disco con la pantalla de administración, porque un plugin puede ocultarse de esa pantalla.
ClickFix, explicado
ClickFix es una técnica de ingeniería social, no un exploit de software. La página imita una marca de confianza, normalmente Cloudflare o un proveedor de captchas, y presenta un paso de verificación que exige al usuario ejecutar un comando localmente. Como el usuario realiza la acción, el malware llega por una vía legítima que los bloqueos automáticos y las advertencias del navegador no están diseñados para detener.
El ataque también integró una casilla real de Cloudflare en el anzuelo, de modo que a un visitante que superaba un desafío auténtico podía mostrársele la réplica falsa. Eso reducía las sospechas en el momento exacto en que el usuario era más propenso a obedecer.
Varias propiedades del caso Brevo hicieron que ClickFix fuera eficaz. El aviso falso aparecía en el propio dominio del proveedor o en el de un cliente, así que la barra de direcciones parecía correcta. El script de malware se ejecutaba en último lugar en la cadena del cargador, así que una comprobación rápida de las primeras líneas del widget no mostraba nada raro. El kit además se negaba a activarse para rastreadores, desarrolladores y escáneres automáticos, lo que retrasó la detección y redujo la probabilidad de que una herramienta de seguridad viera la misma página que un humano.
Por qué los scripts de marketing integrados son un riesgo sistémico
Las plataformas de correo y marketing ocupan una posición que pocos proveedores tienen. Su JavaScript se ejecuta en los sitios de los clientes, y sus formularios alojados y páginas de baja reciben tráfico de todos los destinatarios de una campaña. Cuando se compromete la capa de borde de una plataforma, el radio de explosión es la base de clientes de la plataforma, no solo la plataforma.
El análisis de Sansec deja explícita la amplificación: un visitante o destinatario de correo solo tenía que aterrizar en una página de baja o de formulario alojada por Brevo, o cargar el rastreador o el widget de chat de un cliente. No se necesitaba ninguna credencial robada de un cliente para llegar a un usuario final. Eso es lo que convierte una sola clave API robada en una campaña contra cientos de miles de sitios.
La arquitectura del compromiso agrava el problema operativo. Como el código malicioso vivía en un Worker de Cloudflare y modificaba las respuestas de salida, la monitorización de integridad de archivos en el origen veía un sistema de archivos limpio. El propio análisis posterior de Brevo señala que el Worker eliminaba la cabecera Content-Security-Policy, que es uno de los controles que habrían podido limitar lo que un script inyectado tenía permitido hacer. Una defensa aplicada por la misma capa que controla el atacante no sirve de mucho como defensa.
El incidente anterior de SSO y el phishing de Trezor
El compromiso de Cloudflare siguió a un incidente distinto que Brevo reveló el 10 de septiembre de 2026. En ese caso, según Brevo, un atacante explotó la forma en que la plataforma gestiona el inicio de sesión único SAML para llegar a 138 cuentas, y el acceso no se limitaba correctamente a la organización donde el SSO estaba habilitado. Según Brevo, el atacante envió mensajes de phishing a direcciones almacenadas bajo seis cuentas comprometidas y exfiltró contactos de 43 cuentas.
Una víctima identificada fue el fabricante de carteras hardware Trezor, que usa Brevo para sus boletines. SecurityWeek informó de que Trezor dijo que los correos de phishing llegaron a unos 347 000 direcciones de correo de clientes y que unos 2500 usuarios hicieron clic antes de que el sitio malicioso se retirara unos 20 minutos después de la detección. Trezor advirtió de que introducir una copia de seguridad de la cartera en el sitio podría costar a los clientes sus fondos. SecurityWeek señaló que no estaba claro cuántos usuarios perdieron fondos ni cuánto.
Esa distinción importa. Un gran alcance de phishing y un número menor de clics no son lo mismo que pérdidas confirmadas de carteras. Las cifras confirmadas son 347 000 direcciones atacadas y al menos 2500 que hicieron clic. El número de carteras comprometidas no se ha establecido públicamente, y los informes no deberían darlo por resuelto. SecurityWeek también informó de que el fabricante de hardware cripto BitBox y la herramienta fiscal CoinTracking parecían haberse visto afectados, sin que esas empresas señalaran a Brevo como la fuente.
Brevo no respondió a las preguntas de BleepingComputer sobre si el incidente de SSO y el compromiso de Cloudflare están conectados. Los dos hechos están separados por cuatro días y ambos implican acceso a la propia infraestructura de Brevo, pero ninguna prueba pública los vincula.
Lecciones para los defensores
El caso Brevo refuerza un conjunto de controles que se aplican a cualquier organización con presencia en el borde, la nube o el SaaS.
La higiene de credenciales es lo primero. La clave robada era de larga duración, de alcance amplio y estaba almacenada en el código fuente. La propia remediación de Brevo es instructiva: trasladar los secretos a un almacén gestionado, rotarlos automáticamente y emitir tokens de alcance reducido y corta duración. Brevo dijo que está adoptando HashiCorp Vault como único almacén para las claves y tokens de Cloudflare, alertando ante cada evento de auditoría de Cloudflare que cambie Workers, rutas, DNS o acceso a la cuenta, y volcando los registros de Cloudflare en su monitorización de seguridad.
Haz inventario de tus scripts de terceros. Un sitio no puede defender un script que no sabe que carga. Cada etiqueta integrada es una decisión de confianza, y la postura de seguridad del proveedor pasa a formar parte de la superficie de ataque del cliente.
Restringe el JavaScript de terceros donde la plataforma lo permita. El Subresource Integrity fija un script a un hash conocido, de modo que un archivo sustituido no carga, aunque es difícil de aplicar a scripts que se actualizan con frecuencia. Una Content-Security-Policy estricta limita qué dominios pueden ejecutar y bloquea la inyección en línea. Ambas elevan el coste y acortan la ventana frente a un atacante que controla el borde.
Detecta en el borde, no solo en el origen. Como el compromiso de Brevo dejó intactos los archivos de origen, los hashes de archivos por sí solos no bastaban. Monitorizar las respuestas renderizadas, vigilar cambios inesperados de cabeceras y escanear externamente las páginas y scripts públicos tendría más posibilidades de detectar una reescritura en tránsito.
Qué deberían hacer los clientes de Brevo
La recomendación de Brevo es directa. Cualquiera que haya ejecutado el comando pegado debe tratar el ordenador como comprometido, desconectarlo, pasar un análisis antivirus completo y cambiar las contraseñas usadas en él, empezando por la de Brevo. Los administradores de WordPress cuyos sitios carguen scripts de Brevo y que visitaran esos sitios con la sesión iniciada el 14 de septiembre deberían buscar plugins instalados o activados ese día, eliminar cualquier cosa sospechosa y rotar las contraseñas de administrador. A los clientes que iniciaron sesión en Brevo a través de brevo.com ese día se les aconseja cambiar su contraseña y revisar sus claves API como precaución.
Brevo también dijo que el widget Conversations, el SDK y los formularios son seguros de usar porque nunca se modificaron en su origen, y que su aplicación, su API, el envío de correo y los datos de cuentas no se vieron afectados.
Qué observar
Quedan dos preguntas abiertas. La primera es si el robo de la clave de Cloudflare está relacionado con el incidente de SSO del 10 de septiembre, algo que Brevo no ha respondido públicamente. La segunda es el total definitivo de pérdidas confirmadas de carteras por el phishing de Trezor, que Trezor y los investigadores de seguridad han dejado sin resolver hasta ahora.
Por ahora, la conclusión más clara es estructural. Una plataforma de marketing ocupa un lugar en la cadena de confianza de un enorme número de sitios web y bandejas de entrada, y una única credencial filtrada en su borde puede volver esa confianza contra todos los que están aguas abajo. La solución no es un solo control, sino varios: secretos de alcance limitado y corta duración, integridad de scripts aplicada, visibilidad en el borde y un inventario actualizado de cada etiqueta de terceros que carga un sitio.
Imagen de portada: el logotipo de Brevo. Imagen: Brevo, vía Wikimedia Commons (CC BY-SA 4.0).
Etiquetas
Preguntas frecuentes
- ¿Qué es ClickFix?
- ClickFix es un truco de ingeniería social en el que una página de verificación falsa, a menudo imitando a Cloudflare, pide al visitante que pegue y ejecute un comando. El usuario ejecuta el código del atacante por sí mismo, lo que sortea muchos controles automáticos de bloqueo y de advertencia del navegador.
- ¿Cuánto tiempo estuvo activo el ataque a la cadena de suministro de Brevo?
- Brevo sitúa la ventana total de impacto entre las 15:01 y las 20:30 UTC del 14 de septiembre de 2026, unas cinco horas y media. Sansec observó el primer archivo malicioso a las 16:05:18 UTC y la última actividad maliciosa desde un dominio de Brevo a las 20:12:53 UTC.
- ¿Qué dominios y scripts de Brevo se vieron afectados?
- Brevo enumera brevo.com, sendinblue.com, los subdominios login, account, my y onboarding de brevo.com, y sibforms.com, junto con el script de formularios de Brevo, el widget Brevo Conversations y el cargador del SDK de Brevo que los clientes integran en sus propios sitios.
- ¿Estaban conectados el incidente de SSO de Brevo y el ataque a Cloudflare?
- Brevo no lo ha dicho. La empresa no respondió a las preguntas de BleepingComputer sobre si el incidente de SSO del 10 de septiembre y el compromiso de Cloudflare del 14 de septiembre están relacionados, y ninguna prueba pública vincula ambos hechos.








