{"id":"CVE-2026-93681","kind":"vulnerability","aliases":["CVE-2026-93681"],"related":[],"title":"Tutor LMS WordPress plugin: display name lets subscribers inject scripts","description":"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.","summary":"The Tutor LMS plugin for WordPress up to and including 4.1.0 does not sanitize the display_name field, so a logged-in subscriber can store script code in it. That script runs in the browser of any user who opens a page showing the injected name, such as an admin viewing the users list.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","tutor-lms","wordpress"],"not_affected_if":["auth-required","no-tutor-lms"],"how_to_check":"- Check the installed Tutor LMS version in the WordPress Plugins screen or with `wp plugin get tutor --field=version`\n- Check whether the Legal Consent feature is in use, since the sources say exploitation needs a Legal Consent record on the attacker's account","fix":"- Update the Tutor LMS plugin to a version newer than `4.1.0`; the sources do not name the fixed version\n- Until updated, restrict subscriber registration or review users with unusual display names","status":"open","published_at":"2026-10-16T09:17:05+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:59:41+00:00","updated_at":"2026-10-25T03:59:41+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:59:41Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Tutor LMS plugin to a version newer than `4.1.0`; the sources do not name the fixed version\n- Until updated, restrict subscriber registration or review users with unusual display names","reach":"internet","title":"Tutor LMS WordPress plugin: display name lets subscribers inject scripts","impact":"medium","summary":"The Tutor LMS plugin for WordPress up to and including 4.1.0 does not sanitize the display_name field, so a logged-in subscriber can store script code in it. That script runs in the browser of any user who opens a page showing the injected name, such as an admin viewing the users list.","category":"package","nicknames":[],"who_cares":["wordpress","tutor-lms","self-hosted"],"confidence":0.7,"needs_auth":"yes","worst_case":"Scripts run in admin browsers, enabling session theft or actions as admin.","analyst_note":"Confirm the fixed Tutor LMS version and whether the Legal Consent condition is required, using the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-93681.","how_to_check":"- Check the installed Tutor LMS version in the WordPress Plugins screen or with `wp plugin get tutor --field=version`\n- Check whether the Legal Consent feature is in use, since the sources say exploitation needs a Legal Consent record on the attacker's account","needs_analyst":true,"not_affected_if":["no-tutor-lms","auth-required"],"who_is_affected":"Sites running Tutor LMS version `4.1.0` or earlier where users can register or hold subscriber-level accounts. The sources say exploitation needs a Legal Consent record for the attacker's account, so sites that do not use that feature are likely less exposed, but the sources do not confirm this. Sites without Tutor LMS can skip it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000677,"input_tokens":3426,"output_tokens":668,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-93681':13A,16A '/users.php':176C '4.1.0':35B,110C 'access':130C,146C 'account':163C 'admin':75B,175C 'appear':170C 'arbitrari':135C 'attack':125C,160C 'authent':124C 'browser':60B 'button':168C 'caus':164C 'code':52B 'column':179C 'consent':155C,177C 'cours':86C 'cross':96C 'cross-sit':95C 'cve':11A,14A 'display':5A,40B,100C 'due':111C 'elearn':83C 'escap':118C 'execut':142C 'exist':157C 'exploit':150C 'field':42B 'host':20B 'includ':34B,109C 'inject':9A,70B,134C,148C 'input':114C 'insuffici':113C 'legal':154C 'let':7A 'level':129C 'list':79B 'lms':2A,23B,27B,82C 'log':46B,167C,178C 'logged-in':45B 'make':120C 'name':6A,41B,71B,101C 'onlin':85C 'open':65B 'output':117C 'packag':17B 'page':67B,139C,149C 'paramet':102C 'plugin':4A,28B,88C 'possibl':122C 'record':156C 'requir':151C 'run':57B 'sanit':38B,115C 'script':10A,51B,56B,98C,137C 'self':19B 'self-host':18B 'show':68B 'site':97C 'solut':87C 'store':50B,94C 'subscrib':8A,48B,128C 'subscriber-level':127C 'tutor':1A,22B,26B,81C 'tutor-lm':21B 'user':63B,78B,145C,162C 'version':105C 'via':99C 'view':76B,166C 'vulner':92C 'web':136C 'whenev':143C 'wordpress':3A,24B,30B,90C 'wp':174C 'wp-admin':173C","nicknames":[],"mitigations":[],"who_affected":"Sites running Tutor LMS version `4.1.0` or earlier where users can register or hold subscriber-level accounts. The sources say exploitation needs a Legal Consent record for the attacker's account, so sites that do not use that feature are likely less exposed, but the sources do not confirm this. Sites without Tutor LMS can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T09:17:05+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-93681","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-93681","severity":null,"published_at":"2026-10-16T09:17:05+00:00","modified_at":"2026-10-16T15:17:36+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","fetched_at":"2026-10-23T22:28:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}