Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker obtains subscriber credentials
-
DeliveryAuthenticates to WordPress
-
ExploitCrafts AJAX POST request omitting content_parent parameter
-
InstallSends request to tutor_update_course_content_order handler
-
C2Authorization check bypassed
-
ExecuteCourse structure modified in database
-
ImpactInstructor discovers corrupted course.
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: (1) the attacker must be a registered and authenticated WordPress user with any role that can make AJAX requests (subscriber level or above); (2) the Tutor LMS plugin must be version 3.9.8 or earlier; (3) the attacker must submit an AJAX request to tutor_update_course_content_order with a valid WordPress nonce but WITHOUT the 'content_parent' parameter in the request payload; (4) the course being modified must exist on the site. The vulnerability is triggered specifically when the 'content_parent' parameter is omitted - its presence in the request causes the authorization check (can_user_manage()) to execute and block unauthorized users. Default WordPress configurations do not prevent subscriber-level users from making AJAX requests, so no non-standard configuration is required. The limiting factors are: (a) requirement for authenticated access (not true unauthenticated/PR:N despite CVSS vector), (b) necessity to craft parameter-free requests (not typical UI interaction), and (c) targeting of course content ordering (low business impact compared to data theft or account compromise). |
| Impact | The CVSS vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) indicates network-accessible, unauthenticated exploitation; however, this conflicts with the description stating 'authenticated attackers with subscriber-level access and above.' The CVSS vector appears inconsistent with the described requirement for authentication (PR should be PR:L for low privileges, not PR:N). The integrity impact (I:L) correctly reflects unauthorized modification of course structure. Real-world risk is moderate: while any authenticated user can exploit this, the impact is limited to course content ordering and structure rather than data exfiltration or system compromise. The vulnerability requires the attacker to be registered and logged into the WordPress site, significantly narrowing the attack surface compared to a truly unauthenticated (PR:N) flaw. The conditional nature of the authorization bypass (dependent on parameter omission) means exploitation requires deliberate crafting of requests; standard UI interactions will likely include the 'content_parent' parameter and trigger the authorization check. No active exploitation has been confirmed in the wild, and the fix is available in version 3.9.9. CRITICAL DISCREPANCY: CVSS vector states PR:N (no authentication required), but description explicitly states 'authenticated attackers with subscriber-level access' - verify with Wordfence or vendor whether unauthenticated exploitation is possible or if CVSS vector should reflect PR:L. |
| Exploit ScenarioDerived | An attacker with a registered WordPress subscriber-level account (or higher) logs into the site and crafts a direct HTTP POST request to the WordPress AJAX handler (wp-admin/admin-ajax.php?action=tutor_update_course_content_order) with a valid nonce but deliberately omitting the 'content_parent' parameter. The request includes menu_order values to reorder course lessons. The vulnerable function bypasses the can_user_manage() check (which would normally block this action), processes the request, and updates the WordPress database, causing all lessons in a course to be detached from their topics or reordered maliciously. A course instructor or site administrator would discover the course structure corrupted, though no content is deleted or exposed. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Apr 17, 2026
Tutor LMS plugin for WordPress versions up to 3.9.8 allow authenticated attackers to manipulate course content structure (detach lessons, move lessons between topics, reorder content) without proper authorization checks when the 'content_parent' parameter is omitted from requests to the tutor_update_course_content_order() function. Although the CVSS score of 5.3 reflects the absence of confidentiality impact, the vulnerability enables course instructors or subscribers to disrupt course integrity across the entire site despite lacking content management permissions, with no public exploit code confirmed but patch available in version 3.9.9.
RemediationAI
Upgrade Tutor LMS plugin to version 3.9.9 or later immediately via the WordPress plugin update interface (Plugins > Updates in WordPress admin dashboard) or manually by downloading the patched version from plugins.wordpress.org/plugin/tutor/. The patch adds proper authorization checks that execute regardless of the presence or absence of the 'content_parent' parameter. For sites unable to immediately upgrade, restrict WordPress user roles to prevent subscriber and low-privilege users from accessing course management functions via user role editor plugins or capability management tools (note: this is a workaround with high operational overhead and does not address the underlying vulnerability, as higher-privilege roles like instructors retain risk). Verify the update completes successfully by checking Plugins page to confirm version 3.9.9 or higher is active.
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
The Tutor LMS plugin (CPE: cpe:2.3:a:themeum:tutor_lms_-_elearning_and_online_course_solution:*:*:*:*:*:*:*:*) implements a WordPress AJAX handler in the tutor_update_course_content_order() function within the Course.php class that processes requests to reorder course content. The function checks the nonce (CSRF token) for request validity but conditionally performs the critical authorization check can_user_manage() only when the 'content_parent' parameter exists in the request. This is a classic authorization bypass pattern (CWE-862: Missing Authorization) where the authorization logic is placed behind a conditional branch that can be circumvented by omitting a specific request parameter. When 'content_parent' is absent, the function proceeds directly to save_course_content_order(), which directly manipulates WordPress post meta and menu_order fields in the wp_posts table without verifying the user has capability to edit course content. The nonce-only validation provides CSRF protection but does not authenticate user permissions for the specific action being performed.
Know when Tutor Lms Elearning And Online Course Solution 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:N/UI:N/S:U/C:N/I:L/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
DescriptionCVE.org
The Tutor LMS - eLearning and online course solution plugin for WordPress is vulnerable to unauthorized course content manipulation in versions up to and including 3.9.8. This is due to a missing authorization check in the tutor_update_course_content_order() function. The function only validates the nonce (CSRF protection) but does not verify whether the user has permission to manage course content. The can_user_manage() authorization check only executes when the 'content_parent' parameter is present in the request. When this parameter is omitted, the function proceeds directly to save_course_content_order() which manipulates the wp_posts table without any authorization validation. This makes it possible for authenticated attackers with subscriber-level access and above to detach all lessons from any topic, move lessons between topics, and modify the menu_order of course content, effectively allowing them to disrupt the structure of any course on the site.
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
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Related Vulnerabilities in Tutor LMS SQL Injection and Authorization
View all 2Remote code execution is achievable in Tutor LMS WordPress plugin (≤4.0.7) via a PHP Object Injection flaw in the withdr
Unauthenticated attackers can overwrite billing profile data (name, email, phone, address) for any WordPress user with a
Unauthenticated remote PHP function invocation in the Tutor LMS WordPress plugin (all versions up to and including 4.0.5
Second-order SQL injection in Tutor LMS for WordPress (all versions through 4.0.0) allows authenticated attackers with c
Tutor LMS WordPress plugin versions up to 4.0.8 expose arbitrary users' email addresses and Tutor profile phone numbers
Stored Cross-Site Scripting in Tutor LMS (WordPress plugin by Themeum) versions through 3.9.13 allows authenticated atta
Stored cross-site scripting in the Tutor LMS - eLearning and Online Course Solution WordPress plugin (all versions up to
Reflected cross-site scripting in the Tutor LMS WordPress plugin (all versions up to and including 4.0.8) lets unauthent
DOM-based cross-site scripting in the Tutor LMS eLearning and online course plugin for WordPress (versions up to and inc
Tutor LMS plugin for WordPress up to version 3.9.7 allows authenticated subscribers to enroll in private courses due to
Authenticated instructors in Tutor LMS versions up to 3.9.9 can manipulate course ownership logic via an attacker-contro
EUVD-2026-23360
NVD
CVE.org
EPSS
Vulnrichment
VulDB
GitHub PoC
Exploit-DB