Skip to main content

Tutor LMS CVE-2026-18439

| EUVDEUVD-2026-84301 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-22 Wordfence GHSA-9x9f-f428-ff8p
4.3
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Obtain Instructor-level account
  2. Delivery
    Craft tutor_quiz_builder_save AJAX request
  3. Exploit
    Inject other users' nested question_id/answer_id/deleted IDs
  4. Execution
    Handler skips ownership validation on nested IDs
  5. Persist
    wpdb update/DELETE executes
  6. Impact
    Overwrite, 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.

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

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

Alert me

AnalysisAIv1 – 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

Tutor LMS – eLearning and online course solution 0 ≤4.0.7

Affected Packages

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

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

Vendor (Wordfence) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

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

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

EPSS Score
0.2%
Top 83% exploitable
Prevalence
Medium
Popular WordPress LMS plugin with large but not ubiquitous install base
Data Quality
4 sources
Confidence: Medium

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

Priority Score

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

CVE-2026-78175 HIGH
8.8 Sep 12

Remote code execution is achievable in Tutor LMS WordPress plugin (≤4.0.7) via a PHP Object Injection flaw in the withdr

CVE-2026-3360 HIGH
7.5 Apr 10

Unauthenticated attackers can overwrite billing profile data (name, email, phone, address) for any WordPress user with a

CVE-2026-16759 MEDIUM
6.5 Aug 28

Unauthenticated remote PHP function invocation in the Tutor LMS WordPress plugin (all versions up to and including 4.0.5

CVE-2026-15022 MEDIUM
6.5 Jul 16

Second-order SQL injection in Tutor LMS for WordPress (all versions through 4.0.0) allows authenticated attackers with c

CVE-2026-89333 MEDIUM
6.5 Sep 19

Tutor LMS WordPress plugin versions up to 4.0.8 expose arbitrary users' email addresses and Tutor profile phone numbers

CVE-2026-6080 MEDIUM
6.5 Apr 17

SQL injection in Tutor LMS plugin for WordPress through version 3.9.8 allows authenticated Admin-level attackers to extr

CVE-2026-13443 MEDIUM
6.4 Jul 01

Stored Cross-Site Scripting in Tutor LMS (WordPress plugin by Themeum) versions through 3.9.13 allows authenticated atta

CVE-2026-93681 MEDIUM
6.4 Oct 16

Stored cross-site scripting in the Tutor LMS - eLearning and Online Course Solution WordPress plugin (all versions up to

CVE-2026-89081 MEDIUM
6.1 Sep 19

Reflected cross-site scripting in the Tutor LMS WordPress plugin (all versions up to and including 4.0.8) lets unauthent

CVE-2026-88963 MEDIUM
6.1 Oct 16

DOM-based cross-site scripting in the Tutor LMS eLearning and online course plugin for WordPress (versions up to and inc

CVE-2026-3358 MEDIUM
5.4 Apr 11

Tutor LMS plugin for WordPress up to version 3.9.7 allows authenticated subscribers to enroll in private courses due to

CVE-2026-6965 MEDIUM
5.3 May 13

Authenticated instructors in Tutor LMS versions up to 3.9.9 can manipulate course ownership logic via an attacker-contro

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