☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Kodezen llc logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N 🐛 CWE-639
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-59562

CVE-2025-59562 Authorization Bypass in Kodezen llc
📅 PUBLISHED: 2025-09-22 19:16 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.06%
👁️
0.06% probability
1.6× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
5.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-59562 is an Authorization Bypass Through User-Controlled Key vulnerability (CWE-639) in the Academy LMS plugin by Kodezen LLC for WordPress. This flaw allows an authenticated attacker with low privileges (e.g., a student or instructor) to manipulate a user-controlled key (likely a numeric ID or UUID) to access or modify resources belonging to other users, such as course content, grades, or user profiles. The vulnerability exists in all versions of Academy LMS up to and including 3.3.4. As of this report, no official patch has been released, and no public proof-of-concept (PoC) or exploit code is available. The CVSS score of 5.5 (Medium) reflects the need for authentication but the potential for significant data exposure.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects a WordPress plugin distributed through the official WordPress plugin repository and third-party marketplaces. Organizations using Academy LMS should treat this as a supply chain risk, as the plugin is a third-party component integrated into the WordPress ecosystem. The lack of a patch means that all deployments are currently vulnerable, and the only mitigation is to disable the plugin or implement strict access controls at the web application firewall (WAF) level.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
  • Base Score: 5.5 (Medium)
  • Attack Vector (AV): Network – The attack can be launched remotely.
  • Attack Complexity (AC): Low – No special conditions are required.
  • Privileges Required (PR): Low – The attacker must have a valid account (e.g., student or instructor).
  • User Interaction (UI): None – No victim interaction is needed.
  • Scope (S): Unchanged – The vulnerable component and the impacted component are the same.
  • Confidentiality (C): Low – Limited data exposure (e.g., other users’ course progress or personal details).
  • Integrity (I): Low – Limited ability to modify data (e.g., changing grades or course enrollment).
  • Availability (A): None – No impact on system availability.

Threat Level: Medium. The requirement for authentication reduces the attack surface, but the ease of exploitation and potential for lateral movement within the LMS make this a significant risk for educational institutions and enterprises using Academy LMS.

Deep Dive & Mechanics

The vulnerability stems from the plugin’s failure to validate that the user-controlled key (e.g., user_id, course_id, lesson_id) belongs to the authenticated user. In typical WordPress REST API endpoints or AJAX handlers, the plugin likely uses a parameter like user_id to fetch or modify data without verifying that the current user has permission to access that specific resource.

Example vulnerable endpoint (hypothetical):

add_action('wp_ajax_academy_get_user_progress', 'academy_get_user_progress');
function academy_get_user_progress() {
    $user_id = $_POST['user_id'];
    // No check: if (get_current_user_id() != $user_id) { wp_die('Unauthorized'); }
    $progress = get_user_meta($user_id, 'academy_course_progress', true);
    wp_send_json_success($progress);
}

An attacker can simply change the user_id parameter to enumerate other users’ progress, grades, or personal information. The same pattern could apply to course management, lesson access, or quiz results.

Vulnerable vs. Patched Code

Vulnerable Code (Academy LMS <= 3.3.4):

// No authorization check on user-controlled key
$target_user_id = $_GET['user_id'];
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}academy_quiz_attempts WHERE user_id = %d", $target_user_id));

Patched Code (Hypothetical fix):

$target_user_id = intval($_GET['user_id']);
if ( get_current_user_id() !== $target_user_id && ! current_user_can('manage_options') ) {
    wp_die('Unauthorized', 403);
}
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}academy_quiz_attempts WHERE user_id = %d", $target_user_id));

The patch adds a capability check to ensure the requesting user is either the owner of the resource or an administrator.

Exploitation & Lab Setup

Red Team (Proof of Concept)

Since no public exploit exists, the following is a conceptual demonstration. Assume the attacker has a valid student account.

  1. Enumerate User IDs: Use WordPress user enumeration techniques (e.g., /wp-json/wp/v2/users) to gather a list of user IDs.
  2. Craft Request: Send a POST request to the vulnerable AJAX endpoint with a modified user_id parameter.
    curl -X POST 'https://target.com/wp-admin/admin-ajax.php' \
    -d 'action=academy_get_user_progress&user_id=2' \
    --cookie 'wordpress_logged_in_xxx=attacker_session_cookie'
    
  3. Extract Data: The response will contain the progress data for user ID 2 (e.g., an instructor or another student).

Blue Team (Detection & Hardening)

  • Monitor for anomalous AJAX requests: Look for patterns where a single user ID makes requests with varying user_id parameters in a short time.
  • Implement WAF rules: Block requests to admin-ajax.php where the user_id parameter does not match the logged-in user’s ID (requires session awareness).
  • Audit plugin code: Manually review all AJAX handlers and REST endpoints for missing current_user_can() checks.
  • Disable the plugin: If no patch is available, consider disabling Academy LMS until a fix is released.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • Repeated POST requests to /wp-admin/admin-ajax.php with varying user_id parameters.
    • Unusual access to /wp-json/wp/v2/users for user enumeration.
  • File IOCs:
    • Modified plugin files (e.g., wp-content/plugins/academy-lms/).
    • Suspicious log entries in /var/log/apache2/access.log or /var/log/nginx/access.log showing rapid sequential user ID requests.
  • Log IOCs:
    • WordPress debug log entries showing academy_get_user_progress or similar actions with unexpected user IDs.

Detection Engineering

YARA Rule

rule CVE_2025_59562_Academy_LMS_Auth_Bypass {
    meta:
        description = "Detects vulnerable Academy LMS plugin files with missing authorization checks"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-59562"
    strings:
        $vuln_func = "academy_get_user_progress" nocase
        $vuln_param = "user_id" nocase
        $missing_check = "get_current_user_id" nocase
    condition:
        $vuln_func and $vuln_param and not $missing_check
}

Sigma Rule

title: CVE-2025-59562 - Academy LMS Authorization Bypass
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit authorization bypass in Academy LMS by manipulating user_id parameter
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains: 'action=academy_'
        cs-uri-query|contains: 'user_id='
    condition: selection
falsepositives:
    - Legitimate admin operations (rare)
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-59562 - Academy LMS Authorization Bypass Attempt";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"admin-ajax.php"; http_uri;
    content:"action=academy_"; http_client_body;
    content:"user_id="; http_client_body;
    pcre:"/user_id=\d+/";
    reference:cve,2025-59562;
    classtype:attempted-recon;
    sid:10000001;
    rev:1;
)

Remediation & Mitigation

  1. Immediate Action: Disable the Academy LMS plugin if it is not critical to operations.
  2. Short-Term Mitigation: Implement a WAF rule to block requests to admin-ajax.php where the user_id parameter does not match the authenticated user’s session ID (requires custom logic).
  3. Long-Term Fix: Apply the vendor patch once released. If no patch is forthcoming, consider migrating to an alternative LMS plugin.
  4. Code Hardening: If you have access to the source code, add current_user_can() checks to all AJAX handlers and REST endpoints that use user-controlled keys.
  5. Monitoring: Enable detailed logging for all AJAX requests and review logs for suspicious patterns.

Report generated by Valters IT DevSecOps Intelligence Unit

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"Academy LMS"
http.html:"wp-content/plugins/academy-lms"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-59562/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.