| Nombre del plugin | Inicio de sesión sin contraseña OwnID |
|---|---|
| Tipo de vulnerabilidad | Bypass de autenticación |
| Número CVE | CVE-2025-10294 |
| Urgencia | Alto |
| Fecha de publicación de CVE | 2025-10-15 |
| URL de origen | CVE-2025-10294 |
Bypass crítico de autenticación en OwnID Passwordless Login (≤ 1.3.4) — Lo que los propietarios de sitios de WordPress deben hacer ahora mismo
Resumen — Una vulnerabilidad recientemente divulgada (CVE-2025-10294) en el plugin de WordPress OwnID Passwordless Login (versiones ≤ 1.3.4) permite a actores no autenticados eludir los controles de autenticación. El problema se clasifica como “Autenticación Rota” con una alta puntuación CVSS. Si ejecutas WordPress y usas este plugin (o un flujo de autenticación sin contraseña que se integre con él), sigue la guía a continuación de inmediato para evaluar, mitigar y recuperarte si es necesario.
Por qué esto es importante (breve)
Los flujos de inicio de sesión sin contraseña son atractivos porque reducen la fatiga de contraseñas para los usuarios. También concentran la confianza en un pequeño conjunto de componentes: puntos finales de callback, validación de tokens, manejo de nonce/estado y creación de sesiones. Cuando cualquiera de esos controles está incompleto o es eludible, un actor no autenticado puede obtener los mismos derechos que un usuario legítimo — incluyendo acceso de administrador. Ese es precisamente el riesgo reportado para OwnID Passwordless Login ≤ 1.3.4.
Esta publicación explica el riesgo, qué buscar y pasos prácticos para proteger tu sitio hoy. La guía está escrita desde la perspectiva de un profesional de seguridad con sede en Hong Kong y está destinada a propietarios de sitios, desarrolladores y equipos de hosting.
Acciones rápidas — qué hacer ahora (lista de verificación accionable)
- Si tienes OwnID Passwordless Login instalado:
- Desactiva el plugin de inmediato hasta que esté disponible una solución confiable.
wp plugin deactivate ownid-passwordless-login --allow-root
- Desactiva el plugin de inmediato hasta que esté disponible una solución confiable.
- Si no puedes desactivar de inmediato, restringe el acceso a wp-admin a IPs de confianza y habilita límites de tasa estrictos en el servidor web o en la capa de borde.
- Monitorea los registros en busca de actividad de inicio de sesión sospechosa o creaciones de usuarios inesperadas (ver sección de Detección a continuación).
- Implementa parches virtuales a corto plazo en el borde: bloquea puntos finales sospechosos y combinaciones de parámetros anómalos asociados con el flujo sin contraseña (ver la sección de parches virtuales a continuación).
- Rota las credenciales y considera forzar restablecimientos de contraseña o invalidar todas las sesiones activas para usuarios administrativos.
- Si sospechas de un compromiso, sigue la sección de Respuesta a Incidentes y Limpieza de inmediato.
Actúa ahora — no esperes una actualización oficial del plugin si tu sitio está expuesto.
Resumen de la vulnerabilidad.
- Software afectado: plugin OwnID Passwordless Login para WordPress
- Versiones vulnerables: ≤ 1.3.4
- Tipo de vulnerabilidad: Autenticación Rota (OWASP A7)
- CVE: CVE-2025-10294
- Reportado por: Jonas Benjamin Friedli
- Privilegios requeridos: No autenticado
- Versión corregida: N/A (en el momento de la divulgación)
Descripción de alto nivel: El flujo de autenticación del plugin contiene un defecto de implementación que permite a un atacante eludir las verificaciones de autenticación y obtener una sesión autenticada en un sitio objetivo sin credenciales válidas o consentimiento. El vector de explotación preciso depende de cómo el plugin valida los datos de callback y los tokens en el flujo de trabajo sin contraseña. Debido a que el ataque no requiere autenticación previa, la superficie de ataque es amplia y puede ser explotada de forma remota.
Análisis técnico (lo que probablemente está sucediendo)
Los flujos de autenticación sin contraseña normalmente implican:
- Iniciar una solicitud de inicio de sesión (el usuario o cliente activa un desafío sin contraseña).
- Generar un desafío o token de corta duración, registrar el estado y enviar una solicitud de verificación fuera de banda al usuario (correo electrónico/SMS/autenticador de OS).
- Recibir un callback o token de verificación del proveedor de verificación o del cliente.
- Validar el token devuelto y la sesión/estado, luego establecer una sesión de WordPress para el usuario.
Una implementación confiable sin contraseña debe:
- Usar tokens firmados criptográficamente con una caducidad estricta.
- Vincular tokens a un usuario específico y a un estado almacenado (nonce), evitando la repetición de tokens o el intercambio de tokens.
- Validar los URI de origen/redirección y asegurar que las solicitudes de callback sean legítimas.
- Prevenir la creación directa o elevación de sesiones a través de puntos finales no controlados.
En este caso, la vulnerabilidad indica que uno o más de esos pasos de validación están ausentes, incompletos o implementados incorrectamente — por ejemplo:
- Falta o verificación insuficiente del token de callback.
- Falta de asegurarse de que el token esté vinculado al usuario o estado esperado.
- Falta de comprobaciones de nonce/CSRF en los puntos finales que crean sesiones.
Debido a que un atacante puede llamar al punto final vulnerable sin autenticación, puede falsificar una solicitud que resulta en una sesión para un usuario arbitrario, potencialmente incluyendo administradores.
Nota: Esta es una descripción técnica de alto nivel para ayudar a los defensores. No comparta detalles públicos de PoC de explotación — ayudarán a los atacantes. Enfóquese en la mitigación.
Impacto — por qué esto es crítico
Una vulnerabilidad de elusión de autenticación con acceso no autenticado tiene graves consecuencias:
- Toma de control del sitio: Los atacantes pueden obtener acceso de administrador, modificar contenido, crear puertas traseras o instalar plugins/temas maliciosos.
- Robo de datos: Acceso a datos de usuario, páginas privadas y contenido almacenado.
- Compromiso persistente: Los atacantes pueden crear usuarios administradores ocultos o tareas programadas (cron) para mantener el acceso.
- Daño a la reputación: Desfiguración, spam o inclusión en listas negras de motores de búsqueda.
- Movimiento lateral en el alojamiento: En entornos compartidos, un sitio comprometido puede ser un punto de apoyo para atacar otras cuentas si los permisos están mal configurados.
Debido a que esta vulnerabilidad permite el acceso no autenticado, la probabilidad de explotación masiva automatizada es alta. Los atacantes escanean rutinariamente en busca de firmas de plugins vulnerables e intentan eludir el inicio de sesión de forma automatizada.
Cómo detectar explotación en su sitio
Señales inmediatas a verificar:
- Usuarios administradores inesperados:
-
wp lista de usuarios --rol=administrador - Panel de control: Usuarios → Todos los usuarios → filtrar por Administrador y buscar cuentas sospechosas recientes.
-
- Inicios de sesión recientes exitosos de administradores desde IPs desconocidas:
- Inspeccionar los registros de acceso del servidor web (nginx/apache) para solicitudes POST a wp-login.php o puntos finales REST con respuestas 200/302 alrededor de marcas de tiempo sospechosas.
- Si tienes registro de auditoría, verifica los inicios de sesión de administradores fuera del horario normal.
- Cambios de archivos y nuevos archivos:
- Buscar en los directorios de plugins/temas y wp-content archivos inesperados. Buscar archivos que contengan eval, base64_decode, gzinflate u otros patrones de ofuscación.
- Comando de ejemplo (raíz del sitio):
find . -type f -mtime -14 -print
- Cambios en la base de datos:
- Verificar wp_options en busca de entradas de autoload sospechosas, nuevos trabajos cron o valores inesperados.
- Consulta de ejemplo para revisar tamaños de opciones:
SELECCIONAR option_name, LONGITUD(option_value) DE wp_options DONDE option_name COMO '%template%' O option_name COMO '%cron%';
- Tráfico saliente inusual: Verificar los registros del firewall y de la red en busca de conexiones a IPs/domains desconocidos que se originen desde tu servidor web.
- Patrones de actividad de inicio de sesión para puntos finales sin contraseña: Revisar los registros de acceso para solicitudes POST/GET a puntos finales de plugins o combinaciones de parámetros sospechosos que coincidan con el flujo sin contraseña.
Preservar los registros para análisis forense cuando sea posible.
Opciones de mitigación inmediata (propietarios y administradores del sitio)
Si ejecutas el plugin vulnerable, elige la ruta segura más rápida a continuación:
- Desactiva el plugin de inmediato
Mitigación a corto plazo más confiable. Para muchos sitios, WP-CLI es el método más rápido:
wp plugin deactivate ownid-passwordless-login --allow-root - Si no puedes desactivar:
- Restringir el acceso a los puntos finales relevantes a través de reglas del servidor web (denegar todas las IP excepto las IP de administradores de confianza).
- Agregar un fragmento .htaccess o nginx para denegar el acceso a los archivos y puntos finales del plugin que producen la vulnerabilidad.
- Ejemplo (nginx, bloquear por patrón de URI):
location ~* /wp-content/plugins/ownid-passwordless-login/ { - Ten cuidado: bloquear por ruta puede romper características legítimas. Se prefiere la desactivación.
- Patching en el borde/virtual:
Aplicar reglas en el servidor web o en el borde para bloquear solicitudes con cargas útiles de parámetros sospechosos a los puntos finales del plugin, hacer cumplir verificaciones de origen y referer, y agregar límites de tasa estrictos.
- Rotar claves e invalidar sesiones:
- Forzar restablecimientos de contraseña para usuarios administradores:
wp user update --user_pass='' - Invalidar sesiones activas para usuarios administrativos cuando sea posible.
- Restablecer cualquier clave API compartida a nivel de sitio utilizada por flujos de autenticación.
- Forzar restablecimientos de contraseña para usuarios administradores:
- Endurecer el acceso de administrador:
- Restringir temporalmente wp-admin a direcciones IP de confianza.
- Habilitar la autenticación de dos factores para cuentas de administrador cuando sea posible.
- Considere la autenticación básica HTTP o una capa de acceso que requiera un secreto compartido para wp-admin durante la ventana del incidente.
- Mantenga copias de seguridad: Asegúrese de tener copias de seguridad conocidas y buenas tomadas antes de cualquier compromiso sospechado. No sobrescriba copias de seguridad limpias con un estado comprometido.
Recomendaciones de parcheo virtual (cómo un WAF o capa de borde puede protegerlo ahora)
Utilice estas reglas en capas como mitigaciones temporales hasta que el complemento se solucione o se elimine:
- Bloquee o desafíe las solicitudes a los puntos finales del complemento:
Identifique los puntos finales REST del complemento, las acciones admin-ajax y las rutas de archivos del complemento. Bloquee las solicitudes POST a esos puntos finales desde rangos de IP no confiables o aplique un desafío CAPTCHA/JavaScript.
- Haga cumplir las verificaciones de encabezados HTTP:
Requiera encabezados de Origin y Referer válidos para solicitudes que creen sesiones, y rechace solicitudes con encabezados faltantes o claramente falsificados de clientes no confiables. Valide el Content-Type y no permita tipos inesperados.
- Limite la tasa de flujos sospechosos:
Aplique límites de tasa estrictos por IP en los puntos finales de creación de sesiones para interrumpir la explotación automatizada. Considere retrasos progresivos o bloqueos temporales después de un pequeño número de intentos.
- Detecte combinaciones de parámetros anómalos:
Cree reglas para coincidir con patrones inusuales en parámetros de token, estado o identificación de usuario utilizados por flujos sin contraseña (por ejemplo, tokens que son demasiado cortos/largos o contienen caracteres mal formados).
- Proteja el área de administración con una capa de acceso:
Requiera autenticación adicional o lista blanca de IP para wp-admin y XML-RPC. Esto reduce el riesgo de movimiento lateral incluso si un atacante elude un flujo de complemento.
- Auditoría y alerta:
Cree alertas para solicitudes POST que resulten en acciones de autenticación exitosas sin un desafío previo o un valor de estado válido y reenvíe alertas a los administradores para una revisión inmediata.
El parcheo virtual es solo una mitigación. Reemplace o solucione el complemento vulnerable como solución a largo plazo.
Firmas de detección y sugerencias de registro para hosts y proveedores de borde
Cree reglas para registrar y alertar sobre los siguientes comportamientos observables:
- Solicitudes POST a puntos finales específicos del complemento desde clientes sin una cookie de sesión válida.
- Respuestas HTTP exitosas (200/302) de los puntos finales de creación de sesión seguidas inmediatamente por solicitudes a /wp-admin/ o admin-ajax.php desde la misma IP.
- Intentos repetidos de crear o modificar cuentas utilizando los puntos finales del complemento.
- Volúmenes de solicitudes anormales para puntos finales sin contraseña desde una sola IP o un pequeño rango de IP.
Campos de registro a capturar para correlación:
- Marca de tiempo, IP de origen, User-Agent
- URI de solicitud y cadena de consulta
- Nombres de parámetros del cuerpo POST (evitar registrar cuerpos completos si contienen tokens sensibles)
- Código de respuesta y tamaño de respuesta
- Estado de la cookie e ID de sesión (si está presente)
Almacenar registros fuera del host cuando sea posible para prevenir manipulaciones durante una investigación.
Respuesta a incidentes y limpieza (si sospechas de un compromiso)
Si encuentras evidencia de compromiso, sigue un flujo de limpieza estructurado:
- Aísla el sitio:
- Pon el sitio en modo de mantenimiento o desconéctalo mientras investigas y limpias.
- Si estás en un hosting compartido, notifica a tu proveedor de inmediato y pídeles que aíslen la cuenta.
- Preservar evidencia: Haz copias de los registros del servidor web, volcado de bases de datos y instantáneas del sistema de archivos para la investigación forense. No modifiques esas copias.
- Rotar credenciales y claves: Cambia las contraseñas de administrador de WordPress y cualquier clave API utilizada por el sitio. Rota las credenciales de hosting y base de datos.
- Elimina el complemento vulnerable y reemplázalo: Desactiva y elimina OwnID Passwordless Login. Reemplázalo con una alternativa bien revisada solo después de una verificación y prueba independiente.
- Busca y elimina puertas traseras:
- Escanee en busca de archivos PHP inyectados que contengan eval, base64_decode, preg_replace con /e, create_function, gzinflate, system, exec, shell_exec.
- Ejemplo de búsqueda:
grep -R --exclude-dir=uploads -nE "eval\(|base64_decode\(|gzinflate\(|shell_exec\(|system\(" .
- Inspeccione la base de datos en busca de cambios no autorizados:
- Verifique wp_users en busca de cuentas desconocidas.
- Verifique wp_options en busca de código malicioso autoloaded.
- Verifique las publicaciones en busca de scripts inyectados.
- Reinstale el núcleo, los complementos y los temas desde fuentes confiables: No confíe en los archivos dejados en un sistema de archivos comprometido. Reemplácelos con descargas frescas de fuentes oficiales.
- Restaure desde una copia de seguridad limpia: Si tiene una copia de seguridad limpia tomada antes del compromiso, restaure y luego aplique el endurecimiento de seguridad.
- Monitoreo posterior a la recuperación: Monitoree los registros de cerca durante más de 30 días después de la recuperación en busca de signos de reinfección. Considere una auditoría de seguridad profesional si el sitio contiene datos sensibles.
- Involucra a profesionales de respuesta a incidentes: Para sitios que manejan datos financieros o personales sensibles, contrate a respondedores de incidentes experimentados.
Endurecimiento de la autenticación de WordPress (a largo plazo)
- Evite puntos únicos de falla: los flujos sin contraseña son aceptables solo cuando se implementan con tokens firmados, vinculación de nonce y validación estricta.
- Hacer cumplir la autenticación multifactor para las cuentas de administrador.
- Minimice las cuentas de administrador y aplique el principio de menor privilegio.
- Mantenga los complementos y temas actualizados y solo instale desde fuentes reputables.
- Utilice procesos de monitoreo y parcheo centralizados para todos los sitios que administre.
- Habilite el registro y la alerta para inicios de sesión de administradores y cambios inesperados de archivos.
- Endurezca los permisos de archivos y desactive la ejecución de PHP en uploads cuando sea posible:
<FilesMatch "\.php$"> Deny from all </FilesMatch> - Haga cumplir contraseñas fuertes y rotación periódica para usuarios administradores.
Recomendaciones para desarrolladores de plugins (lista de verificación de seguridad por diseño)
- Utilice tokens firmados (JWT o similar) con expiraciones cortas y reclamaciones de audiencia.
- Vincule tokens al estado del lado del servidor o nonce y valide en la devolución de llamada.
- Valide estrictamente las URIs de redirección y los orígenes.
- Siempre verifique el emisor y la firma de los tokens de proveedores de terceros.
- Evite crear sesiones o elevar privilegios en solicitudes GET simples.
- Implemente protección CSRF/nonce para puntos finales que cambien el estado o creen sesiones.
- Registre eventos de autenticación significativos con suficiente contexto (sin exponer secretos).
- Mantenga un proceso de divulgación responsable y una línea de tiempo de parches documentada.
- Proporcione orientación de endurecimiento a los propietarios del sitio y mitigaciones sugeridas para proveedores de borde.
Para hosts y agencias: recomendaciones operativas
- Pache rápidamente y ofrezca parches virtuales o bloqueo en el borde si un plugin de uso generalizado es vulnerable.
- Ofrezca servicios de aislamiento y escaneo de sitios para clientes afectados.
- Bloquee o limite la tasa de patrones de escaneo y explotación maliciosos conocidos en el borde.
- Notifique a los clientes con pasos accionables y ofrezca ayuda para implementar mitigaciones (desactivación, bloqueo, restablecimientos de sesión).
- Mantenga procesos de respaldo y recuperación probados y ofrezca soporte de respuesta a incidentes a los clientes.
Línea de tiempo y referencias
- Fecha del informe: 15 de octubre de 2025
- CVE: CVE-2025-10294
- Investigación acreditada a: Jonas Benjamin Friedli
Para la divulgación técnica, consulte la entrada oficial de CVE y el informe del investigador. (El código de explotación no se reproduce aquí para evitar habilitar a los atacantes.)
Preguntas frecuentes
P — Si desactivo el plugin, ¿los usuarios perderán acceso a sus cuentas?
R — Desactivar el plugin deshabilitará el flujo sin contraseña proporcionado por ese plugin. Los usuarios que dependen de él necesitarán iniciar sesión a través del nombre de usuario/contraseña estándar u otros métodos de autenticación disponibles hasta que haya un reemplazo seguro o una versión corregida disponible.
P — ¿Está automáticamente comprometido mi sitio si tengo el plugin instalado?
R — No automáticamente. La presencia de la vulnerabilidad significa que la explotación es posible; el compromiso real depende de si un atacante descubrió y explotó con éxito la falla en su sitio. Asuma el riesgo y actúe en consecuencia.
P — ¿Cuándo estará disponible un parche oficial?
R — En el momento de la divulgación puede que no haya un lanzamiento oficial corregido. Siga el canal oficial del plugin para actualizaciones y aplique el parche inmediatamente cuando se publique. Mientras tanto, aplique las mitigaciones descritas anteriormente.
Palabras finales — priorice la contención y verificación
Este bypass de autenticación tiene un alto impacto porque no requiere credenciales previas. Si su sitio utiliza OwnID Passwordless Login (≤ 1.3.4), actúe ahora: desactive o bloquee el plugin, aplique mitigaciones de borde/WAF e inspeccione los registros en busca de signos de compromiso. Para operadores que gestionan muchos sitios, automatice los pasos de detección y mitigación para reducir el tiempo de triaje manual y proteger a los clientes antes de que esté disponible un parche oficial.
Si necesita ayuda para evaluar un sitio o responder a un compromiso sospechoso, contrate a un equipo de respuesta a incidentes experimentado o a un consultor de seguridad de confianza.