Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconHost malicious auto-submit page
-
DeliveryPhish logged-in WordPress admin
-
ExploitForged POST to wpo365_update_settings
-
InstallNonce check skipped, options merged
-
C2Enable SCIM + plant scim_secret_token
-
ExecuteSet default role to administrator
-
ImpactProvision/elevate attacker account to admin
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK
1 technique across 1 tactic: Initial Access 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 plugin to be running in its default state where 'enable_nonce_check' is absent/false (the shipped default), so no attacker authentication is needed, but it DOES require tricking a currently logged-in WordPress administrator into performing an action such as clicking an attacker link or visiting a malicious page (UI:R) so the forged cross-origin POST rides the admin's authenticated session to admin-ajax.php. Limiting factors: the victim must be an authenticated administrator with an active session at the time of the click; if a site operator has explicitly turned on 'enable_nonce_check', the wp_verify_nonce() gate closes and the CSRF fails; and there is no server-side compromise without the admin interaction, so purely automated mass exploitation is not viable. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, base 8.8) is internally consistent with the described attack: network-reachable, low complexity, no attacker privileges, but requiring administrator user interaction (clicking a link), with high impact across confidentiality, integrity and availability because the attacker can escalate to a site-wide compromise. The main limiting factor is UI:R - this is not a wormable, zero-click flaw; it depends on social-engineering a logged-in admin. No EPSS score, KEV entry, or public POC was provided, so real-world exploitation probability cannot be quantified from the input and there is no public exploit identified at time of analysis; the signal that raises priority is the credibility of the Wordfence disclosure plus the very concrete exploitation path (enable_scim + scim_secret_token + new_usr_default_role=administrator), which turns an options-write into full administrative account creation. Net: this is a genuine high-priority patch-now issue for sites running the plugin, but the requirement for admin interaction means it is more suited to targeted phishing than mass automated exploitation. No conflicting signals were observed between the CVSS vector and the description. |
| Exploit ScenarioDerived | An attacker crafts a malicious web page containing a hidden auto-submitting form (or a link) that POSTs a base64/JSON 'settings' payload to the site's admin-ajax.php wpo365_update_settings action, then phishes a site administrator into visiting it while logged in. Because the nonce check is disabled by default, the forged request succeeds and the payload flips enable_scim on, plants an attacker-known scim_secret_token, and sets new_usr_default_role to 'administrator', letting the attacker provision or elevate an account to full admin. No public POC was provided, but the Wordfence write-up documents the exact options needed. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Privilege escalation via Cross-Site Request Forgery affects the WPO365 | Login plugin for WordPress (versions up to and including 43.2), where an unauthenticated attacker who tricks a logged-in administrator into clicking a crafted link can overwrite arbitrary plugin options and seize control of the site. The root cause is that the AJAX settings handler's nonce check is gated behind an 'enable_nonce_check' option that is absent from the default configuration, so it silently evaluates to false and no CSRF protection runs. There is no public exploit identified at time of analysis and it is not listed in CISA KEV, but the technical write-up from Wordfence is detailed enough to make reproduction straightforward, and the 8.8 CVSS reflects the full-takeover potential.
RemediationAI
Upgrade the WPO365 | Login plugin to the fixed release published after 43.2; an upstream fix is available as SVN changeset 3610759 (https://plugins.trac.wordpress.org/changeset/3610759/wpo365-login), but a specific tagged patched version is not stated in the available data, so confirm the exact release on the plugin page before relying on a version number. If immediate upgrade is not possible, the most direct compensating control is to explicitly enable the 'enable_nonce_check' option in the plugin configuration so that wp_verify_nonce() actually runs on the AJAX settings handler - this restores CSRF protection with essentially no functional downside. As additional hardening, restrict or disable the plugin's SCIM REST endpoint (enable_scim) if you do not use Microsoft-driven provisioning, audit wpo365_options for unexpected values (particularly scim_secret_token and new_usr_default_role), and place the wp-admin/wp-ajax surface behind a WAF or admin-IP allowlist to reduce the chance a forged request reaches an authenticated admin session; note the WAF/IP controls add operational friction and do not fix the underlying missing check. Consult the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/51d0ba58-614e-4284-ae0b-b0b76fc5c46d) for detection guidance.
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
The vulnerability lives in the plugin's AJAX layer (Ajax_Service::verify_ajax_request()), which is supposed to call wp_verify_nonce() to prove that a state-changing request originated from the WordPress admin UI. That call is conditionally executed only when the boolean option 'enable_nonce_check' is true; because that key is not present in the default 'wpo365_options' array, get_global_boolean_var() returns false and the nonce verification is skipped entirely. The wp_ajax_wpo365_update_settings hook therefore reaches Ajax_Service::update_settings(), which decodes an attacker-supplied base64/JSON 'settings' payload and passes it to Options_Service::update_options(), which blindly merges every key/value into wpo365_options with no allowlist. This is the textbook shape of CWE-352 (Cross-Site Request Forgery) compounded by a missing input allowlist: a security control exists in code but is disabled by default, and the write path trusts arbitrary keys. The affected component is identified by CPE cpe:2.3:a:wpo365:wpo365_|_seamless_wordpress_+_microsoft_integration_(wpo365_|_login), a plugin that bridges WordPress authentication and user provisioning with Microsoft Entra ID/Azure AD, which is why SCIM provisioning options are among the sensitive settings that can be tampered with.
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:R/S:U/C:H/I:H/A:H
Unauthenticated network CSRF (PR:N, AV:N, AC:L) needs admin to click (UI:R); arbitrary option overwrite enabling admin creation yields full C/I/A high.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The WPO365 | Login plugin for WordPress is vulnerable to Cross-Site Request Forgery in versions up to, and including, 43.2. This is due to the Ajax_Service::verify_ajax_request() helper gating its wp_verify_nonce() call behind the boolean option 'enable_nonce_check', which is absent from the default 'wpo365_options' array and therefore evaluates to false via get_global_boolean_var(); as a result, the wp_ajax_wpo365_update_settings handler (Ajax_Service::update_settings) accepts POSTs from cross-origin pages and forwards the attacker-supplied 'settings' payload (base64/JSON) to Options_Service::update_options(), which merges every key/value into wpo365_options without a key allowlist. This makes it possible for unauthenticated attackers to overwrite arbitrary plugin options - including enabling the SCIM REST endpoint (enable_scim), planting an attacker-known scim_secret_token, and setting new_usr_default_role to 'administrator' - via a forged request granted they can trick a site administrator into performing an action such as clicking on a link.
Executive ViewAI
WPO365 | Login plugin for WordPress (versions through 43.2) contains a critical CSRF vulnerability allowing attackers to seize complete control of WordPress sites through a deceptive link sent to site administrators. An attacker with no prior access can override all site configuration, create backdoors, and lock out legitimate administrators. Organizations must immediately audit and remove this plugin from all WordPress instances.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) immediate plugin disablement or uninstallation; (2) IP whitelisting for WordPress admin panel access; (3) mandatory multi-factor authentication for all administrator accounts; (4) security awareness training emphasizing CSRF phishing tactics; (5) daily review of WordPress admin user accounts and permissions for unauthorized additions.
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 Request Forgery exploits the automatic credential inclusion behavior of web browsers.
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-48382
GHSA-4w3q-g484-rj57
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB