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 Ultimate Member (el plugin de membresía y perfiles de usuario para WordPress, de Ultimate Member, que reside en sus archivos en /wp-content/plugins/ultimate-member/) que se encuentra dentro del rango afectado por un problema de seguridad conocido. Esta página explica en qué consiste el problema, cómo determinar si aplica a su sitio, cómo leer su versión sin dejarse engañar y a qué versión actualizar.

El problema es CVE-2026-19423, una debilidad de escalada de privilegios no autenticada en los formularios de registro y de perfil del plugin. Afecta a las versiones 2.6.7 a 2.12.1 de Ultimate Member y está corregida en 2.13.0, publicada el 24 de agosto de 2026. Si está ejecutando una versión en ese rango, actualice Ultimate Member a 2.13.0 o posterior. No hay una puntuación CVSS publicada para este problema (fue asignado por WPScan sin vector de severidad), así que no voy a citarle una, y no tengo constancia de código de explotación público para él.

Las versiones anteriores a 2.6.7 no están afectadas por este problema, y quiero ser preciso en esto en lugar de dejar que el aviso suene más amplio de lo que es. No se trata de un fallo presente desde los inicios del plugin: la ruta de código de la que depende se introdujo en 2.6.7. Así que una instalación anterior a 2.6.7 no es un objetivo aquí, y no escribí a sitios que ejecutaran una. Si su versión resulta ser inferior a 2.6.7, puede ignorar este aviso en lo que respecta a este problema (aunque mantener actualizado un plugin tan atrasado merece la pena por otras razones).

Antes de nada, el matiz que decide cuánto importa esto para su sitio, porque prefiero decirlo claramente antes que dejar que el aviso suene más grande de lo que es: este problema solo alcanza a un sitio donde uno de sus formularios de registro o de perfil de Ultimate Member ofrece a la persona que lo rellena una elección de rol, y donde el registro está abierto al público. Una configuración estándar de Ultimate Member no pone un selector de rol en su formulario de registro (un administrador tiene que añadirlo deliberadamente), así que muchos sitios que ejecutan una versión afectada no están expuestos en absoluto. Puedo leer la versión de su plugin desde un archivo público, pero no puedo ver cómo están construidos sus formularios ni si el registro está abierto, por lo que este aviso es una advertencia preventiva y no un hallazgo confirmado sobre su sitio.

Unas palabras sobre la urgencia, porque este es un aviso condicional. Si ninguno de sus formularios de Ultimate Member permite a un visitante elegir un rol, actualizar es mantenimiento ordinario de plugins. Si alguno lo permite, y el registro está abierto, trate la actualización como una prioridad: en esa configuración, un visitante que registre una cuenta para sí mismo podría asignar a esa cuenta privilegios elevados, potencialmente hasta un nivel equivalente al de administrador, sin ningún acceso previo a su sitio. Ese es un resultado serio donde aplica, y por eso escribo en lugar de archivarlo como de baja prioridad; pero aplica solo bajo las condiciones anteriores, y actualizar lo elimina independientemente de ellas.

Este es un fallo del plugin, no del núcleo de WordPress. Un WordPress totalmente actualizado no le protege si el propio plugin Ultimate Member está en una versión afectada.

¿Es legítimo este mensaje?

Sí. Este es un aviso de buena fe, de divulgación responsable, de un investigador de seguridad independiente. No le pido dinero, contraseñas ni acceso a su sitio, y no he intentado entrar en él, registrarme en él ni explotar nada.

Lo único que hice fue mirar páginas y archivos que su sitio web sirve a todos los visitantes (de la misma manera que su página de inicio es pública) y anotar el número de versión que publica el plugin. Específicamente no creé una cuenta, no envié ningún formulario de registro o de perfil, no inicié sesión ni envié nada a la función afectada. Nada de esta comprobación toca sus datos, su área de administración ni ninguna parte privada de su sitio (más detalles 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

Ultimate Member construye las páginas de registro, inicio de sesión y perfil de miembros de muchísimos sitios WordPress. Cuando alguien se registra, el plugin decide qué rol debe tener su nueva cuenta. En un formulario que ofrece un selector de rol, se supone que debe aceptar solo los roles que ese formulario fue configurado para permitir.

En las versiones afectadas, cuando la lista de roles permitidos de un formulario de ese tipo acaba vacía, el plugin ya no descarta el rol que envió el visitante. En su lugar, conserva ese valor y lo comprueba solo contra los roles que su sitio tenga, no contra los roles que el formulario debía ofrecer. La consecuencia es que un visitante que registre una cuenta para sí mismo podía dirigirla hacia un rol que nunca debió recibir, hasta un nivel equivalente al de administrador.

La condición previa, repetida porque es la parte con más probabilidades de malinterpretarse en cualquiera de las dos direcciones: esto necesita un selector de rol en un formulario público, y el registro abierto. Ninguna de las dos cosas es la configuración por defecto. El formulario de registro estándar de Ultimate Member no lleva campo de rol, así que en una instalación típica no hay nada que alcanzar aquí. Donde un administrador ha añadido un campo de rol y ha dejado el registro abierto, la barrera es solo tan alta como quién puede enviar ese formulario, que, con el registro abierto, es cualquiera.

Estoy describiendo esto al nivel que un operador de sitio necesita para actuar, y no más allá. No publico 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 y comprobar sus propios formularios, como se describe abajo, le dice todo lo que necesita para decidir qué hacer.

Si mi correo citó este problema, significa que la versión que reporta su sitio está en el rango 2.6.7 a 2.12.1. No probé si su sitio en particular es explotable, y no puedo ver cómo están construidos sus formularios. Todo lo que observé es la versión.

¿Estoy afectado?

Dos preguntas lo deciden, en este orden.

Primero: ¿ofrece alguno de sus formularios un selector de rol, con el registro abierto?

Esta es la pregunta decisiva, y solo usted puede responderla, porque depende de cómo están construidos sus formularios, algo que no es visible desde fuera. Comprobarlo es completamente seguro y es el propósito de esta página.

  1. En su escritorio de WordPress, vaya a Ultimate Member y luego Formularios, y abra uno a uno cada uno de sus formularios de registro y de perfil.
  2. Revise los campos de cada formulario en busca de un campo de selección de rol (un desplegable o conjunto de opciones que permite a la persona que se registra elegir un rol, a veces etiquetado “Rol”). En la mayoría de los sitios no hay ninguno, porque el formulario de registro estándar no incluye uno.
  3. Compruebe si el registro está abierto al público: Ajustes, luego Generales, luego Miembros, la casilla “Cualquiera puede registrarse” (núcleo de WordPress), y si su formulario de registro de Ultimate Member es accesible para los visitantes.
  4. Si ningún formulario ofrece un selector de rol, este problema no alcanza a su sitio, ni siquiera en una versión afectada, aunque actualizar sigue mereciendo la pena como mantenimiento ordinario.
  5. Si algún formulario ofrece un selector de rol y el registro está abierto, trate la actualización como una prioridad (vea Cómo actualizar). Si no puede actualizar de inmediato, el paso provisional es quitar el campo de rol de cualquier formulario público de registro o de perfil, o cerrar el registro público, hasta que haya actualizado. La corrección real es actualizar.

Por favor, no intente reproducir el problema contra su propio sitio ni el de nadie más; no necesita hacerlo para responder a la pregunta anterior.

Segundo: ¿qué versión está ejecutando?

No tiene que fiarse de mi palabra. Hay dos formas públicas de leer su versión y una dentro del escritorio, y deberían coincidir.

Desde el área de administración de WordPress (autoritativa):

  1. Inicie sesión en su escritorio de WordPress (normalmente en yourdomain.com/wp-admin).
  2. Vaya a Plugins y luego Plugins instalados.
  3. Busque Ultimate Member, la entrada cuya carpeta es ultimate-member, y anote la versión que aparece debajo de su nombre.

Desde el manifiesto público (sin necesidad de iniciar sesión): abra

yourdomain.com/wp-content/plugins/ultimate-member/readme.txt

en un navegador y lea la línea Stable tag: cerca del principio. Esta es la fuente pública que yo leí. Si esa dirección devuelve un “no encontrado”, pruebe README.txt con mayúsculas; algunos alojamientos distinguen mayúsculas de minúsculas y unos pocos paquetes incluyen el archivo con el nombre en mayúsculas.

Desde el código fuente de su página (sin necesidad de iniciar sesión): vea el código fuente de su página de inicio y busque las hojas de estilo propias del plugin exactamente en estas rutas:

/wp-content/plugins/ultimate-member/assets/css/um-styles.min.css?ver=...
/wp-content/plugins/ultimate-member/assets/css/um-profile.min.css?ver=...

El número ?ver= adjunto a esos archivos es la versión propia del plugin. Ultimate Member carga estas hojas de estilo en todas las páginas del frontal por defecto, muestre o no la página un área de miembros, así que su página de inicio suele bastar.

La trampa que evitar aquí, y es fácil caer en ella. Ultimate Member incluye copias empaquetadas de varias bibliotecas de terceros dentro de su propia carpeta de plugin, y cada una lleva su propio número de versión, totalmente ajeno. Su código fuente puede mostrar una biblioteca de recorte de imágenes con ?ver=1.6.1, Font Awesome con ?ver=6.5.2 o Select2 con ?ver=3.6.2, todas en rutas que comienzan por la carpeta del plugin Ultimate Member. Un operador que busque en el código fuente la carpeta del plugin y lea el primer valor ?ver= que aparezca puede llevarse fácilmente uno de esos números, que no tiene nada que ver con la versión del plugin. Lea la versión solo de las hojas de estilo um- propias del plugin (um-styles, um-profile, um-account y similares), e ignore cualquier otro ?ver= de la página. Si no consigue obtener un número legible del código fuente, es algo común y no es señal de nada: los plugins de caché y de optimización suprimen rutinariamente el valor ?ver=; use entonces la readme.txt o la pantalla de administración.

Después aplique esta regla, y tenga en cuenta que las versiones se comparan numéricamente, no alfabéticamente, de modo que 2.12.1 es más reciente que 2.6.7 aunque “12” parezca menor que “6” como texto:

  • 2.6.7 a 2.12.1: afectada, sujeta a la pregunta sobre los formularios de arriba. Actualice a 2.13.0 o posterior.
  • 2.13.0 o más reciente: ya corregida en lo que respecta a este problema. Tomar la última versión disponible es la mejor opción.
  • Cualquier versión anterior a 2.6.7: no afectada por este problema. Actualizar sigue mereciendo la pena como mantenimiento ordinario.

Cómo actualizar

El plugin es gratuito, sigue publicándose y se mantiene activamente, así que la corrección es una actualización normal. La vía más segura es actualizar a través del propio WordPress, haciendo antes una copia de seguridad:

  1. Haga una copia de seguridad de su sitio (archivos y base de datos) antes de hacer cambios. La mayoría de los proveedores de alojamiento ofrecen copias con un clic, o use un plugin de copias de seguridad de WordPress.
  2. En la administración de WordPress, vaya a Escritorio y luego Actualizaciones, o Plugins y luego Plugins instalados. Si aparece una actualización de Ultimate Member, instálela desde ahí.
  3. Si prefiere la línea de comandos, WP-CLI hace lo mismo: wp plugin update ultimate-member (el comando usa el nombre de la carpeta, no el nombre visible).
  4. 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, Ultimate Member, y actualizar mediante Plugins, luego Añadir nuevo plugin, luego Subir plugin.
  5. Tras actualizar, confirme el nuevo número de versión (2.13.0 o posterior) con los pasos anteriores, y registre una cuenta de prueba (o revise sus flujos existentes de miembros y de registro) para asegurarse de que siguen funcionando como se espera.

Ya que está en ello, merece la pena confirmar que el núcleo de WordPress y sus demás plugins están al día, porque el mismo principio aplica a todos.

Después de actualizar: ¿se usó esto ya contra usted?

Actualizar a 2.13.0 o posterior cierra el problema, y para muchos sitios esa es toda la tarea. Esta página es un aviso preventivo, no un informe de incidente: no tengo visibilidad de si ocurrió algo en su sitio, y no lo miré.

Hay una comprobación posterior que merece la pena hacer, y está condicionada a la misma pregunta sobre los formularios. Dado que el resultado de este problema, donde aplica, es una cuenta con privilegios elevados, si su sitio tuvo un formulario de registro o de perfil con un selector de rol mientras el registro estaba abierto y usted ejecutaba una versión afectada, merece la pena confirmar que nadie lo usó para crear una cuenta que no debería existir:

  • Revise sus cuentas de usuario, especialmente los administradores. En Usuarios y luego Todos los usuarios, filtre por Administrador (y cualquier otro rol de privilegios altos) y busque cuentas que no reconozca, o cuentas creadas alrededor o después del periodo en que estuvo en una versión afectada. Preste atención a usuarios registrados recientemente cuyo rol sea superior al de un miembro normal.
  • Si encuentra una cuenta que no puede explicar, trátela como trataría cualquier acceso no autorizado sospechado: elimínela o rebaje su rol, fuerce un restablecimiento de contraseña para sus administradores y, si su organización tiene un equipo de seguridad informática, involúcrelo.
  • Si todo está como debe estar, y especialmente si ningún formulario ofrecía un selector de rol en primer lugar, con actualizar basta.

Para ser claro sobre el encuadre: esto es una autocomprobación, no una declaración de que su sitio fue atacado. Este aviso se basa en un número de versión, no en ninguna evidencia de un incidente.

Qué hice y qué no hice

Para ser totalmente transparente sobre la comprobación detrás de mi correo: solo leí archivos que su sitio ya sirve a todos los visitantes, en concreto su página de inicio y las direcciones de las hojas de estilo de Ultimate Member escritas en ella, y la readme.txt pública del plugin dentro de wp-content/plugins/ultimate-member/. No accedí a su área de administración de WordPress, a su base de datos, a la configuración de sus formularios ni a ninguna parte privada del sitio.

En particular, nunca creé una cuenta, nunca envié su formulario de registro o de perfil, nunca inicié sesión y nunca envié nada a la función afectada. No se envió, probó ni explotó nada. Eso importa aquí, porque un envío de registro está cerca de la acción exacta a la que concierne este problema, así que “no lo toqué” es toda la diferencia entre una divulgación y una intrusión.

También estoy omitiendo deliberadamente los detalles que ayudarían a alguien a actuar sobre este problema. La descripción anterior se detiene en el nivel que un operador de sitio necesita, y no enlazo ningún código de prueba de concepto.

Esto es una observación basada en versiones: su sitio reporta una versión en el rango 2.6.7 a 2.12.1. No es una afirmación de que su sitio fuera explotable en el momento en que lo comprobé. Dado que este problema depende de cómo están construidos sus formularios y de si el registro está abierto (cosas que no puedo ver), un sitio en el rango afectado puede perfectamente no estar expuesto en absoluto, y un sitio en ese rango puede estar protegido por otros medios, como un cortafuegos de aplicaciones web o una corrección retroportada. Si ya ha actualizado, o ha remediado esto de otra manera, no se necesita ninguna acción, y le pido disculpas por la molestia.

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 los pasos anteriores rápidamente.

Si mantiene el sitio usted mismo y se queda atascado, estaré encantado de ayudarle a orientarse sin coste alguno. Contácteme usando los datos de abajo.

Contacto

Evan Harris, investigador de seguridad

Me pongo en contacto sobre problemas como este únicamente para ayudar a los operadores a proteger sus sitios. Si prefiere no ser contactado de nuevo, dígamelo y lo respetaré.

Referencias

Avisos oficiales y seguimiento

Fabricante / plugin