<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>WPO365 - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/wpo365/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 23 Jul 2026 20:19:02 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/wpo365/feed.xml" rel="self" type="application/rss+xml"/><item><title>CVE-2026-15212: WordPress WPO365 Login Plugin Cross-Site Request Forgery Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2026-07-cve-2026-15212-wpo365-csrf/</link><pubDate>Thu, 23 Jul 2026 20:19:02 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-cve-2026-15212-wpo365-csrf/</guid><description>A Cross-Site Request Forgery (CSRF) vulnerability in the WPO365 | Login plugin for WordPress, affecting versions up to and including 43.2, allows unauthenticated attackers to overwrite arbitrary plugin options. This is due to a misconfiguration where the nonce check is effectively disabled. By tricking a site administrator into clicking a malicious link, an attacker can manipulate settings such as enabling the SCIM REST endpoint, planting a SCIM secret token, and setting the default user role for new registrations to 'administrator', potentially leading to full site compromise and unauthorized administrative access.</description><content:encoded><![CDATA[<p>Unauthenticated attackers can exploit CVE-2026-15212, a critical Cross-Site Request Forgery (CSRF) vulnerability present in the WPO365 | Login plugin for WordPress, affecting all versions up to and including 43.2. This vulnerability stems from a logical flaw in the <code>Ajax_Service::verify_ajax_request()</code> function, where the <code>wp_verify_nonce()</code> call is conditionally enabled by an option (<code>enable_nonce_check</code>) that defaults to false. As a result, the <code>wp_ajax_wpo365_update_settings</code> handler processes POST requests from any origin, forwarding attacker-controlled base64/JSON <code>settings</code> payloads directly to <code>Options_Service::update_options()</code>. This function then merges these arbitrary key/value pairs into the <code>wpo365_options</code> array without proper validation or an allowlist. By leveraging this, attackers can trick a site administrator into clicking a malicious link, allowing them to overwrite critical plugin options such as enabling the SCIM REST endpoint, planting a custom <code>scim_secret_token</code>, and setting <code>new_usr_default_role</code> to 'administrator'. This can lead to complete site compromise and unauthorized administrative control.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker crafts a malicious web page or link containing a forged POST request targeting the vulnerable WordPress site.</li>
<li>The attacker socially engineers a logged-in WordPress administrator to visit the malicious web page or click the crafted link.</li>
<li>The administrator's browser, without their direct knowledge, sends a forged POST request to the WordPress site's <code>wp-admin/admin-ajax.php</code> endpoint, specifying the action <code>wpo365_update_settings</code>.</li>
<li>The WPO365 plugin's <code>Ajax_Service::verify_ajax_request()</code> helper fails to properly validate the nonce due to the <code>enable_nonce_check</code> option evaluating to false.</li>
<li>The <code>wp_ajax_wpo365_update_settings</code> handler (implemented by <code>Ajax_Service::update_settings</code>) accepts the attacker-supplied <code>settings</code> payload (encoded as base64/JSON) from the forged request.</li>
<li>The <code>Options_Service::update_options()</code> function merges the key/value pairs from the malicious <code>settings</code> payload into the <code>wpo365_options</code> array, overwriting arbitrary plugin configurations without validation.</li>
<li>This critical step allows the attacker to manipulate plugin options, such as enabling the <code>enable_scim</code> REST endpoint, injecting an attacker-known <code>scim_secret_token</code>, and setting the <code>new_usr_default_role</code> to 'administrator'.</li>
<li>With these manipulated settings, the attacker can either leverage the newly enabled SCIM endpoint with their known secret token or exploit the 'administrator' default role for new users to create administrative accounts, ultimately gaining full control over the WordPress site.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-15212 grants unauthenticated attackers the ability to completely compromise affected WordPress sites. This includes overwriting critical plugin configurations, enabling or disabling plugin functionalities, and most significantly, escalating privileges by setting the default role for new user registrations to 'administrator'. This directly leads to unauthorized administrative access, allowing attackers to take full control of the website, including content manipulation, data exfiltration, or further malware deployment. The vulnerability enables a direct path to full site takeover by bypassing intended security checks.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Patch CVE-2026-15212 immediately by updating the WPO365 | Login plugin to version 43.3 or newer.</li>
<li>Deploy the Sigma rule provided in this brief to detect suspicious activity related to CVE-2026-15212 exploitation attempts.</li>
<li>Monitor web server logs for HTTP POST requests to the <code>/wp-admin/admin-ajax.php</code> endpoint where the <code>action</code> parameter is <code>wpo365_update_settings</code>.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>wordpress</category><category>plugin</category><category>csrf</category><category>vulnerability</category><category>web</category></item></channel></rss>