Aviso de seguridad de Simple Membership
Si recibió un correo electrónico mío que le dirige a esta página, es porque su sitio web parece
estar ejecutando una versión de Simple Membership (el plugin de membresías de WordPress de
smp7 / wp.insider, que se encuentra en sus archivos en
/wp-content/plugins/simple-membership/) que cae dentro del rango afectado por un problema de
seguridad conocido. Esta página explica cuál es el problema, cómo comprobar qué versión tiene,
cómo actualizar y el paso de seguimiento más importante después.
El problema es CVE-2026-15930, una toma de control de cuenta de administrador sin autenticación a través del propio formulario de registro de membresía del plugin. Afecta a todas las versiones anteriores a 4.7.8 y está corregido en 4.7.8. Si está ejecutando cualquier versión anterior a 4.7.8, actualice Simple Membership a 4.7.8 o posterior (4.7.9 llegó después y mantiene la corrección, así que también está bien).
Una cosa que conviene dejar clara, porque difiere de algunos de los otros avisos que he enviado: no existe ninguna versión antigua que sea segura. Esta no es una falla que se introdujo en algún momento y luego se corrigió. Estuvo presente en el plugin desde su primera versión publicada hasta la 4.7.7 inclusive, por lo que «mi instalación es demasiado antigua para estar afectada» no es una salida válida aquí. Las únicas versiones que no están afectadas son la 4.7.8 y posteriores.
Este aviso tampoco depende de cómo esté configurado su sitio. No hay ninguna opción que deba
activarse: cuando el plugin está activado, publica una página membership-registration que
contiene su formulario de registro, de modo que una instalación de fábrica expone el formulario
a los visitantes que no han iniciado sesión. Si su versión es anterior a 4.7.8, vale la pena
realizar la actualización cuanto antes.
Esta es una vulnerabilidad del plugin, no del núcleo de WordPress. Un WordPress completamente actualizado no le protege si el propio plugin Simple Membership está en una versión afectada.
¿Es legítimo este mensaje?
Sí. Este es un aviso de divulgación responsable y de buena fe de un investigador de seguridad independiente. Yo no le pido dinero, contraseñas ni acceso a su sitio, y no he intentado infiltrarme en él, enviar nada a través de él ni explotar nada.
Lo único que hice fue examinar archivos públicamente visibles que su sitio web sirve a todos los visitantes (del mismo modo que su página de inicio es pública) y anotar el número de versión que el plugin publica. Específicamente no envié su formulario de registro ni le envié nada, y nada de esta comprobación toca sus datos, su área de administración ni ninguna parte privada de su sitio (más detalle en Qué hice y qué no hice más abajo).
Si desea verificar quién soy, consulte los datos de contacto al final de esta página y la página Acerca de.
Por qué importa
Simple Membership añade niveles de membresía y contenido protegido a un sitio WordPress, y ofrece a los visitantes un formulario público de registro para que puedan inscribirse en una membresía por sí mismos. Ese formulario es el punto de entrada aquí.
En las versiones afectadas, el plugin no comprobaba si WordPress había creado realmente la nueva cuenta antes de continuar guardando los datos enviados. Cuando el registro solicitado no podía crearse como un usuario genuinamente nuevo porque el nombre elegido coincidía con una cuenta que ya existía, el plugin seguía adelante de todos modos y escribía los datos enviados sobre esa cuenta existente. El efecto práctico: la dirección de correo electrónico y la contraseña escritas en el formulario público de registro se convierten en los datos de inicio de sesión de una cuenta que ya estaba en el sitio. En la práctica, la cuenta que termina sobrescrita es la del administrador original del sitio, lo que entrega el control del sitio a quien haya rellenado el formulario.
Vale la pena afirmar claramente dos cosas. Primero, no se requiere iniciar sesión y no hace falta que nada esté mal configurado: basta con un visitante anónimo y la página de registro que el propio plugin publica. Segundo, el resultado es el control administrativo en lugar de una filtración de datos limitada, razón por la cual la recomendación aquí es actualizar cuanto antes en lugar de incluirlo en su próxima ventana de mantenimiento.
Estoy describiendo esto al nivel que necesita un propietario de sitio para actuar, y no más. No estoy publicando los detalles que permitirían a alguien reproducirlo, y le pediría que no lo intente contra su propio sitio ni el de nadie más. Leer su número de versión, como se describe a continuación, le dice todo lo que necesita para decidir qué hacer.
Si mi correo electrónico citó este problema, significa que la versión que informa su sitio es anterior a 4.7.8. No probé si su sitio en particular es explotable; lo único que observé fue la versión.
¿Estoy afectado?
Todo se reduce a una pregunta: ¿qué versión de Simple Membership está ejecutando? No tiene que tomar mi palabra, y hay tres formas de comprobarlo. A diferencia de algunos plugins sobre los que escribo, las tres son fiables aquí, porque todas informan el mismo número de versión subyacente.
Desde el área de administración de WordPress (fuente autorizada):
- Inicie sesión en su escritorio de WordPress (normalmente en
yourdomain.com/wp-admin). - Vaya a Plugins y luego a Plugins instalados.
- Busque Simple Membership, la entrada cuya carpeta es
simple-membership, y anote la versión que se muestra debajo de su nombre.
Desde el manifiesto público (no se necesita inicio de sesión): abra
yourdomain.com/wp-content/plugins/simple-membership/readme.txt en un navegador. La línea
Stable tag: cerca de la parte superior es la versión que informa su instalación, y este es
el mismo archivo público que leí.
Desde el código fuente de su página (no se necesita inicio de sesión): vea el código fuente
de cualquier página de su sitio y busque la hoja de estilos del plugin, css/swpm.common.css,
bajo /wp-content/plugins/simple-membership/. El número ?ver= adjunto a ella es la versión
del plugin, tomada de la propia constante de versión del plugin, por lo que para este plugin es
una lectura fiable y no un señuelo.
Luego aplique esta regla, y tenga en cuenta que las versiones se comparan numéricamente, no alfabéticamente, de modo que 4.7.10 sería más reciente que 4.7.8 aunque parezca menor como texto:
- Cualquier versión anterior a 4.7.8: afectada. Actualice ahora. No existe un punto de corte por debajo del cual una versión antigua vuelva a ser segura.
- 4.7.8 o posterior: ya corregida. Esto incluye la 4.7.9, que mantiene la corrección.
Una nota sobre los complementos de pago de Simple Membership. Los complementos de pago del
plugin se instalan como plugins independientes, en sus propias carpetas, con sus propias
líneas de versión. El número de versión de un complemento no dice absolutamente nada sobre
este problema. La versión que importa es la del propio plugin Simple Membership, carpeta
simple-membership, obtenida mediante cualquiera de las tres comprobaciones anteriores.
Cómo actualizar
La vía más segura es actualizar a través del propio WordPress, y hacer una copia de seguridad primero:
- Realice una copia de seguridad de su sitio (archivos y base de datos) antes de realizar cambios. La mayoría de los proveedores de alojamiento ofrecen copias de seguridad con un solo clic, o puede utilizar un plugin de copia de seguridad de WordPress.
- En la administración de WordPress, vaya a Escritorio y luego a Actualizaciones, o a Plugins y luego a Plugins instalados. Si aparece una actualización de Simple Membership, instálela desde aquí.
- Si prefiere la línea de comandos, WP-CLI hace lo mismo:
wp plugin update simple-membership. - Si no aparece ninguna actualización, puede obtener la última versión directamente desde la página del plugin en el directorio de WordPress.org, Simple Membership, y actualizar mediante Plugins, luego Añadir nuevo plugin, y finalmente Subir plugin.
- Después de actualizar, confirme el nuevo número de versión (4.7.8 o posterior) utilizando los pasos anteriores, y compruebe que su formulario de registro, los niveles de membresía y el contenido protegido siguen funcionando con normalidad.
Si utiliza los complementos de pago de Simple Membership, actualícelos junto con el plugin principal, ya que sus versiones suelen ir emparejadas.
Mientras está allí, vale la pena confirmar que WordPress core y sus otros plugins están actualizados, ya que el mismo principio se aplica a todos ellos.
Después de actualizar
Actualizar a la versión 4.7.8 o posterior cierra el problema. Hay un seguimiento aquí que es más importante que las tareas habituales, y vale la pena leerlo incluso si está seguro de que no ha ocurrido nada.
El consejo habitual pasaría esto por alto. Cuando la gente revisa un sitio después de una vulnerabilidad de toma de control, busca cuentas de administrador nuevas y desconocidas. Esa comprobación no encontraría nada aquí, porque no se crea ninguna cuenta nueva. Una cuenta que ya existía se sobrescribe, por lo que el número de administradores no cambia y no aparece ningún nombre no reconocido en la lista. Lo que cambia son los datos de inicio de sesión de una cuenta que ya conocía. Por lo tanto:
- Compruebe la dirección de correo electrónico de todas las cuentas de administrador. En la administración de WordPress, vaya a Usuarios, filtre por Administrador, y confirme que cada una sigue teniendo la dirección de correo electrónico que le corresponde. Una cuenta de administrador cuya dirección de correo electrónico ya no sea la de la persona correcta es la señal reveladora de este problema.
- Restablezca las contraseñas de sus cuentas de administrador, y de cualquier otra cuenta que sea importante. Haga esto incluso si todas las direcciones de correo electrónico parecen correctas.
- Regenerar las claves secretas y sales de WordPress en
wp-config.phpes un paso complementario sensato (los nuevos valores están a un clic de distancia en el generador oficial de claves secretas; cambiarlas cierra la sesión de todos los usuarios una vez).
Tenga en cuenta que actualizar cierra la vulnerabilidad, pero no deshace un acceso que ya se haya producido. Si alguien había tomado el control de una cuenta antes de que usted actualizara, sigue teniendo esos datos de inicio de sesión después, razón por la cual el restablecimiento de contraseña anterior es tan importante. Si encuentra algo que le preocupa, trátelo como cualquier otro acceso no autorizado sospechoso.
No tengo visibilidad sobre si realmente ocurrió algo en su sitio, y no lo he revisado. Este es un aviso preventivo, no un informe de incidente.
Qué hice y qué no hice
Para ser completamente transparente sobre la comprobación detrás de mi correo electrónico: solo
leí dos archivos públicos que su sitio ya sirve a todos los visitantes, específicamente el
archivo readme.txt público del plugin y su página de inicio. No accedí a su área de
administración de WordPress, a su base de datos, ni a ninguna parte privada del sitio.
En particular, nunca envié su formulario de registro ni le envié nada. No se envió, probó ni explotó nada. Eso importa más aquí que en la mayoría de estas páginas, porque el formulario de registro es precisamente lo que concierne a este problema, por lo que «no lo toqué» es toda la diferencia entre una divulgación y una intrusión.
Tampoco publico deliberadamente los detalles que ayudarían a alguien a actuar sobre este problema. La descripción anterior se detiene en el nivel que necesita un propietario de sitio, y no enlazo ningún código de prueba de concepto.
Esta es una observación basada en la versión: su sitio informa una versión anterior a 4.7.8. Un sitio en ese rango puede estar ya protegido por otros medios, como un firewall de aplicaciones web o una corrección retroportada. Este aviso no es una afirmación de que su sitio fuera explotable en el momento en que lo verifiqué.
No tengo webmaster / estoy atascado
Si usted no es la persona que mantiene el sitio, por favor reenvíe esta página a quien lo haga (su desarrollador web, agencia o proveedor de alojamiento). Reconocerán rápidamente los pasos anteriores.
Si usted está manteniendo el sitio usted mismo y se queda atascado, estoy encantado de ayudarle a orientarse en la dirección correcta sin costo alguno. Póngase en contacto utilizando los datos de contacto que aparecen a continuación.
Contacto
Evan Harris, investigador de seguridad
- Correo: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Me pongo en contacto sobre problemas como este puramente para ayudar a los operadores a asegurar sus sitios. Si prefiere no ser contactado de nuevo, simplemente hágamelo saber y lo respetaré.
Referencias
Avisos oficiales y seguimiento
Fabricante / plugin