Un request. Sin autenticación. Sin contraseña. Y el atacante es admin de tu WordPress. La CVE-2026-8732 en WP Maps Pro no es una falla sutil, es una feature que entrega credenciales de administrador a cualquier visitante que pida. CVSS 9.8. Exploración activa. Wordfence bloqueó 3.600 ataques en 24 horas. Más de 15.800 sites con el plugin instalado.
El backdoor que se llamaba "temporary access"
WP Maps Pro es un plugin comercial de Google Maps vendido en Envato. Tiene una feature llamada "temporary access", supuestamente para permitir que el soporte del vendor acceda al site del cliente. El problema: esa feature es una vulnerabilidad equivalente a backdoor por diseño fallido.
El handler wpgmp_temp_access_ajax fue registrado con wp_ajax_nopriv_, el hook de WordPress para endpoints que no exigen autenticación. La única protección es un nonce (fc-call-nonce) embutido en el JavaScript que el plugin inyecta en todas las páginas públicas. Cualquier visitante que acceda a cualquier página del site puede leer el nonce en el código-fuente.
Eso no es un bypass. Es el diseño intencional de la feature. El handler fue colocado en el hook nopriv deliberadamente, para funcionar sin que el visitante esté logueado. La feature no fue comprometida por un atacante que encontró un camino no intencional. Fue construida para hacer exactamente lo que hace: emitir credenciales de admin vía endpoint público.
La cadena de ataque: un request, un clic, full takeover
La exploración es trivial. No exige exploit complejo, no exige conocimiento técnico avanzado. Cinco pasos, todos automatizables:
- Atacante accede a cualquier página del site y extrae el nonce del HTML
- POST para
admin-ajax.phpconaction=wpgmp_temp_access_supportycheck_temp=false - El plugin crea un usuario con role administrator, username
fc_user_+ string aleatoria, email[email protected] - El plugin genera una magic login URL y la retorna en el response
- Atacante accede a la URL.
wp_set_auth_cookie()autentica como admin. Sin contraseña. Sin MFA. Sin cualquier verificación adicional.
Un request. Un clic. Toma total del site. La escalada no es efecto colateral, es la función que el handler ejecuta por diseño. La cuenta creada tiene role de administrator completo. El atacante puede instalar plugins, editar temas, modificar archivos, crear nuevas cuentas, excluir contenido. Todo lo que un admin legítimo puede hacer, porque, para WordPress, el atacante es un admin legítimo.
Por qué un nonce en el frontend no es autenticación
El argumento del vendor probablemente sería: "pero tiene nonce". Nonce en WordPress es un token que confirma que el caller visitó una página del site antes de hacer el request. Eso previene CSRF, no autentica al caller.
Todo visitante puede visitar cualquier página. Luego, todo visitante puede obtener el nonce. Luego, todo visitante pasa por el nonce check. Un mecanismo de protección que cualquier visitante satisface no es protección, es escenificación.
La corrección en la versión 6.1.1 confirma eso: añadió current_user_can('manage_options'). Ahora exige que el caller ya sea admin para crear otro admin. Lo que debería existir desde el día 1. La ausencia de un capability check no fue un olvido, fue la condición necesaria para que la feature funcione sin login. Una feature que emite credenciales de admin para quien pida es un backdoor con otro nombre.
La distinción entre nonce y autenticación no es académica. El nonce protege contra requiciones forjadas de terceros (CSRF). La autenticación verifica quién está haciendo la requición. Confundir los dos es como confundir un carnet de visitante con una llave de la puerta del cofre. WP Maps Pro trató el carnet de visitante como si fuera la llave.
15.800 sites pagaron por un plugin que entregaba admin a cualquier visitante
WP Maps Pro es un plugin pago, vendido en Envato, con más de 15.800 instalaciones activas. Esos sites pagaron por una herramienta de mapas que, como bono, daba acceso de administrador a cualquier visitante. Wordfence registró 3.600 ataques bloqueados en las primeras 24 horas de exploración activa. El número de sites efectivamente comprometidos es desconocido.
En Tech86, ya encontramos en auditorías plugins comerciales con handlers nopriv que ejecutan acciones privilegiadas. No es exclusividad de WP Maps Pro, es un patrón. Plugins que necesitan "acceso de soporte" o "diagnóstico remoto" frecuentemente implementan mecanismos que bypasean autenticación. La diferencia es que, en la mayoría de los casos, nadie auditó el código para descubrirlo.
El ecosistema de plugins WordPress tiene un problema estructural de confianza ciega. El site medio corre entre 20 y 40 plugins. Cada uno puede registrar handlers nopriv, embutir nonces en el frontend, crear endpoints sin capability check. Nadie revisa eso antes de instalar. El marketplace de Envato no exige auditoría de seguridad. El repositorio de WordPress.org no exige. El código entra en producción sin verificación, y la primera persona que lo lee con ojos de seguridad es el atacante.
Qué hacer ahora
Si tienes WP Maps Pro instalado, la acción es inmediata: actualiza a 6.1.1 o desactiva el plugin. Después, audita cuentas de administrador buscando fc_user_* o [email protected]. Verifica access logs por POST en admin-ajax.php con action=wpgmp_temp_access_support. Si hay señales de compromiso, trátalo como breach, no basta remover la cuenta maliciosa. Rota todas las credenciales, escanea el filesystem por web shells, verifica wp_options y temas por contenido inyectado.
En Tech86, auditamos ambientes WordPress con foco en superficies de ataque de plugins. Si tu WordPress tiene plugins comerciales sin auditoría de seguridad, estás confiando el acceso a tu negocio en código que nadie verificó. Un nonce en el frontend no es autenticación. Una feature que emite credenciales de admin para cualquier visitante es un backdoor. Y 15.800 sites pagaron por ella sin saber.