CVE-2025-2202 Overview
CVE-2025-2202 is a broken access control vulnerability [CWE-863] in the Innovación y Cualificación local administration plugin for Moodle. The flaw resides in the plugin's ajax.php endpoint, which fails to enforce authorization checks before returning user data. An unauthenticated attacker can query the endpoint over the network and retrieve sensitive information about other users, including internal id, full name, login username, and email address. The vulnerability requires no user interaction and no privileges to exploit. INCIBE published a coordinated security notice documenting multiple vulnerabilities affecting Innovación y Cualificación Moodle plugins.
Critical Impact
Unauthenticated attackers can enumerate user records, exposing names, logins, and email addresses that support phishing, credential stuffing, and targeted account takeover.
Affected Products
- Moodle Learning Management System deployments
- Innovación y Cualificación local administration plugin
- The plugin's ajax.php endpoint
Discovery Timeline
- 2025-03-17 - CVE-2025-2202 published to the National Vulnerability Database
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2025-2202
Vulnerability Analysis
The vulnerability is a broken access control weakness in the plugin's AJAX handler. The ajax.php script processes user-lookup requests but omits capability and session checks that Moodle plugins are expected to perform before returning user records. Because authorization is not enforced, any network client reaching the endpoint receives structured user data in the response. Exposed fields include internal identifiers, full names, login usernames, and email addresses. This information supports downstream attacks such as targeted phishing, password spraying against known usernames, and enumeration of instructors and students within a Learning Management System (LMS) deployment.
Root Cause
The root cause is missing authorization logic in ajax.php. Moodle plugins should invoke require_login() and require_capability() before returning identity data, and should scope responses to the caller's role. The affected endpoint returns user records without validating that the requester is authenticated or authorized to view those records, matching the pattern described by CWE-863: Incorrect Authorization.
Attack Vector
Exploitation is remote and unauthenticated. An attacker sends crafted HTTP requests to the plugin's ajax.php endpoint on a vulnerable Moodle instance. The server responds with sensitive user attributes. Because the endpoint is reachable over the network with no authentication material, mass enumeration is feasible against internet-exposed LMS deployments. Refer to the INCIBE Security Notice for coordinated advisory details.
Detection Methods for CVE-2025-2202
Indicators of Compromise
- Unauthenticated HTTP requests to ajax.php paths under the Innovación y Cualificación plugin directory.
- Web server logs showing repeated 200 responses to the plugin endpoint from a single source IP.
- Anomalous outbound response sizes from ajax.php correlating with user record payloads.
Detection Strategies
- Review Moodle and reverse proxy access logs for high-volume queries against the plugin endpoint from non-authenticated sessions.
- Deploy web application firewall (WAF) signatures that flag requests to the affected ajax.php without valid Moodle session cookies.
- Alert on responses from ajax.php containing structured JSON fields such as email, username, or firstname when the requester lacks an authenticated session.
Monitoring Recommendations
- Baseline normal request rates to the plugin endpoint and alert on statistically significant deviations.
- Ingest Moodle access logs into a centralized analytics platform to correlate enumeration attempts across IPs and user agents.
- Track any subsequent authentication failures or phishing reports involving accounts whose records may have been enumerated.
How to Mitigate CVE-2025-2202
Immediate Actions Required
- Identify Moodle instances running the Innovación y Cualificación local administration plugin and inventory their exposure.
- Restrict network access to the plugin's ajax.php endpoint until a patched version is deployed.
- Apply vendor updates as referenced by the INCIBE Security Notice.
Patch Information
Follow the remediation guidance published by INCIBE-CERT and the plugin maintainer. Administrators should upgrade to the fixed plugin release once available and validate that ajax.php enforces require_login() and appropriate capability checks. Where a fixed release is not yet installed, disable the plugin.
Workarounds
- Disable the Innovación y Cualificación local administration plugin until a patched version is installed.
- Place the Moodle instance behind an authenticated reverse proxy or VPN to prevent unauthenticated access to plugin endpoints.
- Add WAF rules that block requests to the affected ajax.php path when no valid Moodle session cookie is present.
# Example WAF rule pattern (ModSecurity) to block unauthenticated access
SecRule REQUEST_URI "@contains /local/[plugin-path]/ajax.php" \
"id:1002202,phase:1,deny,status:403,\
chain,msg:'Block unauthenticated access to vulnerable Moodle plugin ajax endpoint (CVE-2025-2202)'"
SecRule &REQUEST_COOKIES:MoodleSession "@eq 0"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

