Skip to main content

LearnPress CVE-2026-8502

| EUVDEUVD-2026-34952 MEDIUM
Missing Authorization (CWE-862)
2026-06-06 Wordfence GHSA-ff97-5vqv-578m
5.3
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Identify target running LearnPress ≤4.3.6
  2. Delivery
    Send GET to /wp-json/lp/v1/courses/archive-course?c_status=all&return_type=json
  3. Exploit
    Bypass publish-only post_status filter via c_status=all
  4. Execution
    Suppress safe DISTINCT(ID) field projection via return_type=json
  5. Persist
    Receive SELECT * JSON response
  6. Impact
    Extract post_password, post_content, post_author of protected/unpublished courses

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 the LearnPress plugin to be active on a WordPress installation (versions up to and including 4.3.6) and the WordPress REST API to be publicly accessible (default configuration). The attacker must supply exactly two query parameters in a single request: c_status=all (bypasses the post_status='publish' WHERE clause) AND return_type=json (suppresses the DISTINCT(ID) AS ID field override). Both parameters must be present simultaneously - either alone is insufficient to trigger the full unrestricted SELECT *. No authentication is required (PR:N confirmed by CVSS vector). No special WordPress roles, plugin settings, or non-default configurations are needed beyond the plugin being installed and active. Exploitation is limited to reading data from the WordPress posts table for LearnPress course post types; it does not provide write access, code execution, or access to non-course post types. Sites that have removed or restricted the WordPress REST API via firewall, .htaccess, or plugin (e.g., Disable REST API) are not exploitable via this vector.

Impact

The CVSS 3.1 base score of 5.3 (Medium) with vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N understates operational risk in specific deployment contexts. While the confidentiality impact is scored Low (C:L) - reflecting partial rather than full system disclosure - the actual data exposed is high-value: plaintext course passwords and the full body of unreleased course content represent material business and security risk for e-learning operators. The attack complexity is genuinely Low: no authentication, no interaction, no race condition - a single HTTP GET with two known parameters suffices. EPSS data was not provided; however, given the unauthenticated, network-accessible nature and clear exploitation instructions in the CVE description, opportunistic scanning is a realistic threat vector. No CISA KEV listing and no confirmed public exploit code temper urgency, but the trivially scriptable nature means proof-of-concept development requires minimal skill. The vulnerability is not a false high-CVSS issue - the CVSS score arguably underrepresents real-world impact for sites with confidential unpublished content or password-gated courses. There is no conflicting signal between CVSS vector and the description; both consistently indicate unauthenticated network exploitation.

Exploit ScenarioDerived

An unauthenticated attacker sends a single HTTP GET request to https://target-site.com/wp-json/lp/v1/courses/archive-course?c_status=all&return_type=json with no credentials. The plugin's REST controller passes both parameters to the database query builder, where c_status=all suppresses the publish-only WHERE clause and return_type=json suppresses the safe DISTINCT(ID) field projection, causing a SELECT * query to return all course rows regardless of visibility status. The attacker receives a JSON response containing the plaintext post_password for every password-protected course and the full post_content, post_author, and post_name of every draft, private, and pending course - allowing them to access gated content, enumerate unpublished material, or target course authors. No public exploit code has been identified at time of analysis, but the exploitation path is fully described in the CVE and requires no specialized tooling.

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

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

Alert me

AnalysisAIv1 – Jun 06, 2026

Sensitive information exposure in LearnPress WordPress LMS Plugin (all versions through 4.3.6) allows unauthenticated remote attackers to extract plaintext passwords and unpublished course content via a crafted REST API request. The /wp-json/lp/v1/courses/archive-course endpoint accepts two query parameters - c_status=all and return_type=json - that together bypass a publish-only post_status filter and suppress a safe DISTINCT(ID) field override, triggering an unrestricted SELECT * fallback query against the WordPress posts table. Exposed data includes post_password in plaintext for password-protected courses, and post_content, post_author, and post_name for draft, private, and pending courses. No public exploit has been identified at time of analysis and the vulnerability is not listed in CISA KEV, though the unauthenticated, low-complexity attack vector makes it trivially scriptable at scale.

RemediationAI

Upstream fix available (changeset 3545523 in the WordPress plugin SVN repository at https://plugins.trac.wordpress.org/changeset?reponame=&old=3545523%40learnpress&new=3545523%40learnpress); a released patched version is not independently confirmed from the available input data - verify the current version in the WordPress plugin directory and update to the latest available release. Until a confirmed patched version is installed, site administrators should apply the following compensating controls: use a Web Application Firewall rule to block requests to /wp-json/lp/v1/courses/archive-course containing both c_status=all and return_type=json simultaneously (note: blocking either parameter alone may still allow partial information leakage depending on plugin logic); restrict REST API access to authenticated users only via WordPress authentication filters if course browsing by guests is not required (trade-off: breaks unauthenticated course catalog browsing); and audit password-protected courses to assess whether post_password exposure represents an acceptable risk pending patching. The Wordfence threat intel page at https://www.wordfence.com/threat-intel/vulnerabilities/id/a32a6ea3-4473-4075-b660-9bba083ae0bf should be monitored for a confirmed patched version number.

Affected VersionsENISA

LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 0 ≤4.3.6

Affected Packages

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

LearnPress (CPE: cpe:2.3:a:thimpress:learnpress_-_wordpress_lms_plugin_for_create_and_sell_online_courses:*:*:*:*:*:*:*:*) is a WordPress LMS plugin by ThimPress. Its frontend REST API controller (class-lp-rest-courses-controller.php, line 68/196) exposes a course archive endpoint that passes user-controlled parameters to the Courses model (Courses.php, lines 126/200) and ultimately to the database layer (class-lp-course-db.php line 472, class-lp-db.php line 610). The root cause is CWE-862 (Missing Authorization): the post_status WHERE clause that restricts results to published posts is only enforced when c_status is absent or not 'all', and the safe DISTINCT(ID) AS ID field projection that limits column exposure is only applied when return_type is not 'json'. Combining both parameters simultaneously satisfies neither protective branch, collapsing to an unrestricted SELECT * against wp_posts with no visibility controls. WordPress natively stores post_password as plaintext in the posts table, meaning no additional decryption is required by the attacker.

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

Vendor (Wordfence) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Primary rating from Vendor (Wordfence) · only source for this CVE.

CVSS VectorVendor: Wordfence

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

DescriptionCVE.org

The LearnPress - WordPress LMS Plugin for Create and Sell Online Courses plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to, and including, 4.3.6 via the 'return_type' parameter. This makes it possible for unauthenticated attackers to extract sensitive data including the plaintext post_password of password-protected courses and the full post_content, post_author, and post_name of unpublished draft, private, and pending courses via the unrestricted SELECT * fallback query. Exploitation requires supplying both c_status=all (to bypass the publish-only post_status WHERE clause) and return_type=json (to prevent the safe DISTINCT(ID) AS ID field override) in a single unauthenticated request to the /wp-json/lp/v1/courses/archive-course endpoint.

Threat Intelligence Overview

EPSS Score
0.1%
Top 78% exploitable
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.1%
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
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-104736 CRITICAL
9.8 Oct 17

Unauthenticated PHP object injection in the LearnPress WordPress LMS plugin through version 4.4.10 allows attackers to s

CVE-2026-4365 CRITICAL
9.1 Apr 14

Unauthenticated data deletion in LearnPress WordPress LMS plugin (versions ≤4.3.2.8) allows remote attackers to delete a

CVE-2026-13765 HIGH
7.5 Jul 17

Sensitive information exposure in the LearnPress LMS plugin for WordPress (versions up to and including 4.4.1) lets unau

CVE-2026-93882 HIGH
7.5 Oct 01

Unauthenticated attackers can read and download course-material files - including uploaded file paths and external URLs

CVE-2026-109208 HIGH
7.2 Oct 17

Stored cross-site scripting in the LearnPress WordPress LMS plugin (all versions up to and including 4.4.10) lets attack

CVE-2026-11988 MEDIUM
6.5 Jul 01

Course enrollment data exposure in LearnPress WordPress LMS plugin (all versions through 4.3.9.1) enables authenticated

CVE-2026-107744 MEDIUM
6.5 Oct 17

An authorization bypass in the LearnPress WordPress LMS plugin (all versions through 4.4.10) lets any authenticated user

CVE-2026-12230 MEDIUM
6.4 Sep 08

Stored cross-site scripting in LearnPress - WordPress LMS Plugin versions through 4.3.9.1 allows authenticated contribut

CVE-2026-12732 MEDIUM
6.4 Jul 01

Stored Cross-Site Scripting in the LearnPress WordPress LMS plugin (versions up to and including 4.4.0) allows authentic

CVE-2026-4333 MEDIUM
6.4 Apr 08

Stored Cross-Site Scripting in LearnPress WordPress LMS Plugin up to version 4.3.3 allows authenticated contributors to

CVE-2026-92538 MEDIUM
6.1 Oct 03

LearnPress WordPress LMS plugin versions through 4.4.7 reflect unsanitized input from the 'orderby' parameter into the D

CVE-2026-77823 MEDIUM
4.9 Sep 01

SQL injection in the LearnPress WordPress LMS plugin (versions ≤ 4.4.4) allows authenticated administrators to extract a

References

Advisories & patches
ADVISORY https://nvd.nist.gov/vuln/detail/CVE-2026-8502 ADVISORY https://vuldb.com/vuln/369041 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.2.8/inc/Databases/class-lp-course-db.php#L472 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.2.8/inc/Databases/class-lp-db.php#L610 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.2.8/inc/Models/Courses.php#L126 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.2.8/inc/Models/Courses.php#L200 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.2.8/inc/rest-api/v1/frontend/class-lp-rest-courses-controller.php#L196 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.2.8/inc/rest-api/v1/frontend/class-lp-rest-courses-controller.php#L68 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.6/inc/Databases/class-lp-course-db.php#L472 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.6/inc/Databases/class-lp-db.php#L610 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.6/inc/Models/Courses.php#L126 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.6/inc/Models/Courses.php#L200 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.6/inc/rest-api/v1/frontend/class-lp-rest-courses-controller.php#L196 REF https://plugins.trac.wordpress.org/browser/learnpress/tags/4.3.6/inc/rest-api/v1/frontend/class-lp-rest-courses-controller.php#L68 REF https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3545523%40learnpress&new=3545523%40learnpress&sfp_email=&sfph_mail= REF https://www.wordfence.com/threat-intel/vulnerabilities/id/a32a6ea3-4473-4075-b660-9bba083ae0bf?source=cve

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