| Type | software |
| Product Environment | web |
| Product Name | Frappe LMS |
| Product Vendor | Frappe |
| Product Version | 2.40.0 |
| Product Link | https://github.com/frappe/lms |
| Vulnerability Name | Improper Access Control |
| Severity | Medium |
|
CVSS String
|
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:M/I:N/A:N |
| CVSS Score | 6.5 |
| CVE ID | - |
| Vendor Acknowledgement | No |
|
Affected digital Assets
|
10 |
|
Affected Users
|
50000 |
| Date of Reporting | Nov 27, 2025 |
| PoC Exploit | https://gist.github.com/0xHamy/74f900b38f5e27409a3754e02c6aa78c |
| Credit | 0xhamy |
Frappe LMS version 2.40.0 contains an access control vulnerability where media files uploaded by instructors in assignment feedback comments are publicly accessible to unauthenticated users.
Instructor feedback on student submissions, including attached screenshots or documents, is stored under /files/ and can be accessed without authentication if the filename or URL is known or guessed.
The LMS provides a comment/feedback feature on assignment submissions, where instructors can leave comments and attach media files. These files are:
/files/ path.Because this area directly relates to student submissions and instructor evaluation, the exposed content may include:
Log in as an instructor and create course and assignment.
/lms/coursesCOURSE_NAME./lms/assignmentsText).Attach the assignment to a course lesson.
/lms/courses/COURSE_NAME/edit/lms/courses/COURSE_NAME/learn/1-2/editSubmit the assignment as a student.
COURSE_NAME.Leave instructor feedback with an attachment.
/lms/assignments and click the assignment attached to COURSE_NAME./lms/assignment-submissions?assignmentID=ASG-00003 (example)./lms/assignment-submission/ASG-00003/ASG-SUB-00006 (example).Access the uploaded media without authentication.
/files/, e.g.:http://localhost:8000/files/feedback_image.png/files/feedback_image.png URL directly.The impact is primarily on confidentiality, but the sensitive context of instructor feedback makes this more severe than generic media exposure.
/files/ endpoint for sensitive content; instead, serve files through an authenticated view that validates permissions.