CVE-2026-64638 (XSS2Shell): Pre-Auth XSS in the WordPress Login Screen

Red | Vulnerability
CVE-2026-64638 (XSS2Shell): Pre-Auth XSS in the WordPress Login Screen | TA2026227

Threat Advisory · Vulnerability Report

CVE-2026-64638 (XSS2Shell): Pre-Auth XSS in the WordPress Login Screen

WordPress has patched CVE-2026-64638, nicknamed XSS2Shell, a pre-authentication reflected cross-site scripting vulnerability in the WordPress Core login screen. Unauthenticated attackers can trigger JavaScript execution in the trusted origin of an affected WordPress site, enabling credential harvesting, session theft, and a documented escalation path to server-side PHP code execution.

TA2026227 Admiralty Code A1 Published Aug 10, 2026 CVE-2026-64638 CWE-79 Product: WordPress Core
TA Number
TA2026227
Date of Publication
August 10, 2026
Admiralty Code
A1
First Seen
July 26, 2026
Affected Product
WordPress
CVE ID
CVE-2026-64638
CWE ID
CWE-79
Vulnerability Name
XSS2Shell
Patched Version
7.0.3

Summary

WordPress has patched CVE-2026-64638, nicknamed XSS2Shell, a pre-authentication reflected cross-site scripting flaw in the WordPress Core login screen. First seen on July 26, 2026, the immediate consequence of CVE-2026-64638 is unauthenticated JavaScript execution in the trusted origin of an affected WordPress site. This permits credential harvesting presented on a legitimate hostname, theft of session material, and arbitrary same-origin requests issued in the victim's security context.

CVE Name Affected Product
CVE-2026-64638 XSS2Shell (WordPress Core Pre-Auth Reflected Cross-Site Scripting Vulnerability) WordPress Core

Vulnerability Details

#1 Root Cause in the Login Interface

WordPress has remediated the CVE-2026-64638 flaw, named XSS2Shell, a pre-authentication reflected cross-site scripting vulnerability in the WordPress Core login interface. The flaw resides in the handling of the username value submitted in a failed login attempt at wp-login.php.

#2 Sanitization Bypass

What distinguishes CVE-2026-64638 from a routine reflected XSS finding is a publicly documented escalation path that terminates in server-side PHP execution. The root cause is a parser disagreement between two sanitization routines applied in sequence to the same value: attacker-controlled markup survives the first routine as inert text and is then promoted to live HTML elements by the second.

#3 Zero-Interaction Exploitation

Exploitation requires no account, no session, and no prior knowledge of the target. A single failed login attempt is sufficient to place attacker-chosen DOM elements on the rendered error page and drive WordPress's own bundled JavaScript into script execution within the site's origin.

#4 Escalation to Code Execution

Against a victim already authenticated as a single-site Administrator who interacts with an attacker-controlled page, a full escalation chain abuses the native Application Password approval flow, the REST API, and the plugin upload facility to achieve PHP code execution as the web server user.

#5 Exposure and Attribution

No threat actor has been attributed to this vulnerability and no malware has been associated with it. Because WordPress Core powers a very large share of internet-facing websites and the affected login interface is by design publicly reachable, the exposed population is substantial, even though escalation to server-side code execution depends on several additional preconditions aligning.

Vulnerability
CVE ID Affected Products Affected CPE CWE ID
CVE-2026-64638 WordPress Core 4.7.0 through 7.0.2, all branches; before 7.0.3 cpe:2.3:a:wordpress:wordpress:*:*:*:*:*:*:*:* CWE-79

Recommendations

01
Update WordPress Core Immediately

Apply WordPress 7.0.3, or the equivalent patched minor release for your supported branch such as 6.9.6, 6.8.7, or 6.7.6, without delay. This is the only fix for the underlying flaw; every other measure reduces blast radius without closing the vulnerability. Verify the running version directly through the dashboard, hosting control panel, WP-CLI, or asset inventory rather than assuming an automatic update policy has applied.

02
Inventory Every WordPress Instance

Build or refresh a complete inventory of WordPress installations across the estate, including instances outside centralized patch management. Departmental, laboratory, research group, campaign, and course sites are the highest-risk population precisely because they are internet-facing and self-administered. Record the Core version for each so remediation can be tracked to completion.

03
Migrate or Decommission Unsupported Installations

Installations running WordPress 4.6 or earlier are end of life and will receive no patch for CVE-2026-64638. Any such instance must be migrated onto a supported and patched branch, isolated from public reachability, or decommissioned outright. Treat continued public exposure of an unsupported Core version as an accepted risk requiring explicit sign-off.

04
Enforce DISALLOW_FILE_MODS and Restrict PHP Execution

Defining DISALLOW_FILE_MODS in wp-config.php breaks the plugin upload stage of the chain and is sound configuration on any installation where the plugin lifecycle is managed by deployment. Where feasible, additionally prevent direct PHP execution from inactive plugin directories, since the demonstrated chain reaches code execution without ever activating the uploaded plugin.

05
Reduce the Administrator Population

Accounts limited to content publication should hold the Editor role rather than Administrator. The escalation chain depends specifically on the default unfiltered_html and upload_plugins capabilities held by single-site Administrators, so narrowing that population directly narrows the set of users whose compromised browser session can be converted into server-side code execution.

Potential MITRE ATT&CK TTPs

Initial Access
T1190
Exploit Public-Facing Application — CVE-2026-64638 is triggered directly against the public WordPress login endpoint.
Initial Access
T1189
Drive-by Compromise — victims interacting with an attacker-controlled page can trigger the escalation chain.
Execution
T1059
Command and Scripting InterpreterSub-technique: T1059.007 — JavaScript
Defense Evasion
T1211
Exploitation for Defense Evasion — the dual-sanitizer parser disagreement bypasses WordPress Core's own input filtering.
Credential Access
T1528
Steal Application Access Token — the escalation chain abuses the native Application Password approval flow.
Credential Access
T1552
Unsecured CredentialsSub-technique: T1552.001 — Credentials In Files
Persistence
T1505
Server Software ComponentSub-technique: T1505.003 — Web Shell
Persistence
T1136
Create Account — achievable once PHP code execution as the web server user is obtained.
Privilege Escalation
T1548
Abuse Elevation Control Mechanism — the REST API and plugin upload facility are chained to escalate from a compromised Administrator browser session to server-side code execution.

References & Patch Links

Patch Link
References

What Next?

At Hive Pro, it is our mission to detect the most likely threats to your organization and to help you prevent them from happening.