CVE-2026-6965
CVE-2026-6965 is a medium-severity vulnerability with a CVSS 3.x base score of 5.3. It is not currently listed as actively exploited by CISA, and its EPSS exploit-prediction score is low. The underlying weakness is classified as CWE-639.
Key facts
- Severity: Medium (CVSS 3.x base score 5.3)
- EPSS exploit prediction: 0% (22nd percentile)
- Actively exploited: Not listed in CISA KEV
- EU (EUVD) id: EUVD-2026-29914
- Weakness: CWE-639
- Published:
- Last modified:
Description
The Tutor LMS – eLearning and online course solution plugin for WordPress is vulnerable to Insecure Direct Object Reference in versions up to and including 3.9.9. This is due to the `get_course_id_by()` function unconditionally trusting the user-supplied `course` GET parameter as the authoritative course ID for content ownership lookups, which is then consumed by `can_user_manage()`, the plugin's sole authorization gate for instructor-level operations, causing it to evaluate instructor membership against the attacker-controlled course rather than the course that actually owns the target content object. This makes it possible for authenticated attackers, with instructor-level access and above, to perform unauthorized operations on any other instructor's course content, including permanently deleting lessons, assignments, quizzes (with cascading deletion of all student attempt data), topics, announcements, and Q&A threads, as well as creating or modifying lessons, topics, and announcements in victim courses, manipulating student quiz grades, and reading unpublished lesson and quiz content.
Frequently asked questions
- What is CVE-2026-6965?
- The Tutor LMS – eLearning and online course solution plugin for WordPress is vulnerable to Insecure Direct Object Reference in versions up to and including 3.9.9. This is due to the `get_course_id_by()` function unconditionally trusting the user-supplied `course` GET parameter as the authoritative course ID for content ownership lookups, which is then consumed by `can_user_manage()`, the plugin's sole authorization gate for instructor-level operations, causing it to evaluate instructor membership against the attacker-controlled course rather than the course that actually owns the target content object. This makes it possible for authenticated attackers, with instructor-level access and above, to perform unauthorized operations on any other instructor's course content, including permanently deleting lessons, assignments, quizzes (with cascading deletion of all student attempt data), topics, announcements, and Q&A threads, as well as creating or modifying lessons, topics, and announcements in victim courses, manipulating student quiz grades, and reading unpublished lesson and quiz content.
- How severe is CVE-2026-6965?
- CVE-2026-6965 has a CVSS 3.x base score of 5.3, rated medium severity. It is exploitable over network with low attack complexity, requires no privileges and no user interaction. Impact on confidentiality is none, integrity low, and availability none.
- Is CVE-2026-6965 being actively exploited?
- It is not currently listed in CISA's KEV catalog. Its EPSS exploit-prediction score is 0% (22nd percentile), an estimate of the probability of exploitation in the next 30 days.
- How do I fix CVE-2026-6965?
- Review the linked vendor and NVD advisories for patched versions and mitigations, then upgrade or apply the recommended workaround.
- Does CVE-2026-6965 have an EU (EUVD) identifier?
- Yes. CVE-2026-6965 is tracked in the ENISA EU Vulnerability Database (EUVD) as EUVD-2026-29914.
- When was CVE-2026-6965 published?
- CVE-2026-6965 was published on 2026-05-13 and last updated on 2026-06-17.
References
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Ajax.php#L294
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Ajax.php#L507
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Ajax.php#L586
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Announcements.php#L105
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Course.php#L1997
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Course.php#L2045
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Lesson.php#L186
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Lesson.php#L243
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Lesson.php#L341
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Q_And_A.php#L219
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Q_And_A.php#L297
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Q_And_A.php#L339
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Quiz.php#L1007
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Quiz.php#L1041
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Quiz.php#L888
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Utils.php#L7829
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.7/classes/Utils.php#L8020
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Ajax.php#L294
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Ajax.php#L507
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Ajax.php#L586
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Announcements.php#L105
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Course.php#L1997
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Course.php#L2045
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Lesson.php#L186
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Lesson.php#L243
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Lesson.php#L341
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Q_And_A.php#L219
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Q_And_A.php#L297
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Q_And_A.php#L339
- https://plugins.trac.wordpress.org/browser/tutor/tags/3.9.9/classes/Quiz.php#L1007
Other CWE-639 (Authorization Bypass Through User-Controlled Key (IDOR)) vulnerabilities
- CVE-2025-40805 — Critical (CVSS 10.0): Affected devices do not properly enforce user authentication on specific API endpoints. This could facilitate an…
- CVE-2024-45032 — Critical (CVSS 10.0): A vulnerability has been identified in Industrial Edge Management Pro (All versions < V1.9.5), Industrial Edge…
- CVE-2026-34037 — Critical (CVSS 9.9): Coolify is an open-source and self-hostable tool for managing servers, applications, and databases. Prior to…
- CVE-2026-52782 — Critical (CVSS 9.9): OpenProject is open-source, web-based project management software. Prior to 17.3.3 and 17.4.1, there is an IDOR through…
- CVE-2026-45552 — Critical (CVSS 9.9): Roxy-WI is a web interface for managing Haproxy, Nginx, Apache and Keepalived servers. In versions 8.2.6.4 and prior,…
- CVE-2026-29200 — Critical (CVSS 9.9): A critical IDOR vulnerability has been discovered in Comet Backup affecting all versions from 20.11.0 to 26.1.1 and…
Browse all CWE-639 (Authorization Bypass Through User-Controlled Key (IDOR)) vulnerabilities →