Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend crafted unauthenticated request with forged id_token
-
DeliveryMalicious claim stored in wpo365_errors transient
-
ExploitAdmin opens WPO365 wizard page
-
ExecutionStored script executes in admin browser
-
ImpactHijack admin session / perform privileged actions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the WPO365 | Login (Seamless WordPress + Microsoft Integration) plugin to be installed and active at version 44.1 or earlier, and the id_token-handling flow (Id_Token_Service) to be reachable by unauthenticated requests. The attacker must craft a forged id_token whose base64url-decoded unique_name or iss claim embeds malicious HTML; the payload is written to the wpo365_errors transient and persists up to three days. The key LIMITING factor is that the stored script only executes when a WordPress administrator subsequently visits the WPO365 wizard page - so successful impact depends on admin behavior within the transient's ~3-day lifetime, even though no prior authentication or classic victim interaction at injection time is needed. |
| Impact | This is a legitimately notable but not emergency-tier issue. CVSS 3.1 scores 7.2 (High) with vector AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N - network-reachable, low complexity, and unauthenticated (PR:N), which is why the base score is elevated, and the changed scope (S:C) reflects that the injected script executes in a WordPress administrator's browser (a different security authority than the vulnerable component). However, several signals temper the raw score. No EPSS probability was provided in the input, and there is no CISA KEV listing and no public exploit code referenced - the only intelligence source is the Wordfence vulnerability advisory, so exploitation status is 'no public exploit identified at time of analysis.' Most importantly, the description's own mechanics conflict with the UI:N metric: the payload sits dormant in the wpo365_errors transient and only fires 'whenever a user accesses an injected page,' specifically when an administrator later visits the WPO365 wizard page. That required administrator visit is a real-world limiting factor the UI:N scoring does not capture - verify with vendor/Wordfence, but in practice this behaves closer to UI:R. The impact is also only Low/Low confidentiality and integrity (reflected/stored XSS in an admin context - session/token theft, CSRF-style admin actions), not full RCE. Net: a credible stored-XSS admin-takeover vector worth patching promptly on affected sites, but not a mass-exploited, automatable crisis absent any KEV/EPSS/POC signal. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a crafted request to a WPO365-enabled WordPress site with a forged id_token whose base64url-decoded unique_name or iss claim contains a malicious HTML/JavaScript payload. The token processing stores this payload in the wpo365_errors transient (persisting up to three days), and when a site administrator subsequently opens the WPO365 wizard page, the script executes in their authenticated browser session - enabling session/cookie theft or administrative actions. No public exploit code is referenced, but the attack requires only a single crafted unauthenticated HTTP request and the source references pinpoint the vulnerable code paths. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Stored cross-site scripting in the WPO365 | Login (Seamless WordPress + Microsoft Integration) plugin for WordPress, affecting all versions up to and including 44.1, lets unauthenticated remote attackers inject arbitrary HTML/JavaScript that is persisted for up to three days. A forged 'id_token' whose base64url-decoded unique_name or iss claim carries malicious markup survives the plugin's token-to-error logging path (Id_Token_Service) and lands in the wpo365_errors transient with no sanitization on input and no escaping on output, so the injected script executes when a WordPress administrator later opens the WPO365 wizard page. Because the assessed vector is PR:N/UI:R, no credentials are needed to plant the payload, but the attacker is dependent on an administrator visiting the affected admin screen inside the transient's roughly three-day window; there is no confirmed active exploitation and no public exploit code identified at time of analysis, though the vendor has shipped a fixed release (45.0). Impact is bounded to low confidentiality and integrity within the WordPress admin context (no availability impact), which makes this a legitimately notable but not emergency-tier issue.
RemediationAI
Upgrade the WPO365 | Login plugin to version 45.0 or later; the vendor's Trac changeset 3727410 and the 45.0-tagged assets represent the vendor-released patch, and Wordfence's advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/7d6509b7-c1c1-44ef-9a86-d77cfb7fd5bd?source=cve should be consulted for the official guidance. Because the payload lives in the wpo365_errors transient for up to roughly three days, patching alone does not erase an already-planted payload - after upgrading, purge the transient (for example by deleting the wpo365_errors entry from the wp_options table or via a WP-CLI transient delete) and review logged error entries for embedded HTML. If an immediate upgrade is not possible, take the plugin offline or deactivate it if Microsoft SSO is not operationally required (trade-off: loss of SSO for all users), or, if it must stay active, restrict access to the WordPress admin area and the WPO365 wizard page by IP allow-listing or an authentication proxy so a payload can never reach an administrator's browser (trade-off: administrators lose off-network admin access), and deploy a WAF rule that inspects the id_token parameter for HTML/script content in requests to the plugin's SSO endpoints (trade-off: WAF rules can be bypassed via encoding variants and may generate false positives on legitimate tokens). Note that no vendor patch is available for versions prior to 45.0 and that the underlying weakness is insufficient input sanitization plus missing output escaping, so no configuration toggle within 44.1 fully removes the risk.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
WPO365 | Login is a WordPress plugin that brokers single sign-on against Microsoft identity services (Entra ID / Microsoft 365) using OpenID Connect, so it necessarily parses and trusts the 'id_token' JWT returned in the OAuth flow. The vulnerable code path is in the plugin's token-handling service (Services/Id_Token_Service.php around line 491), which base64url-decodes JWT claims - specifically 'unique_name' and 'iss' - and passes them into the plugin's logging service (Services/Log_Service.php around line 80) without sanitization; the resulting record is stored in the WordPress 'wpo365_errors' transient and can persist for about three days. On the rendering side, the admin wizard bundle (apps/dist/wizard-chunk-*.js around line 350) and the script/asset helpers (Core/Script_Helpers.php line ~142) and router/request services (Services/Router_Service.php line ~97, Services/Request_Service.php line ~54) emit that stored value into the admin page without proper output encoding. Root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), in its stored/persistent variant, arising from a classic trust-boundary failure: attacker-controllable JWT claim material is treated as safe display text inside a privileged administrative interface. The CPE cpe:2.3:a:wpo365:wpo365_|_seamless_wordpress_+_microsoft_integration_(wpo365_|_login) confirms the affected component is the WPO365 | Login plugin itself rather than a separate Microsoft or WordPress core product.
Know when Wordpress Plugin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated network injection (PR:N, AV:N, AC:L) with changed scope (S:C) as script runs in the admin browser, but UI:R because execution requires an administrator to visit the wizard page.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The WPO365 | SEAMLESS WORDPRESS + MICROSOFT INTEGRATION (WPO365 | LOGIN) plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'id_token' parameter in all versions up to, and including, 44.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The payload is stored in the wpo365_errors transient for up to three days by submitting a crafted unauthenticated request with a forged id_token whose base64url-decoded unique_name or iss claim contains malicious HTML, requiring no prior authentication or user interaction beyond an administrator later visiting the WPO365 wizard page.
Executive ViewAI
The WPO365 | Login plugin for WordPress, used to integrate Microsoft authentication, exposes sites running versions up to and including 44.1 to a stored cross-site scripting issue that can lead to administrator account compromise. An unauthenticated attacker can plant malicious code that executes when an administrator opens the plugin's wizard page, potentially enabling session theft, site takeover, or data exfiltration. Because the issue affects a trusted integration component, no vendor-released patch identified at time of analysis, and there is no public exploit identified at time of analysis, leadership should treat it as a high-priority risk for any affected WordPress estate.
No vendor-released patch identified at time of analysis; interim mitigations include deactivating or removing WPO365 | Login versions up to and including 44.1, restricting wp-admin access, forcing administrator session resets, monitoring and clearing the wpo365_errors transient, applying WAF virtual patching for malicious id_token claims, and disabling the WPO365 wizard page until a fixed release is applied.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
EUVD-2026-96281
GHSA-87pp-p526-6wm7
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB