Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
REST API is network-accessible with low complexity; subscriber account required (PR:L); confidentiality-only impact on enrollment metadata with no integrity or availability effect.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The LearnPress - WordPress LMS Plugin for Create and Sell Online Courses plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 4.3.9.1 via the 'userId' parameter due to missing validation on a user controlled key. This makes it possible for authenticated attackers, with subscriber-level access and above, to view the course enrollment progress and completion data belonging to any instructor or administrator account on the site. This IDOR does not apply when the target user is a regular subscriber, as the guard correctly blocks cross-subscriber access; exploitation is limited to cases where the victim user holds the LP_TEACHER_ROLE or administrator role.
AnalysisAI
Course enrollment data exposure in LearnPress WordPress LMS plugin (all versions through 4.3.9.1) enables authenticated subscribers to read the course progress and completion records of any instructor or administrator by supplying an arbitrary value to the userId REST API parameter. The lazy load controller accepts the caller-supplied key without verifying ownership, bypassing authorization for LP_TEACHER_ROLE and administrator accounts while a partial guard correctly blocks subscriber-to-subscriber cross-access. No public exploit code or active exploitation has been identified at time of analysis, but exploitation requires only a subscriber-level account, making the real-world barrier low on sites with open user registration.
Technical ContextAI
The vulnerability resides in the LearnPress plugin's REST API v1 frontend controller (inc/rest-api/v1/frontend/class-lp-rest-lazy-load-controller.php, lines 118 and 137) and the abstract LP user class (inc/user/abstract-lp-user.php, line 680), confirmed across both the 4.3.9.1 and 4.2.7.5 tagged releases in the WordPress plugin SVN repository. CWE-639 (Authorization Through User-Controlled Key) describes the root cause precisely: the userId parameter is client-supplied and used to load enrollment records without verifying that the requesting principal owns or has delegated access to the target account. WordPress user IDs are sequential integers, making enumeration of valid instructor and administrator IDs trivial via standard WordPress REST API user endpoints. The partial mitigation that blocks subscriber-to-subscriber enumeration is implemented correctly but excludes elevated-role targets, creating an asymmetric authorization gap for exactly the accounts most likely to hold sensitive instructional data.
RemediationAI
Upgrade LearnPress to version 4.4.0 or later: a WordPress SVN changeset from 4.3.9.1 to 4.4.0 (https://plugins.trac.wordpress.org/changeset?old_path=%2Flearnpress/tags/4.3.9.1&new_path=%2Flearnpress/tags/4.4.0) indicates that 4.4.0 contains the authorization fix; however, the release of this version as a distributed WordPress.org update has not been independently confirmed at time of analysis - verify availability via the WordPress plugin dashboard before applying. If an immediate upgrade is not possible, disabling open subscriber self-registration (WordPress Admin → Settings → General → uncheck 'Anyone can register') raises the exploitation barrier by requiring an attacker to already possess a site account, though this also impacts legitimate student onboarding. Restricting the /wp-json/lp/v1/ REST API namespace at the web server or WAF layer is insufficient on its own because the attack originates from authenticated subscriber sessions; any such rule must also intercept subscriber-authenticated requests to the affected lazy load endpoints, which risks breaking core LearnPress functionality such as course progress displays. Monitor the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/6b5e8cfd-989e-4a64-abb0-9daa22df46a4 for confirmed patch version details.
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
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
Sensitive information exposure in LearnPress WordPress LMS Plugin (all versions through 4.3.6) allows unauthenticated re
SQL injection in the LearnPress WordPress LMS plugin (versions ≤ 4.4.4) allows authenticated administrators to extract a
Unauthorized option-write in LearnPress (WordPress LMS plugin) versions up to and including 4.4.4 allows authenticated a
The LearnPress WordPress LMS Plugin contains a missing capability check vulnerability in the delete_question_answer() fu
Payment bypass in LearnPress WordPress LMS Plugin (all versions ≤ 4.3.5) allows authenticated subscribers to enroll in a
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-40906
GHSA-2qhv-qfjf-5jf4