Skip to main content

Clean Login CVE-2026-116610

| EUVDEUVD-2026-111597 MEDIUM
Missing Authorization (CWE-862)
2026-10-28 Wordfence GHSA-v79r-g77x-46wf
4.3
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Obtain Contributor-level account
  2. Delivery
    Embed plugin shortcode in own post
  3. Exploit
    Save post triggers save_post hook
  4. Execution
    Missing capability check overwrites plugin page options
  5. Impact
    Legitimate 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

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

Clean Login 0 ≤1.20.1

Affected Packages

euvd clean_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

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

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

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.

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

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

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

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

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Low
niche WordPress login-customization plugin, limited install base
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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