
Análisis técnico y mitigación defensiva para una cadena de XSS a RCE previa a la autenticación en WordPress Core, que incluye bypass del sanitizador, DOM clobbering, abuso de JSONP, firmas de detección y parcheo.
Análisis técnico y matriz de mitigación defensiva para el vector CVE-2026-64638 (XSS2Shell), una inconsistencia crítica en el parsing de la pantalla de autenticación de WordPress Core que permite encadenar un Cross-Site Scripting (XSS) reflejado pre-autenticación con primitivas del navegador hasta alcanzar la ejecución remota de código (RCE).
El riesgo real de este vector reside en la combinación de múltiples gadgets legítimos integrados en el núcleo de la aplicación. Lo que inicialmente se clasifica como un hallazgo de impacto medio (XSS reflejado), escala a compromiso total del servidor siguiendo estos eslabones técnicos:
[ Solicitud Pre-Auth ] ➔ [ Inconsistencia de Filtros ] ➔ [ DOM Clobbering ] ➔ [ Callback JSONP REST API ] ➔ [ Interacción de Admin ] ➔ [ Generación App Password ] ➔ [ RCE via Plugin Upload ]
El punto de entrada aprovecha una discrepancia de lógica entre dos funciones internas de limpieza de entradas en la pantalla de login (wp-login.php). Mientras una ignora ciertas etiquetas HTML de área, la otra las repara, permitiendo que un payload malicioso en el parámetro de nombre de usuario se refleje directamente en el DOM de la respuesta de error de inicio de sesión.
WordPress carga por defecto scripts de perfil de usuario en la interfaz de login (necesarios para los flujos de restablecimiento de contraseña). La inyección HTML altera el espacio de nombres global (window.ajaxurl), redirigiendo las llamadas legítimas hacia un endpoint controlado por el atacante.
Utilizando parámetros específicos de la REST API interna (_jsonp, _method=GET, _envelope=1), el navegador interpreta las respuestas como contenido application/javascript, lo que permite forzar la invocación de funciones arbitrarias saltándose directivas estrictas de Content Security Policy (CSP) basadas en nonces.
Si un administrador con sesión abierta interactúa con el origen afectado, el payload aprovecha sus privilegios para autorizar de forma automatizada una Application Password de fondo. Con estas credenciales de API secundarias, se realiza la subida de un plugin malicioso que otorga una shell interactiva sobre el entorno de ejecución de PHP.
El parche de seguridad fue desplegado de manera retroactiva en todas las ramas activas del núcleo de WordPress. Verifique la versión menor exacta instalada en sus servidores.
Actualizar inmediatamente el Core de WordPress a la versión correspondiente a su rama. No dependa exclusivamente del sistema de actualizaciones automáticas en entornos corporativos.
# Forzar actualización de Core vía WP-CLI
wp core update --version=7.0.3 --force
Si no es posible actualizar el entorno de manera inmediata, aplique controles de defensa en profundidad para romper los eslabones superiores de la cadena de explotación:
define('DISALLOW_FILE_MODS', true); en su archivo wp-config.php para restringir la instalación o modificación de código mediante la interfaz web.wp-login.php exclusivamente a rangos IP corporativos o VPNs de confianza.Para auditar si la infraestructura ha sido expuesta o atacada antes de la aplicación del parche, audite los archivos de logs de acceso (Access Logs) y el sistema de archivos buscando los siguientes patrones:
# Buscar intentos de inyección de caracteres HTML o payloads en el login
grep -E "wp-login\.php.*user_login=.*[<>]" /var/log/nginx/access.log
# Buscar llamadas a la REST API que fuercen parámetros de callbacks JSONP
grep -E "wp-json.*_jsonp=" /var/log/nginx/access.log
# Auditar llamadas inusuales de subida de complementos por parte de IPs desconocidas
grep "POST /wp-admin/update.php?action=upload-plugin" /var/log/nginx/access.log
.php anómalos o de creación reciente en la ruta /wp-content/plugins/ que pertenezcan a plugins no reconocidos o inactivos.| Rama | Última Versión Vulnerable | Versión Corregida (Patch) | Estado de Soporte |
|---|
| 7.0 | 7.0.2 | 7.0.3 | Rama Principal Semanaria |
| 6.9 | 6.9.5 | 6.9.6 | Backport de Seguridad |
| 6.8 | 6.8.6 | 6.8.7 | Backport de Seguridad |
| 6.7 | 6.7.5 | 6.7.6 | Backport de Seguridad |
| < 4.7 | Todas | No soportado | 🚨 Riesgo Crítico / End of Life |