Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Instructor-level account
-
DeliveryCraft tutor_quiz_builder_save AJAX request
-
ExploitInject other users' nested question_id/answer_id/deleted IDs
-
ExecutionHandler skips ownership validation on nested IDs
-
Persistwpdb update/DELETE executes
-
ImpactOverwrite, re-parent, or delete others' quiz data
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 Instructor-level access or above on a WordPress site running Tutor LMS 4.0.7 or earlier. Exploitation is meaningful primarily on multi-instructor/multi-tenant course sites where quiz questions and answers belonging to other instructors or administrators exist to be overwritten, re-parented, or deleted; on a single-operator site there are no other users' rows to abuse. The attacker sends the tutor_quiz_builder_save AJAX action with valid top-level course_id/topic_id they control but nested question_id, answer_id, deleted_question_ids[], and deleted_answer_ids[] values pointing at other users' quiz rows. No end-user interaction is required (UI:N). The Instructor privilege requirement is the key limiting factor bounding realistic risk. |
| Impact | The CVSS 3.1 base score is 4.3 (Medium) with vector AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N, meaning network-reachable but requiring authenticated Instructor-level (or higher) access and yielding only limited integrity impact (no confidentiality, no availability per the vendor vector - though arbitrary deletion of quiz/answer rows arguably touches availability of that content). No EPSS score, no CISA KEV listing, and no public POC are present in the supplied data, so exploitation status is 'no public exploit identified at time of analysis.' The privilege barrier (PR:L, Instructor+) is the dominant limiting factor: the attacker must already be a trusted content author on the target LMS, which sharply narrows the population of potential abusers to insiders or attackers who have compromised/registered an instructor account. There is no SSVC decision data provided. Net assessment: this is a genuine but bounded cross-tenant integrity issue (one instructor tampering with or deleting another instructor's/admin's quiz data), not a high-urgency internet-wide threat - a real-priority fix for multi-instructor course platforms but low real-world risk for single-operator sites. Note the input tag 'Authentication Bypass' conflicts with the actual weakness (CWE-639 IDOR/broken object-level authorization); authentication is required, so this is an authorization flaw, not an auth bypass. |
| Exploit ScenarioDerived | An authenticated user holding Instructor privileges on a multi-instructor Tutor LMS site submits a crafted tutor_quiz_builder_save AJAX request whose top-level course_id/topic_id belong to their own quiz but whose nested question_id, answer_id, deleted_question_ids[], or deleted_answer_ids[] values reference another instructor's or an administrator's quiz rows. Because the handler validates only the top-level identifiers and passes the nested IDs straight into $wpdb->update/DELETE, the attacker overwrites, re-parents, or deletes arbitrary quiz questions and answers belonging to other users. No public exploit code is identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Authenticated Instructor-level users on WordPress sites running the Tutor LMS plugin 4.0.7 or earlier can overwrite, re-parent, or delete quiz question and answer rows belonging to other instructors and administrators by abusing broken ownership checks in the tutor_quiz_builder_save AJAX action. The handler validates only the top-level course_id/topic_id and payload['ID'], then passes attacker-supplied nested question_id, answer_id, deleted_question_ids[], and deleted_answer_ids[] values straight into $wpdb->update and DELETE statements, so an Instructor who controls one course can reach rows owned by others. Impact is limited to integrity of quiz content (CVSS 3.1 base 4.3, AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N) and is only meaningful on multi-instructor or multi-tenant course sites; there is no public exploit code identified at time of analysis and no confirmed active exploitation (not in CISA KEV), and the Instructor privilege prerequisite is the main factor bounding realistic risk. A vendor fix is available in Tutor LMS 4.0.8.
RemediationAI
Vendor-released patch: upgrade Tutor LMS to 4.0.8, which contains the authorization fix delivered in changeset 3690454 (https://plugins.trac.wordpress.org/changeset/3690454/tutor/tags/4.0.8/classes/QuizBuilder.php); the vendor advisory is at https://www.wordfence.com/threat-intel/vulnerabilities/id/6d07c82d-262a-4ac1-9ee5-7ef4d025f66f?source=cve. If upgrading immediately is not possible, compensating controls are: audit and restrict who holds Instructor-level or higher roles, since the vulnerability requires that capability - moving untrusted course authors to lower-privileged roles or a single shared author account removes the cross-tenant precondition, at the cost of losing per-instructor content isolation; on multi-instructor sites, temporarily disable the quiz builder for non-administrator roles using a capability-management plugin to revoke the tutor quiz-authoring capability, accepting that instructors cannot edit quizzes until patched; and block or rate-limit the admin-ajax.php action=tutor_quiz_builder_save requests from non-administrative accounts at the WAF or reverse-proxy layer, acknowledging that legitimate instructor quiz edits will also be blocked and that this only narrows, not closes, the path. As detection, review logs for tutor_quiz_builder_save requests whose nested question_id/answer_id values fall outside the course_id/topic_id the caller owns, and compare current quiz question and answer rows against backups for unexpected re-parenting or deletions. There is no vendor workaround documented beyond upgrading, and no public exploit code identified at time of analysis.
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
Tutor LMS is a WordPress plugin (CPE cpe:2.3:a:themeum:tutor_lms_-_elearning_and_online_course_solution:*) whose quiz authoring UI is driven by the tutor_quiz_builder_save AJAX action handled in classes/QuizBuilder.php. The vulnerable code paths are QuizBuilder::save_questions(), QuizBuilder::save_question_answers(), and QuizBuilder::handle_delete(), which write and remove rows via direct $wpdb->update/$wpdb->delete calls using identifiers taken from the request body rather than from objects the caller is authorized to modify. The root cause class is CWE-639, Authorization Bypass Through User-Controlled Key: the top-level course_id, topic_id, and optional payload['ID'] are checked against the caller's capabilities, but nested question_id, answer_id, deleted_question_ids[], and deleted_answer_ids[] are not resolved back to their owning quiz, topic, or course before being used as primary keys. Because the plugin's tables store quiz questions and answers with global numeric IDs, an Instructor who legitimately owns one course can substitute IDs belonging to a different instructor's or an administrator's quiz, causing cross-tenant content modification or re-parenting and arbitrary deletion of those rows. The Trac references to tags 3.9.10 and 4.0.3 (QuizBuilder.php lines 156, 291, 423, 430, 781) indicate the same unvalidated identifier handling is present across multiple released versions, and changeset 3690454 created the 4.0.8 tag containing the correction.
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
Network AJAX endpoint (AV:N), no special conditions beyond an Instructor account (AC:L, PR:L), no UI; limited integrity to other users' quiz data with no confidentiality, and deletion impact treated as integrity rather than system availability.
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 versions up to, and including, 4.0.7 via the tutor_quiz_builder_save AJAX action due to missing validation that nested question_id, answer_id, deleted_question_ids[], and deleted_answer_ids[] values in the submitted payload belong to a quiz/topic/course the requester is authorized to manage. The handler only validates the top-level course_id, topic_id, and (when supplied) payload['ID'], but the nested identifiers are passed straight into $wpdb->update/DELETE statements in QuizBuilder::save_questions(), QuizBuilder::save_question_answers(), and QuizBuilder::handle_delete(). This makes it possible for authenticated attackers, with Instructor-level access and above, to overwrite the content and re-parent arbitrary quiz questions/answers belonging to other instructors or administrators, and to delete arbitrary quiz question and answer rows.
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.
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-84301
GHSA-9x9f-f428-ff8p
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB