CVE-2025-65672
Executive Summary
CVE-2025-65672 is an Insecure Direct Object Reference (IDOR) vulnerability identified in classroomio version 0.1.13. This flaw allows an unauthenticated or low-privileged attacker to directly access and modify course settings, specifically the share and invite functionality, by manipulating object references (e.g., course IDs) in API requests. The vulnerability stems from insufficient authorization checks on server-side endpoints that handle course sharing and invitation operations. As of the latest analysis, no official patch has been released, and the vendor has not acknowledged the issue. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the lack of a patch makes this a high-risk target for targeted attacks.
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
classroomio is a Node.js application distributed via npm. The vulnerable version (0.1.13) is still available for download. Users should verify their installed version and consider pinning to a safe version if available. No official advisory or patch has been published on the npm registry or GitHub.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (Unscored due to lack of vendor-provided vector)
- Attack Vector (AV): Network (likely)
- Attack Complexity (AC): Low (likely)
- Privileges Required (PR): None (likely)
- User Interaction (UI): None (likely)
- Scope (S): Unchanged (likely)
- Confidentiality (C): High (likely)
- Integrity (I): High (likely)
- Availability (A): None (likely)
Threat Level: High. The vulnerability allows unauthorized access to sensitive course settings, enabling an attacker to invite arbitrary users or modify sharing permissions without proper authorization.
Deep Dive & Mechanics
The IDOR vulnerability exists in the course settings API endpoints. In classroomio 0.1.13, when a user requests to share a course or invite a user, the application uses a direct object reference (e.g., course_id or invite_token) without verifying that the requesting user has the necessary permissions. An attacker can enumerate or guess valid course IDs and send crafted requests to:
POST /api/courses/{course_id}/sharePOST /api/courses/{course_id}/invite
These endpoints likely accept parameters like user_email or role and apply changes without checking if the requester is the course owner or an authorized administrator. The lack of server-side authorization checks allows any user (or even unauthenticated users if the endpoint is exposed) to modify course settings.
Root Cause: Missing or insufficient authorization middleware on sensitive API routes. The application likely relies on client-side checks or does not validate the user's relationship to the course object.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the fix. The vulnerable code likely resembles:
// Vulnerable: No authorization check
app.post('/api/courses/:courseId/share', (req, res) => {
const courseId = req.params.courseId;
const { email, role } = req.body;
// Directly add user to course without checking ownership
Course.findById(courseId).then(course => {
course.addMember(email, role);
res.json({ success: true });
});
});
A patched version would include an authorization check:
// Patched: Authorization check added
app.post('/api/courses/:courseId/share', authenticate, (req, res) => {
const courseId = req.params.courseId;
const userId = req.user.id;
const { email, role } = req.body;
// Verify that the requesting user is the course owner
Course.findOne({ _id: courseId, owner: userId }).then(course => {
if (!course) {
return res.status(403).json({ error: 'Unauthorized' });
}
course.addMember(email, role);
res.json({ success: true });
});
});
Exploitation & Lab Setup
Red Team
Prerequisites:
- A running instance of classroomio 0.1.13
- A valid user account (or ability to access the API without authentication)
- Knowledge of a course ID (can be enumerated via other endpoints or brute-forced)
Exploitation Steps:
Identify the vulnerable endpoint:
curl -X POST http://target:3000/api/courses/12345/share \ -H "Content-Type: application/json" \ -d '{"email": "attacker@evil.com", "role": "admin"}'If unauthenticated, try without session token:
curl -X POST http://target:3000/api/courses/12345/invite \ -H "Content-Type: application/json" \ -d '{"email": "attacker@evil.com"}'Enumerate course IDs:
- Use a simple loop to try common IDs (e.g., 1-1000)
- Monitor responses for success (200 OK) vs. error (404 or 403)
Expected Outcome: The attacker gains admin access to the course, can invite other users, and modify course settings.
Blue Team
Detection:
- Monitor for unusual POST requests to
/api/courses/*/shareor/api/courses/*/invitefrom IPs not associated with course owners. - Alert on multiple failed attempts to access different course IDs (IDOR enumeration).
- Check for requests where the
emailparameter contains external domains not associated with the organization.
Mitigation:
- Implement proper authorization checks on all sensitive endpoints.
- Use role-based access control (RBAC) to ensure only course owners can modify settings.
- Log all access attempts to course settings and review for anomalies.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/api/courses/{id}/shareor/api/courses/{id}/invitewith unusual email addresses. - Repeated requests to different course IDs in a short time frame.
- POST requests to
- Log IOCs:
[INFO] POST /api/courses/12345/sharefrom IP192.168.1.100(if not the owner).[ERROR] Unauthorized access attempt to course 12345(if logging is enabled).
- File IOCs:
- Modified database entries in the
coursescollection showing unexpected members.
- Modified database entries in the
- Behavioral IOCs:
- Sudden addition of multiple new users to a course without owner action.
Detection Engineering
YARA Rule
rule classroomio_idor_exploit {
meta:
description = "Detects exploitation attempts of CVE-2025-65672 IDOR in classroomio"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-65672"
strings:
$s1 = "/api/courses/" ascii wide nocase
$s2 = "/share" ascii wide nocase
$s3 = "/invite" ascii wide nocase
$s4 = "email" ascii wide nocase
$s5 = "role" ascii wide nocase
condition:
all of ($s1, $s2, $s3) or all of ($s1, $s2, $s4) or all of ($s1, $s3, $s5)
}
Sigma Rule
title: IDOR Exploitation Attempt Against classroomio
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects POST requests to classroomio course share/invite endpoints from unauthorized sources
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-stem|startswith: '/api/courses/'
cs-uri-stem|contains:
- '/share'
- '/invite'
condition: selection
falsepositives:
- Legitimate course owner actions
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-65672 classroomio IDOR Exploit"; flow:to_server,established; content:"POST"; http_method; content:"/api/courses/"; http_uri; content:"/share"; http_uri; content:"email"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable endpoints if possible by blocking access to
/api/courses/*/shareand/api/courses/*/inviteat the web server or reverse proxy level. - Implement a Web Application Firewall (WAF) rule to block requests to these endpoints from untrusted IPs.
- Review access logs for any signs of exploitation.
Long-term Fix:
- Patch the application by adding proper authorization checks. Since no official patch exists, consider forking the repository and applying the fix manually.
- Upgrade to a newer version if the vendor releases a patch.
- Conduct a security audit of all API endpoints to ensure proper access controls.
Workaround:
- Use a reverse proxy (e.g., Nginx) to restrict access to the vulnerable endpoints based on IP whitelisting or authentication tokens.
Valters IT Signature: This report was generated by Valters IT DevSecOps AI Assistant. For questions, contact security@valters-it.com.