
Analisi tecnica e mitigazione difensiva per una catena XSS-to-RCE pre-autenticazione nel WordPress Core, inclusi bypass del sanitizer, DOM clobbering, abuso di JSONP, firme di rilevamento e applicazione delle patch.
Analisi tecnica e matrice di mitigazione difensiva per il vettore CVE-2026-64638 (XSS2Shell), un'inconsistenza critica nel parsing della schermata di autenticazione di WordPress Core che consente di concatenare un Cross-Site Scripting (XSS) riflesso pre-autenticazione con primitive del browser fino a raggiungere l'esecuzione remota di codice (RCE).
Il rischio reale di questo vettore risiede nella combinazione di molteplici gadget legittimi integrati nel nucleo dell'applicazione. Ciò che inizialmente viene classificato come un riscontro di impatto medio (XSS riflesso), scala a compromissione totale del server seguendo questi anelli tecnici:
[ Richiesta Pre-Auth ] ➔ [ Incoerenza dei Filtri ] ➔ [ DOM Clobbering ] ➔ [ Callback JSONP REST API ] ➔ [ Interazione di Admin ] ➔ [ Generazione App Password ] ➔ [ RCE via Plugin Upload ]
Il punto di ingresso sfrutta una discrepanza logica tra due funzioni interne di pulizia degli input nella schermata di login (wp-login.php). Mentre una ignora alcuni tag HTML di area, l'altra li ripara, consentendo a un payload dannoso nel parametro del nome utente di riflettersi direttamente nel DOM della risposta di errore di accesso.
WordPress carica per impostazione predefinita script di profilo utente nell'interfaccia di login (necessari per i flussi di reimpostazione della password). L'iniezione HTML altera lo spazio dei nomi globale (window.ajaxurl), reindirizzando le chiamate legittime verso un endpoint controllato dall'attaccante.
Utilizzando parametri specifici della REST API interna (_jsonp, _method=GET, _envelope=1), il browser interpreta le risposte come contenuto application/javascript, consentendo di forzare l'invocazione di funzioni arbitrarie aggirando direttive rigorose di Content Security Policy (CSP) basate su nonce.
Se un amministratore con sessione aperta interagisce con l'origine interessata, il payload sfrutta i suoi privilegi per autorizzare automaticamente una Application Password in background. Con queste credenziali API secondarie, viene effettuato il caricamento di un plugin dannoso che fornisce una shell interattiva sull'ambiente di esecuzione PHP.
La patch di sicurezza è stata distribuita retroattivamente su tutti i rami attivi del core di WordPress. Verificate la versione minore esatta installata sui vostri server.
Aggiornare immediatamente il core di WordPress alla versione corrispondente al proprio ramo. Non fare affidamento esclusivamente sul sistema di aggiornamenti automatici in ambienti aziendali.
# Forzar actualización de Core vía WP-CLI
wp core update --version=7.0.3 --force
Se non è possibile aggiornare l'ambiente immediatamente, applicare controlli di difesa in profondità per rompere gli anelli superiori della catena di sfruttamento:
define('DISALLOW_FILE_MODS', true); nel vostro file wp-config.php per limitare l'installazione o la modifica di codice tramite l'interfaccia web.wp-login.php esclusivamente a range IP aziendali o VPN fidate.Per verificare se l'infrastruttura è stata esposta o attaccata prima dell'applicazione della patch, controllate i file di log di accesso (Access Logs) e il file system cercando i seguenti pattern:
# 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 anomali o di creazione recente nel percorso /wp-content/plugins/ che appartengano a plugin non riconosciuti o inattivi.| Rama | Ultima Versione Vulnerabile | Versione Corretta (Patch) | Stato di Supporto |
|---|
| 7.0 | 7.0.2 | 7.0.3 | Ramo Principale Settimanale |
| 6.9 | 6.9.5 | 6.9.6 | Backport di Sicurezza |
| 6.8 | 6.8.6 | 6.8.7 | Backport di Sicurezza |
| 6.7 | 6.7.5 | 6.7.6 | Backport di Sicurezza |
| < 4.7 | Tutte | Non supportato | 🚨 Rischio Critico / End of Life |