Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Contributor-level account
-
DeliveryEmbed plugin shortcode in own post
-
ExploitSave post triggers save_post hook
-
ExecutionMissing capability check overwrites plugin page options
-
ImpactLegitimate auth pages redirected to attacker post
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated WordPress account with Contributor-level capabilities or above on a site where the Clean Login plugin (≤1.20.1) is installed and active. The attacker triggers the flaw by embedding the plugin's shortcodes in content of a post they themselves authored and saving it, which invokes the save_post-hooked get_pages_with_shortcodes() without a capability check. Limiting factors: exploitation is impossible without a valid low-privilege account (so sites that do not grant untrusted users Contributor+ are not realistically exposed), impact is confined to overwriting the plugin's own page-reference options with the ID/permalink of a post the attacker authored, and there is no confidentiality or availability impact and no code execution. |
| Impact | This is a genuinely medium-to-low priority issue rather than an urgent one, and the signals are internally consistent. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N, base 4.3) correctly reflects a network-reachable but privilege-gated flaw: the attacker must already hold an authenticated Contributor-level (or higher) account, and the only impact is integrity-limited (I:L) - overwriting the plugin's page-mapping options (cl_login_url/id, cl_register_url/id, cl_restore_url/id, cl_edit_url/id, cl_change_password_url/id). There is no confidentiality or availability impact. No EPSS score was supplied, the CVE is not in CISA KEV, and no working exploit code is referenced - the only references are the Wordfence advisory, the vulnerable source lines, and the fixing changeset. The vuln.today decision label is 'this_month', not act_now/emergency, which aligns with the modest CVSS and absence of exploitation evidence. The main caveat: because exploitation only lets an attacker point the plugin's core login/register/password-reset pages at a post they themselves authored, the practical danger is redirection/phishing or denial of the legitimate auth flow on sites that both run this plugin and grant untrusted users Contributor accounts - a real but conditional scenario. Authentication requirement is confirmed from the vector (PR:L = authenticated). |
| Exploit ScenarioDerived | On a WordPress site running Clean Login (≤1.20.1) that allows untrusted Contributor-level accounts, an authenticated attacker creates or edits a post they author and embeds one of the plugin's shortcodes in its content. Saving the post fires the save_post hook, and because get_pages_with_shortcodes() performs no capability check, the plugin silently overwrites its login/register/restore/edit/change-password page options to point at the attacker's post. No public exploit code is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Missing authorization in the Clean Login plugin for WordPress through version 1.20.1 allows any authenticated user with Contributor-level access or higher to hijack the plugin's front-end page mapping: the save_post-hooked CleanLogin_Shortcode::get_pages_with_shortcodes() routine runs without a current_user_can() check, so a Contributor who embeds the plugin's shortcodes in a post they authored can have the plugin's cl_login_url, cl_register_url, cl_restore_url, cl_edit_url and cl_change_password_url options (plus their matching ID values) overwritten with the ID and permalink of that attacker-owned post. Impact is limited to integrity of those plugin settings - no confidentiality or availability effect and no code execution - and exploitation is impossible without a valid low-privilege account on a site running the plugin. There is no CISA KEV entry and no public exploit identified at time of analysis; the overall priority is medium-to-low, with the practical risk concentrated on sites that hand Contributor accounts to untrusted users.
RemediationAI
The available data does not identify a released patched version number - affected coverage is stated as 'up to, and including, 1.20.1' - but an upstream fix has been committed to the plugin trunk in changeset 3768058 (https://plugins.trac.wordpress.org/changeset/3768058/clean-login, including trunk/include/shortcodes.php), so check the WordPress.org plugin page and the Wordfence advisory for the first tagged release containing that changeset and upgrade to it as soon as it is confirmed available; until then, treat any version at or below 1.20.1 as unpatched. Because exploitation strictly requires a Contributor-or-higher account, the effective compensating control is to stop untrusted users from holding that role: audit accounts with Contributor, Author, Editor and Administrator roles and downgrade or remove any that are not fully trusted, and avoid membership/guest-posting configurations that auto-assign Contributor on sites running Clean Login ≤1.20.1 - the trade-off is that legitimate guest or community authors lose the ability to submit content. If the plugin's login/registration/profile pages cannot be given up, deactivating Clean Login removes the attack surface entirely at the cost of losing its shortcode-based authentication pages and any customized login flows. Note that once the options have been overwritten, restoring the correct cl_*_url/cl_*_id values requires manually re-pointing them at the legitimate pages after applying the upgrade.
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
Clean Login is a WordPress plugin (vendor 'hornero', CPE cpe:2.3:a:hornero:clean_login) that provides login, registration, password restore, profile edit and password-change functionality through shortcodes. To make those shortcodes work it needs to know which pages host them, so it stores the IDs and permalinks of those pages in WordPress options via the Options API - the cl_login_id/cl_login_url, cl_register_id/cl_register_url, cl_restore_id/cl_restore_url, cl_edit_id/cl_edit_url and cl_change_password_id/cl_change_password_url pairs. The vulnerable code lives in include/shortcodes.php, where CleanLogin_Shortcode::get_pages_with_shortcodes() is registered on the save_post action (source reference at lines 262 and 14 of the 1.20.1 tag). The root cause is CWE-862, Missing Authorization: the save_post callback never verifies that the acting user has the capability required to modify plugin-wide settings, so it treats any post save - including an ordinary Contributor saving their own draft - as authoritative and re-derives the plugin's page configuration from the shortcodes it finds. Because WordPress lets Contributors create and publish their own posts, an attacker only needs to submit content containing [clean-login], [clean-register], [clean-restore], [clean-edit] or [clean-password] style shortcodes and the plugin rebinds its global page references to the attacker's post. The flaw is a settings-tampering / stored-redirect class of bug rather than a code-execution or data-exposure primitive; the CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N reflects network reachability, low attack complexity, a required low-privileged account, no user interaction beyond the attacker's own post save, low integrity impact and no confidentiality or availability impact.
Know when Clean Login 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:L/UI:N/S:U/C:N/I:L/A:N
Authenticated Contributor access is required (PR:L) over the network with no user interaction or added complexity; only integrity is partially affected (I:L) by overwriting plugin page options, with no confidentiality or availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Clean Login plugin for WordPress is vulnerable to Missing Authorization in versions up to, and including, 1.20.1 due to a missing capability check on the CleanLogin_Shortcode::get_pages_with_shortcodes() function hooked to the save_post action. This makes it possible for authenticated attackers, with Contributor-level access and above, to overwrite the plugin's cl_login_url/cl_login_id/cl_register_url/cl_register_id/cl_restore_url/cl_restore_id/cl_edit_url/cl_edit_id/cl_change_password_url/cl_change_password_id options with the ID and permalink of a post they themselves authored - simply by embedding the plugin's shortcodes in their own post content.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Clean Login
View allThe Clean Login plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 1.14.5
CSRF in the Clean Login plugin before 1.8 for WordPress allows remote attackers to change the login redirect URL or logo
Bypass of the registration CAPTCHA in the WordPress Clean Login plugin before 1.19 allows unauthenticated attackers to c
The Clean Login WordPress plugin before 1.19 lets unauthenticated attackers create user accounts on sites where registra
Insecure direct object reference in the Clean Login WordPress plugin versions 1.15 and earlier allows remote unauthentic
EUVD-2026-111597
GHSA-v79r-g77x-46wf
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB