Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Editor credentials via phishing or stuffing
-
DeliveryAuthenticate to WordPress and retrieve wp_rest nonce
-
ExploitPOST crafted AJAX request with arbitrary field_name
-
ExecutionLP_Admin_Ajax::create_page() writes page ID to target option
-
PersistSite-wide option overwritten (e.g., open registration enabled)
-
ImpactRegister attacker-controlled account or corrupt plugin list for denial of service
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 | Exploitation requires an authenticated session with the WordPress Editor role or higher (the edit_pages capability and a valid wp_rest nonce are both prerequisites). The attacker must also be able to reach the wp-admin/admin-ajax.php endpoint over the network. The vulnerability is not exploitable by Subscriber or Contributor role accounts, which do not hold edit_pages. Non-default conditions that limit exploitation include: the targeted WordPress installation must have LearnPress version 4.4.4 or earlier installed and active; at least one Editor-level (or higher, non-admin) account must exist and be compromised. The practical impact of the write is constrained to positive integers (page IDs), so options requiring string or boolean false values cannot be set to arbitrary values - but options that are truthy when non-zero (such as users_can_register) are fully controllable. |
| Impact | The NVD-assigned CVSS 3.1 score of 4.4 (AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:N) understates the realistic risk in two ways: AC:H appears to overstate complexity (the attack is a single crafted AJAX POST with no race condition or special circumstance), and A:N ignores that corrupting active_plugins can take the site fully offline. The PR:H metric is debatable - Editor is not admin-level, and some frameworks would classify it as PR:L, which would substantially raise the score. There is no EPSS data in the provided input and no CISA KEV listing, which indicates the vulnerability has not been observed in active mass exploitation. However, even a small organization managing an e-learning deployment on WordPress should treat option-write primitives seriously, because they can chain into full site takeover: enabling user registration followed by privilege escalation via a secondary flaw is a well-documented attack pattern. Wordfence is the reporting source, which adds credibility to the technical findings. The constrained impact (integer values only for the option value) limits some payloads but does not meaningfully reduce integrity risk for boolean-style options like users_can_register. |
| Exploit ScenarioDerived | An attacker who has obtained Editor-level credentials - via credential stuffing, phishing, or a compromised contributor account - sends a crafted authenticated POST to wp-admin/admin-ajax.php with action=learnpress_create_page and field_name=users_can_register, along with a valid wp_rest nonce. The handler creates a new WordPress page (yielding a page ID of 1 or greater) and writes that truthy integer to the users_can_register option, silently opening public registration on the site. The attacker then registers a new account and, if a secondary privilege-escalation path exists, elevates to administrator. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Unauthorized option-write in LearnPress (WordPress LMS plugin) versions up to and including 4.4.4 allows authenticated attackers with Editor-level access to overwrite arbitrary WordPress site options with a page ID integer via the learnpress_create_page AJAX endpoint. The LP_Admin_Ajax::create_page() handler validates only the edit_pages capability and a wp_rest nonce - both granted to Editors - but applies no allowlist to the field_name parameter before it is forwarded to update_option(). Exploiting this flaw, an attacker can enable open user registration, corrupt the active plugin list to deny service, or manipulate other administrator-reserved settings. No public exploit has been identified at time of analysis and CISA KEV does not list this CVE.
RemediationAI
Upstream fix available (Trac changeset 3659902); a released patched plugin version is not independently confirmed from the provided data - verify the current version in the WordPress plugin repository before updating. Site owners should update LearnPress to a version incorporating changeset 3659902 as soon as a tagged release is available. As an immediate compensating control, review all WordPress user accounts holding the Editor role and demote or remove accounts that do not require it, since this directly removes the exploitable capability. Additionally, network-layer WAF rules can be deployed to block POST requests to wp-admin/admin-ajax.php with action=learnpress_create_page containing a field_name parameter that does not match the prefix learn_press_; note that WAF rules may interfere with legitimate LearnPress admin workflows and should be tested before production deployment. If the Editor role is entirely unused in the WordPress installation, removing it from all non-admin accounts eliminates the attack surface without side effects.
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
LearnPress is a WordPress LMS plugin by ThimPress (CPE: cpe:2.3:a:thimpress:learnpress_-_wordpress_lms_plugin_for_create_and_sell_online_courses:*:*:*:*:*:*:*:*). The vulnerability originates in inc/admin/class-lp-admin-ajax.php at the create_page() handler (line 649), which accepts user-supplied input for the option key without constraining it to a learn_press_* namespace. This unsanitized key is passed to LP_Helper::create_page() (inc/class-lp-helper.php, line 264), which calls WordPress core's update_option($key_option, $page_id), writing the newly created page ID - always a positive integer - to any named option row in wp_options. The root cause class is CWE-862 (Missing Authorization): the function performs capability and nonce checks appropriate only for LearnPress page creation, not for the broader privilege of writing arbitrary site options. The wp_rest nonce is a standard WordPress mechanism that does not restrict which options can be written.
Know when Learnpress Wordpress Lms Plugin For Create And Sell Online Courses 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:H/PR:H/UI:N/S:U/C:N/I:H/A:N
Editor access is PR:L not PR:H; single AJAX POST needs no special conditions so AC:L; plugin corruption enables availability impact so A:L.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The LearnPress plugin for WordPress is vulnerable to unauthorized modification of arbitrary WordPress options in versions up to, and including, 4.4.4 via the learnpress_create_page AJAX action. The LP_Admin_Ajax::create_page() handler only checks the edit_pages capability and a wp_rest nonce (both available to Editors), then reads the field_name parameter from the request without restricting it to a learn_press_* allow-list before passing it as the option key to LP_Helper::create_page(), which calls update_option($key_option, $page_id). This makes it possible for authenticated attackers, with Editor-level access and above, to update arbitrary WordPress options to a positive integer (a newly created page ID), enabling actions such as flipping users_can_register to a truthy value to open public registration, corrupting active_plugins to break the site, or otherwise tampering with site-wide settings normally reserved for administrators.
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.
Unauthenticated PHP object injection in the LearnPress WordPress LMS plugin through version 4.4.10 allows attackers to s
Unauthenticated data deletion in LearnPress WordPress LMS plugin (versions ≤4.3.2.8) allows remote attackers to delete a
Sensitive information exposure in the LearnPress LMS plugin for WordPress (versions up to and including 4.4.1) lets unau
Unauthenticated attackers can read and download course-material files - including uploaded file paths and external URLs
Stored cross-site scripting in the LearnPress WordPress LMS plugin (all versions up to and including 4.4.10) lets attack
Course enrollment data exposure in LearnPress WordPress LMS plugin (all versions through 4.3.9.1) enables authenticated
An authorization bypass in the LearnPress WordPress LMS plugin (all versions through 4.4.10) lets any authenticated user
Stored cross-site scripting in LearnPress - WordPress LMS Plugin versions through 4.3.9.1 allows authenticated contribut
Stored Cross-Site Scripting in the LearnPress WordPress LMS plugin (versions up to and including 4.4.0) allows authentic
Stored Cross-Site Scripting in LearnPress WordPress LMS Plugin up to version 4.3.3 allows authenticated contributors to
LearnPress WordPress LMS plugin versions through 4.4.7 reflect unsanitized input from the 'orderby' parameter into the D
Sensitive information exposure in LearnPress WordPress LMS Plugin (all versions through 4.3.6) allows unauthenticated re
EUVD-2026-65272
GHSA-2qx9-4rjh-4r9j
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB