Skip to main content

WPO365 | Login CVE-2026-96765

| EUVDEUVD-2026-96281 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-10 Wordfence GHSA-87pp-p526-6wm7
7.2
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send crafted unauthenticated request with forged id_token
  2. Delivery
    Malicious claim stored in wpo365_errors transient
  3. Exploit
    Admin opens WPO365 wizard page
  4. Execution
    Stored script executes in admin browser
  5. Impact
    Hijack 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

WPO365 | SEAMLESS WORDPRESS + MICROSOFT INTEGRATION (WPO365 | LOGIN) 0 ≤44.1

Affected Packages

euvd wpo365_seamless_wordpress_microsoft_integration_wpo365_login no fix

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

Vendor (Wordfence) PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.1 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Medium
specialized but widely-used Microsoft/Entra integration WordPress plugin
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

CVE-2024-5084 CRITICAL POC
9.8 May 23

The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil

CVE-2024-44000 CRITICAL POC
9.8 Oct 20

Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote

CVE-2020-36847 CRITICAL POC
9.8 Jul 12

The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner

CVE-2025-27007 CRITICAL POC
9.8 May 01

The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut

CVE-2016-1209 CRITICAL POC
9.8 May 14

The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via

CVE-2024-4443 CRITICAL POC
9.8 May 22

The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based

CVE-2024-1698 CRITICAL POC
9.8 Feb 27

SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a

CVE-2023-6875 CRITICAL POC
9.8 Jan 11

The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i

CVE-2024-1512 CRITICAL POC
9.8 Feb 17

The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base

CVE-2024-4295 CRITICAL POC
9.8 Jun 05

The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in

CVE-2024-50498 CRITICAL POC
10.0 Oct 28

Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy