WP Learn Manager Security & Risk Analysis

wordpress.org/plugins/learn-manager

WP Learn Manager is the most comprehensive, extensive, and feature-rich WordPress LMS plugin.

10 active installs v1.1.8 PHP + WP 4.5+ Updated Nov 22, 2021
e-learningelearninglearning-management-systemlmswordpress-lms
48
D · High Risk
CVEs total3
Unpatched1
Last CVEJul 7, 2026
Safety Verdict

Is WP Learn Manager Safe to Use in 2026?

High Risk

Score 48/100

WP Learn Manager carries significant security risk with 3 known CVEs, 1 still unpatched. Consider switching to a maintained alternative.

3 known CVEs 1 unpatched Last CVE: Jul 7, 2026Updated 4yr ago
Risk Assessment

The Learn Manager plugin, version 1.1.8, presents a mixed security posture. While it demonstrates good practices in areas like the high percentage of SQL queries using prepared statements and a substantial amount of output escaping, several significant concerns remain. The presence of unprotected AJAX handlers is a primary weakness, creating direct entry points for unauthenticated attackers. The taint analysis reveals a concerning number of flows with unsanitized paths, with 8 identified as high severity, indicating potential for command injection or other serious vulnerabilities if these flows are triggered by user input.

The plugin's vulnerability history, with two known CVEs including a past high-severity issue and a medium-severity one, suggests a pattern of exploitable weaknesses. While there are currently no unpatched vulnerabilities, the types of past issues (CSRF and XSS) align with the potential risks identified in the static analysis, particularly regarding unsanitized input and the lack of robust authorization checks on entry points. The use of dangerous functions like `exec` and `unserialize` further amplifies these risks.

In conclusion, while Learn Manager has some strengths in secure coding practices, the significant number of unprotected entry points and the high-severity taint flows indicate a substantial risk. Attackers could potentially leverage these weaknesses to execute arbitrary code or manipulate data. The plugin's past vulnerability history reinforces the need for caution and thorough security auditing.

Key Concerns

  • 4 unprotected AJAX handlers identified
  • 8 high severity taint flows with unsanitized paths
  • Dangerous functions (exec, unserialize) present
  • 1 known high severity CVE historically
  • 1 known medium severity CVE historically
  • 14 flows with unsanitized paths
  • File operations are numerous (92)
  • Limited capability checks (4)
Vulnerabilities
3 published

WP Learn Manager Security Vulnerabilities

CVEs by Year

2 CVEs in 2021
2021
1 CVE in 2026 · unpatched
2026
Patched Has unpatched

Severity Breakdown

Critical
1
High
1
Medium
1

3 total CVEs

CVE-2026-12153critical · 9.8Missing Authorization

WP Learn Manager <= 1.1.8 - Missing Authorization to Unauthenticated Arbitrary Plugin Installation and Activation via jslearnmanager_ajax AJAX Action

Jul 7, 2026Unpatched
WF-e2defe79-137f-45a0-85a1-f61dce9afd28-learn-managerhigh · 8.8Cross-Site Request Forgery (CSRF)

WP LMS – Best WordPress LMS Plugin <= 1.1.4 - Cross-Site Request Forgery

Aug 2, 2021 Patched in 1.1.5 (904d)
CVE-2021-24504medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

WP LMS – Best WordPress LMS Plugin <= 1.1.5 - Cross-Site Scripting

May 24, 2021 Patched in 1.1.6 (974d)
Version History

WP Learn Manager Release Timeline

Code Analysis
Analyzed Mar 17, 2026

WP Learn Manager Code Analysis

Dangerous Functions
8
Raw SQL Queries
14
253 prepared
Unescaped Output
2029
4697 escaped
Nonce Checks
29
Capability Checks
4
File Operations
92
External Requests
15
Bundled Libraries
1

Dangerous Functions Found

execif (strlen($mime = @exec("file -bi ".escapeshellarg($this->file_src_pathname))) != 0) {includes\classes\class.upload.php:2422
unserialize$array = @unserialize($value);modules\course\model.php:2466
unserialize$data = @unserialize($value);modules\course\model.php:2487
unserialize$value = unserialize($value);modules\course\model.php:2489
unserialize$value = unserialize($cookie);modules\course\model.php:2566
unserialize$array = @unserialize($value);modules\course\model.php:2750
unserialize$data = @unserialize($value);modules\course\model.php:2878
unserialize$value = unserialize($value);modules\course\model.php:2880

Bundled Libraries

jQuery

SQL Query Safety

95% prepared267 total queries

Output Escaping

70% escaped6726 total outputs
Data Flows · Security
14 unsanitized

Data Flow Analysis

15 flows14 with unsanitized paths
upload (includes\classes\class.upload.php:2041)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
4 unprotected

WP Learn Manager Attack Surface

Entry Points7
Unprotected4

AJAX Handlers 4

authwp_ajax_jslearnmanager_ajaxincludes\ajax.php:9
noprivwp_ajax_jslearnmanager_ajaxincludes\ajax.php:10
authwp_ajax_jslearnmanager_loginwith_ajaxincludes\ajax.php:11
noprivwp_ajax_jslearnmanager_loginwith_ajaxincludes\ajax.php:12

Shortcodes 3

[jslearnmanager] includes\shortcodes.php:6
[jslearnmanager] includes\shortcodes.php:7
[jslearnmanager_course_search] includes\shortcodes.php:8
WordPress Hooks 53
actionadmin_initincludes\addon-updater\jslmupdater.php:31
filtersite_transient_update_pluginsincludes\addon-updater\jslmupdater.php:38
filterplugins_apiincludes\addon-updater\jslmupdater.php:40
actionadmin_noticesincludes\addon-updater\jslmupdater.php:44
actionafter_plugin_rowincludes\addon-updater\jslmupdater.php:45
filterupload_dirincludes\classes\uploads.php:109
filterupload_dirincludes\classes\uploads.php:205
actionwp_dashboard_setupincludes\dashboardapi.php:15
actionwp_dashboard_setupincludes\dashboardapi.php:32
actionwp_dashboard_setupincludes\dashboardapi.php:49
actionwp_dashboard_setupincludes\dashboardapi.php:66
actionwp_dashboard_setupincludes\dashboardapi.php:83
actionwp_dashboard_setupincludes\dashboardapi.php:100
actionwp_dashboard_setupincludes\dashboardapi.php:117
actionwp_dashboard_setupincludes\dashboardapi.php:134
actioninitincludes\formhandler.php:9
actioninitincludes\formhandler.php:10
actionwp_login_failedincludes\jslearnmanager-hooks.php:7
filterauthenticateincludes\jslearnmanager-hooks.php:9
actionadmin_enqueue_scriptsincludes\jslearnmanager-hooks.php:37
actionregister_formincludes\jslearnmanager-hooks.php:71
filterregistration_errorsincludes\jslearnmanager-hooks.php:78
actionuser_registerincludes\jslearnmanager-hooks.php:91
actioninitincludes\jslearnmanager-hooks.php:268
actiondelete_userincludes\jslearnmanager-hooks.php:304
actionadmin_menuincludes\jslearnmanageradmin.php:9
filterpost_rewrite_rulesincludes\paramregister.php:49
filterpage_rewrite_rulesincludes\paramregister.php:57
filterroot_rewrite_rulesincludes\paramregister.php:82
filterquery_varsincludes\paramregister.php:91
actionparse_requestincludes\paramregister.php:292
filterredirect_canonicalincludes\paramregister.php:311
actionwidgets_initincludes\widgets\widgets.php:11
actionwp_insert_sitelearn-manager.php:78
actionwpmu_new_bloglearn-manager.php:80
filterwpmu_drop_tableslearn-manager.php:82
actionplugins_loadedlearn-manager.php:83
actionadmin_initlearn-manager.php:84
actionreset_jslmaddon_querylearn-manager.php:85
actionadmin_initlearn-manager.php:86
actionadmin_initlearn-manager.php:87
actioninitlearn-manager.php:88
actionjslearnmanager_cronjobs_actionlearn-manager.php:89
actionjslm_delete_expire_session_datalearn-manager.php:90
actionjslm_load_file_pathlearn-manager.php:91
actionwp_enqueue_scriptslearn-manager.php:978
actionadmin_enqueue_scriptslearn-manager.php:990
filterstyle_loader_taglearn-manager.php:991
filterscript_loader_taglearn-manager.php:992
actionjslm_addon_update_date_failedlearn-manager.php:997
actionupgrader_process_completelearn-manager.php:1048
filterwp_mail_content_typemodules\common\model.php:356
filterwp_mail_content_typemodules\emailtemplate\model.php:536

Scheduled Events 2

jslm_delete_expire_session_data
jslearnmanager_cronjobs_action
Maintenance & Trust

WP Learn Manager Maintenance & Trust

Maintenance Signals

WordPress version tested5.8.13
Last updatedNov 22, 2021
PHP min version
Downloads7K

Community Trust

Rating80/100
Number of ratings4
Active installs10
Developer Profile

WP Learn Manager Developer Profile

JoomSky

3 plugins · 7K total installs

42
trust score
Avg Security Score
47/100
Avg Patch Time
287 days
View full developer profile
Detection Fingerprints

How We Detect WP Learn Manager

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/learn-manager/includes/css/style.css/wp-content/plugins/learn-manager/includes/css/custom.css/wp-content/plugins/learn-manager/assets/css/bootstrap.min.css/wp-content/plugins/learn-manager/assets/css/jquery-ui.css/wp-content/plugins/learn-manager/assets/css/font-awesome.min.css/wp-content/plugins/learn-manager/assets/css/slick.css/wp-content/plugins/learn-manager/assets/css/slick-theme.css/wp-content/plugins/learn-manager/assets/css/prettyPhoto.css+21 more
Script Paths
/wp-content/plugins/learn-manager/assets/js/jquery-ui.min.js/wp-content/plugins/learn-manager/assets/js/chart.min.js/wp-content/plugins/learn-manager/includes/js/jquery.js/wp-content/plugins/learn-manager/includes/js/common.js
Version Parameters
learn-manager/includes/css/style.css?ver=learn-manager/includes/css/custom.css?ver=learn-manager/assets/css/bootstrap.min.css?ver=learn-manager/assets/css/jquery-ui.css?ver=learn-manager/assets/css/font-awesome.min.css?ver=learn-manager/assets/css/slick.css?ver=learn-manager/assets/css/slick-theme.css?ver=learn-manager/assets/css/prettyPhoto.css?ver=learn-manager/assets/css/animate.css?ver=learn-manager/assets/css/responsive.css?ver=learn-manager/assets/css/main.css?ver=learn-manager/assets/css/jssocials.css?ver=learn-manager/assets/css/jssocials-theme-flat.css?ver=learn-manager/assets/js/bootstrap.min.js?ver=learn-manager/assets/js/jquery.easing.1.3.js?ver=learn-manager/assets/js/waypoints.min.js?ver=learn-manager/assets/js/jquery.counterup.min.js?ver=learn-manager/assets/js/slick.min.js?ver=learn-manager/assets/js/owl.carousel.min.js?ver=learn-manager/assets/js/prettyPhoto.js?ver=learn-manager/assets/js/jquery.form.js?ver=learn-manager/assets/js/jquery.validate.min.js?ver=learn-manager/assets/js/custom.js?ver=learn-manager/assets/js/jssocials.min.js?ver=learn-manager/assets/js/jquery-ui.min.js?ver=learn-manager/assets/js/jquery.maskedinput.min.js?ver=learn-manager/assets/js/chart.min.js?ver=learn-manager/includes/js/jquery.js?ver=learn-manager/includes/js/common.js?ver=

HTML / DOM Fingerprints

CSS Classes
jslm_titlejslm_buttonjslm_form_fieldjslm_search_fieldjslm_data_tablejslm_pagination
HTML Comments
<!-- JSLearnManager -->
Data Attributes
data-jslm-actiondata-jslm-id
JS Globals
jslearnmanagerJSLEARNMANAGERrequestJSLEARNMANAGERincluderjslm_admin_paramsjslm_plugin_url
REST Endpoints
/wp-json/jslm/v1/data
FAQ

Frequently Asked Questions about WP Learn Manager