CVE-2025-64214
Executive Summary
CVE-2025-64214 is a critical Missing Authorization vulnerability in the MasterStudy LMS Pro WordPress plugin (masterstudy-lms-learning-management-system-pro) developed by StylemixThemes. This flaw allows unauthenticated remote attackers to access functionality that should be constrained by Access Control Lists (ACLs), potentially leading to unauthorized data exposure or privilege escalation. The vulnerability affects all versions prior to 4.7.16. With a CVSS score of 7.5 (High), it poses a significant risk to WordPress sites using this plugin for learning management. No public proof-of-concept (PoC) or exploit code has been released, and the vendor has not yet provided a patch. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains high due to the potential for unauthorized access.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability resides in a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Organizations using MasterStudy LMS Pro should treat this as a supply chain risk, as the plugin is a third-party component integrated into the WordPress ecosystem. No known malicious packages or backdoors have been associated with this CVE, but the lack of a patch increases the risk of supply chain attacks if the plugin is not updated or replaced.
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: None
- Availability Impact: None
The vulnerability is exploitable remotely without authentication, making it attractive for attackers seeking to extract sensitive data such as user profiles, course materials, or system configuration details. The high confidentiality impact underscores the need for immediate attention.
Deep Dive & Mechanics
The vulnerability stems from missing authorization checks in the MasterStudy LMS Pro plugin's REST API endpoints or AJAX handlers. Specifically, the plugin fails to verify user permissions before executing actions such as viewing student records, accessing instructor dashboards, or retrieving course content. This allows any unauthenticated user to send crafted HTTP requests to these endpoints and retrieve data that should be restricted.
The affected component is likely the masterstudy-lms-learning-management-system-pro plugin's core API, which handles user management, course enrollment, and progress tracking. The missing ACL enforcement means that functions like get_user_data, get_course_progress, or list_students are accessible without a valid nonce or capability check.
Vulnerable vs. Patched Code
Since no official patch is available, the vulnerable code is presumed to be in the plugin's REST API registration or AJAX action hooks. A typical vulnerable pattern might look like:
Vulnerable Code (Pre-4.7.16):
add_action('wp_ajax_nopriv_get_student_data', 'get_student_data');
function get_student_data() {
$user_id = $_GET['user_id'];
// Missing capability check
$data = get_user_meta($user_id);
wp_send_json($data);
}
Patched Code (Hypothetical):
add_action('wp_ajax_nopriv_get_student_data', 'get_student_data');
function get_student_data() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$user_id = intval($_GET['user_id']);
$data = get_user_meta($user_id);
wp_send_json($data);
}
The patch would add a capability check (e.g., current_user_can('manage_options')) or a nonce verification to ensure only authorized users can access the endpoint.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress site with MasterStudy LMS Pro version < 4.7.16.
- Knowledge of the plugin's REST API endpoints (e.g.,
/wp-json/masterstudy-lms/v1/).
Exploitation Steps:
- Enumerate available endpoints using a tool like
curlor Burp Suite:curl -s http://target.com/wp-json/masterstudy-lms/v1/ | jq . - Identify unprotected endpoints, such as
/wp-json/masterstudy-lms/v1/studentsor/wp-json/masterstudy-lms/v1/courses. - Send a crafted request to retrieve sensitive data:
curl -X GET http://target.com/wp-json/masterstudy-lms/v1/students -H "Content-Type: application/json" - If successful, the response will contain user data (e.g., email, progress, course enrollments).
Note: No public exploit code is available, so this is a manual process.
Blue Team
Detection & Response:
- Monitor for unusual API requests to
/wp-json/masterstudy-lms/v1/from unauthenticated sources. - Look for spikes in 200 OK responses to endpoints that should require authentication.
- Use the Sigma rule below to detect exploitation attempts.
Honeypot Setup:
- Deploy a decoy WordPress instance with the vulnerable plugin and monitor for unauthorized access attempts.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/wp-json/masterstudy-lms/v1/studentsor similar endpoints without a validX-WP-Nonceheader. - Repeated 200 OK responses from these endpoints for unauthenticated users.
- HTTP requests to
- File IOCs:
- Modified plugin files (e.g.,
masterstudy-lms-learning-management-system-pro/main.php) indicating exploitation.
- Modified plugin files (e.g.,
- Log IOCs:
- WordPress debug log entries showing
wp_ajax_nopriv_*actions being called without authentication.
- WordPress debug log entries showing
Detection Engineering
YARA Rule
rule CVE_2025_64214_Missing_Auth {
meta:
description = "Detects vulnerable MasterStudy LMS Pro plugin files with missing authorization"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-64214"
strings:
$vuln_func = "wp_ajax_nopriv_" nocase
$cap_check = "current_user_can" nocase
$nonce_check = "wp_verify_nonce" nocase
condition:
$vuln_func and not ($cap_check or $nonce_check)
}
Sigma Rule
title: CVE-2025-64214 - MasterStudy LMS Pro Missing Authorization
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects unauthenticated access to MasterStudy LMS Pro API endpoints
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-method: 'GET'
cs-uri-stem|startswith: '/wp-json/masterstudy-lms/v1/'
cs-uri-query|contains: 'students'
condition: selection
falsepositives:
- Legitimate admin requests with proper authentication
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-64214 - MasterStudy LMS Pro Missing Authorization Attempt"; flow:to_server; http.method; content:"GET"; http.uri; content:"/wp-json/masterstudy-lms/v1/"; http.uri; content:"students"; nocase; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released by the vendor.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to
/wp-json/masterstudy-lms/v1/*endpoints. - Restrict network access to the WordPress admin area using IP whitelisting.
Long-Term Fix:
- Monitor the StylemixThemes website for a patched version (4.7.16 or later) and apply it immediately.
- Consider replacing MasterStudy LMS Pro with an alternative LMS plugin that has a better security track record.
Workaround:
- Add custom code to the theme's
functions.phpto enforce authentication on all plugin API endpoints:
add_filter('rest_pre_dispatch', function($result, $server, $request) {
$route = $request->get_route();
if (strpos($route, '/masterstudy-lms/v1/') !== false && !is_user_logged_in()) {
return new WP_Error('rest_forbidden', 'Unauthorized', array('status' => 403));
}
return $result;
}, 10, 3);
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.