Tutor LMS <= 4.0.5 - Unauthenticated Remote Code Execution via 'template' and 'data' POST Parameters
Strategic Overview
- Status
- Patched in 4.0.6
- Affected Plugin
- Tutor LMS – eLearning and online course solution
- Affected Version
<= 4.0.5- CVSS
- 6.5Medium
- Weakness type
- CWE-74 · Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')
- CVE
CVE-2026-16759
At a glance
CVE-2026-16759 is a medium-severity Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') vulnerability in the Tutor LMS WordPress plugin, affecting versions <= 4.0.5. It carries a CVSS score of 6.5 (reachable over the network; low attack complexity). Exploitation requires no authentication. The issue is fixed in version 4.0.6; sites on affected versions should update now. Disclosed August 2026, reported by Slopothecary.
Vulnerability Overview
The Tutor LMS – eLearning and online course solution plugin for WordPress is vulnerable to Remote Code Execution limited to zero-argument function invocation in all versions up to, and including, 4.0.5 via the tutor_course_filter_ajax AJAX action. This is due to missing authorization on the handler combined with unsanitized array keys being passed to extract() inside tutor_load_template(), allowing attacker-controlled POST data to overwrite the local $template variable and, in the resulting templates/single-content-loader.php template, the $method_map and $context variables invoked at $method_map[$context](). This makes it possible for unauthenticated attackers to call an arbitrary zero-argument PHP function server-side and, via WordPress core edit_user(), to create a persistent subscriber-level account from request parameters.
Technical Analysis
The vector marks this flaw as remotely reachable over the network, with low attack complexity — no special timing or configuration is needed, and no privileges on the target site, and no interaction from a victim user.
CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')
The product constructs all or part of a command, data structure, or record using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify how it is parsed or interpreted when it is sent to a downstream component.
Remediation
Update to version 4.0.6, or a newer patched version
How does WordSec protect against this?
Requests carrying this pattern arrive without a session, so nothing upstream of the firewall gets a chance to reject them: WordSec's web application firewall inspects request payloads before WordPress loads them. None of that substitutes for the fix: Tutor LMS 4.0.6 closes this, and updating the plugin is the step that ends it.
- Firewall
- Login Security
- Alerts
External References
Related records
Same weakness class
Other vulnerabilities in Tutor LMS – eLearning and online course solution
- 9.8CVE-2024-4223: Tutor LMS <= 2.7.0 Missing Authorization
CVE-2024-4223 - 9.8CVE-2023-25700: Tutor LMS <= 2.1.10 SQL Injection
CVE-2023-25700 - 8.8CVE-2024-4318: Tutor LMS <= 2.7.0 SQL Injection
CVE-2024-4318 - 8.8CVE-2024-1751: Tutor LMS SQL Injection
CVE-2024-1751 - 8.8CVE-2023-25800: Tutor LMS <= 2.2.0 SQL Injection
CVE-2023-25800 - 8.8CVE-2023-25990: Tutor LMS <= 2.1.10 SQL Injection
CVE-2023-25990 - 8.8CVE-2021-24184: Tutor LMS Unprotected AJAX including Privilege
CVE-2021-24184 - 8.8CVE-2021-24182: Tutor LMS <=1.8.2 SQL Injection
CVE-2021-24182
Vulnerability data © Defiant, Inc., provided under the Wordfence Intelligence T&C