La mayoría de las guías de seguridad para sitios web dicen lo mismo: actualiza WordPress, actualiza los plugins, pon contraseñas fuertes. Todo eso está bien y sigue valiendo.
Y aun así, más de 100,000 sitios de WordPress entregaron malware a sus visitantes el 14 de septiembre sin que ninguno de esos consejos hubiera fallado. Porque el código malicioso no estaba en sus servidores.
Qué pasó
Brevo —la plataforma de correo masivo, formularios y chat antes conocida como Sendinblue, muy usada por PyMEs mexicanas— fue comprometida en dos tiempos:
| Fecha | Qué ocurrió |
|---|---|
| 10 de septiembre | Un atacante explotó una falla en el manejo de inicio de sesión único por SAML y accedió a 138 cuentas de clientes, incluida la del proveedor de monederos de criptomonedas Trezor |
| 14 de septiembre | Regresó con una llave de API de Cloudflare de larga duración y desplegó un worker que inyectó JavaScript malicioso en brevo.com, en sibforms.com y en tres archivos JavaScript que los clientes embeben en sus propios sitios |
Los investigadores de Sansec encontraron el cargador malicioso en el sitio de Brevo, en sus páginas de reservas, en los formularios alojados, en las páginas de baja de suscripción y en el widget de chat Conversations.
Qué hacía el código, según quién entrara
Si detectaba a un administrador de WordPress con la sesión abierta, intentaba instalar un plugin llamado Web Media Optimizer. El nombre suena a herramienta de optimización de imágenes; en realidad es una puerta trasera persistente con una llave de autenticación fija escrita en el propio plugin, que permite generar una sesión válida de administrador sin conocer la contraseña.
Si era un visitante normal, le mostraba una página de verificación falsa al estilo ClickFix: la pantalla que pide "demuestra que no eres un robot" y te indica copiar un texto y pegarlo en una ventana del sistema. Ese texto es el comando que infecta la computadora del visitante — es decir, de tu cliente.
Qué revisar hoy, en este orden
- Lista de plugins de WordPress. Busca
Web Media Optimizero cualquier plugin que nadie recuerde haber instalado. Revisa también los desactivados: siguen ahí. - Usuarios administradores. Borra los que no reconozcas y fíjate en las fechas de creación posteriores al 14 de septiembre.
- Contraseñas y sesiones. Cambia las de todos los administradores y cierra todas las sesiones activas; la puerta trasera funciona generando sesiones válidas.
- Inventario de scripts externos. Abre el código de tu página y anota de qué dominios ajenos carga JavaScript. Casi siempre hay más de los que dirección imagina: analítica, chat, formularios, píxeles publicitarios, mapas, reseñas.
- Si encontraste el plugin, no basta con borrarlo. Hay que revisar archivos modificados, tareas programadas y usuarios creados después de la fecha.
La pregunta incómoda que deja este caso
Un sitio corporativo típico de una empresa mediana carga entre cinco y quince scripts de terceros. Cada uno de ellos puede ejecutar cualquier cosa en la página de tus clientes, y cada uno depende de la seguridad de una empresa sobre la que no tienes control ni visibilidad.
No se trata de quitarlos todos —el chat sirve, la analítica sirve—, sino de tres disciplinas baratas:
- Saber cuáles son. La lista no existe en la mayoría de las empresas.
- Quitar los que ya no se usan. El píxel de una campaña de 2023 sigue cargando y sigue siendo un riesgo.
- Enterarte el mismo día. Un monitoreo que avise cuando cambia el contenido de un script externo cuesta poco y es la diferencia entre horas y semanas de exposición.
Es el mismo patrón que dejó la falla de carga de archivos en un plugin de WooCommerce hace unos días: en el comercio electrónico, el riesgo no está solo en tu código, está en todo lo que tu página invita a ejecutarse. Si vendes en línea, la revisión de la tienda antes de la temporada alta debería incluir esta lista.
Seguridad de tu sitio
¿Cuántos scripts ajenos corren en tu página ahora mismo?
Hacemos el inventario, quitamos lo que ya no sirve, revisamos si hubo compromiso y dejamos alertas para el próximo caso.



