Skip to main content

Tutor LMS CVE-2026-93681

| EUVDEUVD-2026-102821 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-16 Wordfence GHSA-633x-59jf-x243
6.4
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Register subscriber account on target site
  2. Delivery
    Inject script into display_name
  3. Exploit
    Generate Legal Consent record for account
  4. Execution
    Wait for admin to open Consent Logs in users.php
  5. Persist
    Script executes in admin session
  6. Impact
    Hijack admin privileges or session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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) an authenticated account with at least subscriber-level access, typically obtainable where open user registration is enabled; (2) the Tutor LMS Legal Consent / GDPR logging feature to be in use, since a Legal Consent record must exist for the attacker's account to make the 'View Logs' button appear in the Consent Logs column of wp-admin/users.php; and (3) an administrator (or other privileged user) to view that consent log page, which triggers the stored payload. Limiting factors: this is not exploitable against default configurations lacking consent logging, it requires an existing low-privilege account, and the payload only executes when a privileged user accesses the affected admin page - materially narrowing the attacker population and the realistic window versus a pure unauthenticated stored XSS.

Impact

This is a moderate-severity stored XSS (CVSS 6.4, CWE-79) whose real-world priority is tempered by meaningful preconditions. The CVSS vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) indicates network-reachable exploitation by an authenticated subscriber-level user, with a scope change reflecting that injected script executes in a higher-privileged admin's browser context. No EPSS score, SSVC decision, or KEV entry was supplied, and there is no public exploit identified at time of analysis, so there is no evidence of active or automatable exploitation - exploitation status is 'no public exploit identified at time of analysis.' A key mitigating/conflicting signal: the CVSS vector sets UI:N, but the description shows exploitation depends on an administrator navigating to the Consent Logs column in wp-admin/users.php and clicking (or rendering) the 'View Logs' view, which practically resembles victim-side interaction - this nuance is not captured by UI:N and should be verified against Wordfence's scoring rationale. Additionally, a Legal Consent record must already exist for the attacker's account, further narrowing applicability. Net: a legitimate but not urgent issue - a self-registering low-privilege user can escalate against an admin, but only in GDPR/consent-logging deployments and only when an admin views the logs. Treat as a routine-priority patch, prioritized higher on sites with open registration and active consent logging.

Exploit ScenarioDerived

On a Tutor LMS site that allows open subscriber registration and uses the Legal Consent/GDPR logging feature, an attacker registers an account and sets a malicious display_name containing script. Once a Legal Consent record exists for that account, the 'View Logs' button surfaces in the Consent Logs column of wp-admin/users.php, and the attacker's unsanitized display_name executes in the administrator's browser when they review the consent logs. No public exploit code was 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 – Oct 16, 2026

Stored cross-site scripting in the Tutor LMS - eLearning and Online Course Solution WordPress plugin (all versions up to and including 4.1.0) allows an authenticated attacker with subscriber-level access or above to inject arbitrary JavaScript via the display_name parameter, which is insufficiently sanitized on input and not escaped on output. The payload is only stored and rendered when a Legal Consent record exists for the attacker's account, causing a 'View Logs' button to appear in the Consent Logs column of wp-admin/users.php; an administrator or other privileged user must then open that page for the script to execute, so exploitation is gated on consent logging being enabled and on a privileged user visiting the affected admin screen. Rated CVSS 6.4 (CWE-79), this is a moderate-severity issue with no confirmed active exploitation (not in CISA KEV) and no public exploit identified at time of analysis, though the Subscriber-level prerequisite is trivially met on sites with open user registration.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - the vendor change is published as plugin changeset 3730615 (https://plugins.trac.wordpress.org/changeset?reponame=&old=3730615%40tutor&new=3730615%40tutor), and the fix is expected in a Tutor LMS release above 4.1.0, so administrators should upgrade to the first available version greater than 4.1.0 as soon as it is published and verify the installed version in wp-admin → Plugins. Until that upgrade is applied, the most effective compensating control is to restrict or close public account registration and remove unnecessary Subscriber-level accounts, since the attacker must hold an authenticated low-privilege account to store the payload - the trade-off being that membership sites relying on self-registration will need an approval or invitation workflow. If the GDPR/Legal Consent logging feature is not operationally required, disabling consent logging removes the 'View Logs' trigger and the exploit path entirely, at the cost of losing consent audit records; if it must remain enabled, limit access to wp-admin/users.php to a small set of trusted administrators via role or IP restrictions and avoid routine browsing of the Consent Logs column. Sanitizing or overwriting affected display_name values (e.g., stripping HTML/script characters from user display names via a profile-update hook or SQL cleanup of the users table) will neutralize already-stored payloads, but note this is reactionary and must be repeated for new accounts until the plugin is patched. Add WAF rules blocking script-bearing payloads in profile/display-name submissions as a defense-in-depth measure, understanding that WAF signatures are easily bypassed for stored XSS and should not be treated as a substitute for the vendor fix. Monitor the vendor advisory link above for the confirmed patched version number before certifying remediation.

Affected VersionsENISA

Tutor LMS – eLearning and online course solution 0 ≤4.1.0

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 PHP-based WordPress plugin (vendor Themeum, CPE cpe:2.3:a:themeum:tutor_lms_-_elearning_and_online_course_solution) that adds course, student, and GDPR/legal-consent management to a WordPress site. The flaw is a classic CWE-79 improper neutralization of input/output: user-supplied profile data (the WordPress display_name field) is stored without adequate sanitization and later emitted into the admin interface without output escaping or contextual encoding. The vulnerable path involves the plugin's student-handling code (classes/Student.php, around lines 208 and 217), the GDPR consent-logging controller (GDPR/Controllers/UserConsent.php, around line 113), and the admin JavaScript that builds the Consent Logs UI (assets/js/tutor-admin.js). Because the injected value is persisted and re-rendered for a different, higher-privileged viewer, this is a stored (persistent) XSS rather than a reflected one, and the CVSS vector's Scope:Changed (S:C) reflects that the injected script executes in the administrator's browser session on the WordPress admin origin, potentially enabling session/token theft or privileged actions on behalf of the victim. The plugin's tags (PHP, WordPress, XSS) and the code references below confirm the affected component is the plugin's user-consent logging feature, not WordPress core.

Know when PHP 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 6.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.4 MEDIUM

Network-reachable injection by an authenticated subscriber (PR:L); stored script executes in a higher-privileged admin context (S:C) with limited C/I impact and no availability effect.

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

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

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

DescriptionCVE.org

The Tutor LMS - eLearning and online course solution plugin for WordPress is vulnerable to Stored Cross-Site Scripting via display_name Parameter in all versions up to, and including, 4.1.0 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. Exploitation requires that a Legal Consent record exists for the attacker's user account, causing the View Logs button to appear in the wp-admin/users.php Consent Logs column.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Medium
popular WordPress LMS plugin but not universally deployed
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

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