Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister subscriber account on target site
-
DeliveryInject script into display_name
-
ExploitGenerate Legal Consent record for account
-
ExecutionWait for admin to open Consent Logs in users.php
-
PersistScript executes in admin session
-
ImpactHijack 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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 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
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
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.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
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
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
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
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
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
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
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
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
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-102821
GHSA-633x-59jf-x243
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB