Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as author-level instructor
-
ExploitCraft course-save POST including target 'ID'
-
Executionsanitize_array preserves ID, wp_insert_post updates post
-
ImpactOverwrite victim course and reassign ownership
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Requires an authenticated account with Tutor LMS author-level (instructor) capability or above (PR:L); there is no remote unauthenticated path. No non-default configuration is needed - the flaw is in the default course-save handling of all versions up to and including 4.1.0, where Input::sanitize_array() fails to strip the attacker-supplied 'ID' POST key and wp_insert_post() then treats a non-empty ID as an update to an existing post. Exploitation is limited to environments that grant untrusted or multiple users the instructor/author role; single-author sites or sites that do not expose author-level registration are effectively not exposed. No end-user interaction is required. |
| Impact | This is a legitimate but moderate-severity authorization flaw, not a high-urgency emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N = 4.3 Medium) correctly captures the shape: network-reachable, low complexity, but requiring authenticated author-level (instructor) privileges and delivering an integrity-only impact with no confidentiality or availability loss. No EPSS score, CISA KEV listing, or public POC was provided in the source data, so exploitation status is 'no public exploit identified at time of analysis' - there is no signal of active or widespread exploitation. The privilege precondition (PR:L, author-level) meaningfully constrains the attacker population to users who already hold trusted instructor roles, which is the dominant risk-limiting factor. One point of divergence worth flagging: I assess the integrity impact higher than the input's I:L, because the attacker can overwrite ARBITRARY courses belonging to other instructors and reassign ownership to themselves (a cross-tenant data-integrity compromise affecting multiple victims), which pushes my independent CVSS to 6.5. No SSVC decision data was supplied. Overall this warrants routine patch prioritization on multi-instructor Tutor LMS sites rather than emergency response. |
| Exploit ScenarioDerived | A malicious or compromised instructor (author-level) account on a Tutor LMS site submits a course-save request that includes the 'ID' parameter pointing at a course owned by a different instructor. Because the plugin preserves the attacker-supplied ID and passes it to wp_insert_post(), WordPress treats the request as an update, letting the attacker overwrite that course's title, content, and status and reassign its ownership to themselves. No public exploit code was identified in the source data; exploitation is manual and requires a valid author-level account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 17, 2026
Insecure direct object reference in the Tutor LMS WordPress plugin (all versions up to and including 4.1.0) allows any authenticated user holding instructor/author-level capability to take over and overwrite courses belonging to other instructors. Because the course-save routine passes attacker-controlled POST data into wp_insert_post() without stripping the 'ID' key, a non-empty ID is interpreted by WordPress as an update to an existing post, letting the attacker change the victim course's title, content and status and reassign its ownership to themselves. Authentication with at least author-level access is required (CVSS PR:L) and there is no unauthenticated path; no public exploit code was identified at time of analysis and the issue is not in CISA KEV, but sites that grant the instructor role to untrusted or numerous users - multi-instructor marketplaces and open registration setups - carry real content-integrity risk, while single-author sites are effectively unexposed.
RemediationAI
Upstream fix available (changeset); released patched version not independently confirmed at time of analysis - the vendor addressed the save path in Tutor LMS changeset 3730615 (https://plugins.trac.wordpress.org/changeset/3730615/tutor/trunk/classes/Course.php), so upgrade to the first plugin release containing that changeset, i.e. any version newer than 4.1.0, and verify the installed version after updating since WordPress plugins are often pinned or bundled. Until the update is deployed, restrict exposure: stop provisioning instructor/author accounts to untrusted users and disable front-end instructor registration if it is enabled (side effect: legitimate instructors cannot self-enroll and must be created manually), audit existing courses for unexpected ownership or content changes by comparing post_author and post_modified against known editorial history (side effect: forensic effort only, does not prevent recurrence), and add a WAF or application-layer rule that blocks POSTs to the course-save endpoint containing an 'ID' parameter that does not belong to the requesting user (side effect: may break legitimate course-edit workflows and requires maintenance). Single-author sites and sites where all instructors are trusted can deprioritize emergency action, but should still schedule the update. Track the vendor advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/12f093bd-5230-4103-b571-80543c1b43cf?source=cve for the confirmed fixed version number.
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 flaw is a classic CWE-639 authorization bypass through a user-controlled primary key, rooted in how the plugin's course-save controller handles request data. Tutor LMS's Input::sanitize_array() sanitizes the values of submitted POST parameters but does not strip unknown or unexpected keys, so an attacker-supplied 'ID' element survives into the argument array later handed to WordPress's wp_insert_post(). WordPress core semantics treat a non-empty 'ID' in that array as an instruction to update the referenced existing post object rather than insert a new one; combined with the absence of an ownership/capability check on the target post ID, this allows the caller to write to any course record. The vendor's own Course.php (referenced at lines 303, 850, 1009 and 1053 of tag 4.0.8) is where the save/insert path and its validation gaps live. Only course integrity (I) is affected - no confidentiality or availability impact - but the consequences go beyond cosmetic edits, since ownership reassignment hands the attacker durable control over the course object. Note the scoring divergence: the published Wordfence/CVE score is 4.3 with I:L, whereas our independent assessment rates integrity impact as High (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N), reflecting that arbitrary cross-tenant course takeover is a meaningful integrity loss rather than a minor edit. The default configuration is vulnerable; there is no special setting required to trigger it.
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:L/UI:N/S:U/C:N/I:L/A:N
Author-level account required so PR:L; attacker can overwrite arbitrary other instructors' courses and hijack ownership, a broad integrity loss justifying I:H; no confidentiality or availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Tutor LMS - eLearning and online course solution plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 4.1.0 via the 'ID' parameter due to missing validation on a user controlled key. This makes it possible for authenticated attackers, with author-level access and above, to modify arbitrary courses created by other instructors - overwriting their title, content, and status - and reassign ownership of those courses to themselves. This is possible because Input::sanitize_array() preserves attacker-supplied POST keys (including 'ID') without stripping them, and WordPress interprets a non-empty ID in the wp_insert_post() argument array as an update to the existing post rather than a new insert.
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
Remote 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
SQL injection in Tutor LMS plugin for WordPress through version 3.9.8 allows authenticated Admin-level attackers to extr
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-103222
GHSA-3972-hwr2-mqjw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB