Durante once horas a mediados de octubre, uno de los plugins premium de WordPress más instalados del mundo sirvió una versión que trató tu servidor como un apartamento alquilado sin cerradura en la puerta.
Rank Math reveló el 16 de octubre que algunas copias de Rank Math SEO PRO 3.0.123, descargadas o actualizadas automáticamente entre el 15 de octubre a las 20:02 UTC y el 16 de octubre a las 07:12 UTC, contenían código malicioso. Se registra como CVE-2026-111862, con puntuación 9.8. La versión limpia, 3.0.124, ya está disponible. Esa última frase es donde la mayoría de las agencias deja de leer, y es exactamente donde empieza el incidente.
La ventana de once horas
Once horas no es mucho. También es tiempo suficiente para que un cron de actualizaciones se dispare en todos los sitios gestionados con la misma rotación de martes a miércoles, que es justo el patrón de una flota. Si gestionas una cartera de sitios de clientes, la pregunta no es si alguno se actualizó dentro de esa ventana. La pregunta es cuáles, y si llevas un registro.
Rank Math dice que ejecutar 3.0.123 por sí solo no demuestra compromiso, y que tiene registros de quién descargó el paquete afectado. Créelo, pero verifíquelo igual. El proveedor te dice a dónde fue la versión mala. No puede decirte qué hizo una vez activada.
Qué hizo realmente la versión maliciosa
Según el aviso del proveedor y el análisis de Wordfence, una copia activa del build afectado podía:
- establecer acceso persistente y comunicarse con un host de mando externo en
rank1cdn[.]com; - recrear su propia puerta trasera oculta cada vez que se visitaba una página, así que borrar la carga útil no terminaba el acceso;
- crear cuentas de administrador falsas, a menudo con nombres que empiezan por
wpsupport_o correos terminados en@wp-mail[.]net; - exponer credenciales de WordPress y de la base de datos, las sales de
wp-config.php, claves de pago, SMTP y API, y cualquier otro secreto que el servidor web pudiera leer; - plantar un archivo falso del core, PHP suelto en
mu-plugins, carpetasincde temas y uploads, y reglas.htaccessque ejecutan archivos.cachecomo PHP; - registrar tareas cron del servidor web marcadas con
#ms6v46, además de filas en la base de datos con nombres como_uf6qdn2hmm.
Lea esa lista otra vez con el sombrero de infraestructura puesto. Un plugin de WordPress que pide la contraseña de la base de datos ya tiene más alcance que la mayoría de las cuentas de servicio internas. El plugin no era una puerta lateral hacia un blog. Era un llavero con un sitio web pegado.
Actualizar es higiene, no respuesta a incidentes
Esta es la frase que importa para cada conversación con un cliente esta semana: si una copia afectada estuvo activa en un sitio, trátalo como comprometido y restaura desde una copia de seguridad anterior al 15 de octubre a las 20:02 UTC.
Actualizar a 3.0.124 cambia los archivos en disco. No elimina el administrador falso, las filas inyectadas en wp_options, las entradas de cron, la directiva .htaccess ni la copia cifrada en tránsito de tus credenciales que está en el servidor de otra persona. A una puerta trasera que se reconstruye al cargar la página no le importa que el plugin diga ahora "Última versión".
Esa es la brecha entre gestión de parches y respuesta a incidentes, y la mayoría de las pequeñas y medianas empresas vive dentro de ella. Tienen el hábito de parchear. No tienen el hábito de detectar compromisos.
La parte que nadie presupuesta: la confianza
Los plugins premium se distribuyen desde servidores del proveedor, no desde el directorio de WordPress.org. Es una decisión comercial con una consecuencia de seguridad: no hay un portero independiente revisando el build que tu sitio descarga a las 3 de la mañana. Cuando activas las actualizaciones automáticas, delegas la revisión de código en la cadena de release de un proveedor y en cualquiera que pueda alcanzarla.
Los incidentes de cadena de suministro de este año repiten el mismo punto desde ángulos distintos: la publicación de confianza en npm, una credencial OAuth robada a un proveedor de copias de seguridad y ahora el canal de descarga de un plugin premium. El factor común no es un exploit ingenioso. Es una cadena de confianza comprometida una vez y usada a escala.
En aratech tratamos las actualizaciones de plugins y dependencias como un cambio controlado, no como una comodidad de fondo:
- Snapshot antes de la ventana. Un punto de restauración de base de datos y archivos por sitio, automático y conservado más allá del ciclo de actualización.
- Despliegue por etapas. Canario en un sitio de poco tráfico y luego la flota. Una versión maliciosa tiene entonces un huésped, no cuarenta.
- Disciplina de salida. Listas de destinos permitidos en las cuentas de hosting. Un destino nuevo como
rank1cdn[.]comes una señal visible, si miras el tráfico saliente. - Un inventario de secretos. Si no puedes listar cada credencial que un sitio puede leer, no puedes rotarlas en una hora cuando hace falta.
- Comprobaciones de integridad después.
wp core verify-checksumsy verificación de checksums de plugins, más un diff contra un manifiesto de archivos buenos conocido.
Nada de eso es exótico. Todo es aburrido, y por eso funciona.
La lista de verificación, para los sitios que gestionas
Si te ganas la vida con WordPress, esta es la versión corta y útil:
- Confirma si se instaló 3.0.123 y cuándo. Registros de descarga, fechas de archivos, logs del hosting o de las copias.
- Si el build afectado estuvo activo, restaura archivos y base de datos desde antes del 15 de octubre a las 20:02 UTC, y luego instala 3.0.124 desde tu cuenta.
- Si tienes que limpiar en sitio: borra la carpeta
rank-math-procompleta (desactivar no basta), elimina las filas conocidas dewp_options, bloquea la salida haciarank1cdn[.]comy busca el resto de indicadores. - Audita administradores. Busca cuentas
wpsupport_, correos inesperados y cambios en la verificación en dos pasos. - Rota cada secreto que el sitio pudiera leer: contraseñas de WordPress y base de datos, sales, claves de API y pago, panel del hosting, SFTP y SSH.
- Vigila si los archivos borrados vuelven. La persistencia que se autorrepara reaparecerá en un día si te falta un punto de apoyo.
Qué significa esto para tu negocio
Si eres un fundador leyendo esto un lunes por la mañana, la pregunta práctica no es "¿estamos en 3.0.124?". Es "¿quién en mi lado sabe qué plugins se actualizaron la semana pasada, y qué pasa en la primera hora después de descubrir que uno era hostil?".
La mayoría de los equipos responden con un nombre y una esperanza. El nombre suele ser una persona, y la esperanza es que el proveedor lo note primero.
Nosotros preferimos responder con un snapshot, un despliegue por etapas y un runbook de rotación que alguien haya ensayado de verdad. Esa es la diferencia entre un titular que asusta y un martes aburrido.
Tu cadena de suministro de plugins ya forma parte de tu superficie de ataque. Trata el botón de actualizar como lo que es: un despliegue.