Un ataque a la cadena de suministro de Brevo inyecta malware en más de 100,000 sitios web de clientes

Un ataque a la cadena de suministro contra la plataforma de marketing Brevo inyectó scripts maliciosos en más de 100,000 sitios web de clientes el 14 de septiembre, exponiendo a los visitantes a falsos avisos de CAPTCHA diseñados para engañarlos y ejecutar malware, además de instalar un plugin de puerta trasera oculto en sitios WordPress cuyos administradores tenían la sesión iniciada en ese momento.
Brevo —anteriormente conocida como Sendinblue— ofrece formularios integrables, widgets de chat y SDKs de correo que miles de empresas cargan directamente en sus propios sitios web. Esa integración es exactamente lo que convirtió la brecha de una sola empresa en una superficie de ataque que abarca cientos de miles de sitios no relacionados: cuando los propios scripts de Brevo fueron comprometidos, cada sitio que los cargaba servía automáticamente el código malicioso, sin necesidad de una brecha separada en los propietarios de los sitios.
Los atacantes obtuvieron acceso inicial explotando una vulnerabilidad en el manejo de SAML SSO de Brevo, comprometiendo 138 cuentas de clientes, incluida una perteneciente al fabricante de billeteras criptográficas de hardware Trezor, que luego informó que aproximadamente 347,000 de sus usuarios fueron objetivo y más de 2,500 cuentas resultaron comprometidas como consecuencia indirecta. Los investigadores rastrean el acceso inicial hasta finales de agosto, pero la fase dañina comenzó el 14 de septiembre, cuando los atacantes usaron una clave de API de Cloudflare de larga duración —codificada directamente en el código fuente de la aplicación de Brevo con permisos completos de cuenta— para desplegar un Worker malicioso de Cloudflare. Durante aproximadamente cinco horas y media, ese Worker reescribió el contenido servido desde brevo.com, sibforms.com y los scripts de formularios, widgets y SDK de la empresa en el borde de la CDN, antes de que Brevo lo detectara y eliminara al día siguiente.
Durante esa ventana se distribuyeron dos cargas útiles. Los visitantes de los sitios veían páginas "ClickFix": avisos falsos de verificación de Cloudflare que les indicaban abrir el cuadro de diálogo Ejecutar de Windows y pegar un comando, una técnica de ingeniería social bien establecida que lleva a la ejecución de malware si se sigue. Por separado, cualquier sitio WordPress con un administrador con sesión iniciada durante la ventana del ataque recibió un plugin malicioso llamado "Web Media Optimizer", que se ocultaba de la lista de plugins visibles, se instalaba de forma persistente a través del directorio de plugins obligatorios de WordPress, e incluía credenciales codificadas que otorgaban a los atacantes acceso de administrador sin contraseña —una puerta trasera que sobrevive incluso después de limpiar el punto de inyección original—.
Brevo ha revocado desde entonces la clave de API comprometida, eliminado las credenciales codificadas de su código fuente, borrado el Worker malicioso y sus reglas de enrutamiento, purgado las cachés de borde de la CDN y bloqueado los dominios controlados por los atacantes a los que se conectaba el malware. Pero el plugin de puerta trasera de WordPress no desaparece por sí solo: cualquier sitio que tuviera un administrador con sesión iniciada durante la ventana de cinco horas y media necesita verificar y eliminar de forma independiente el plugin "Web Media Optimizer", ya que la corrección de Brevo en su propia infraestructura no hace nada para cerrar una puerta trasera ya plantada en el servidor de otra persona.
El incidente es un recordatorio de cuán concentrado se ha vuelto el riesgo en el pequeño número de scripts de terceros que la mayoría de los sitios web cargan sin pensarlo dos veces. Una sola clave de API codificada en el código fuente de una empresa se convirtió en una ventana de cinco horas que alcanzó a más sitios web que la mayoría de las filtraciones de datos individuales —y la solución no está completa hasta que cada propietario de sitio afectado audite de forma independiente su propia instalación de WordPress, no solo cuando el panel de Brevo indique que el incidente está resuelto—.
Publicado originalmente por BleepingComputer / SecurityWeek. Lee el artículo original para más detalles.
Ver fuente original