Frappe Learning
CVE-2025-62158
LOW
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain student-file URL (shared/leaked)
-
ExploitRequest public file endpoint unauthenticated
-
ImpactRetrieve exposed assignment attachment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a Frappe Learning instance prior to 2.38.0 where students have uploaded assignment attachments; because the default upload path stored these as public files, no authentication or special configuration is needed to retrieve them. The concrete limiting factor is that an attacker must possess or discover the specific file URL - the fix (adding |
| Impact | This is a genuinely low-priority issue, and the signals are consistent rather than conflicting. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes unauthenticated network reachability, but the only impact metric set is VC:L (low confidentiality) with VI/VA:N, yielding a base score of just 2.7 - the vulnerability leaks data but cannot modify or deny anything. EPSS reinforces low urgency at 0.29% (19th percentile), and the CVSS 4.0 exploit-maturity metric is E:U (unreported/unproven). There is no CISA KEV listing and no public exploit identified at time of analysis, so this is not under active exploitation. The one nuance worth flagging: PR:N plus the description's 'anyone with the file URL could access these files without authentication' means the true barrier is not authentication but knowledge of the (typically non-enumerable) file URL - so real-world exposure depends on URL leakage (shared links, referrer headers, logs, enumeration) rather than open directory browsing. Net assessment: a real but minor information-disclosure bug affecting student privacy, not an infrastructure-compromise priority; patch on a normal maintenance cycle. |
| Exploit ScenarioDerived | A student uploads an assignment attachment (e.g., containing personal or academic information) to a Frappe Learning instance running a version prior to 2.38.0, where it is stored as a public file. An attacker who obtains or guesses the file's URL - through a shared link, browser history, referrer leakage, or log exposure - retrieves the attachment over the network without any authentication. No public exploit code is required; access is a simple unauthenticated HTTP GET to the file URL. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Frappe Learning (frappe/lms) versions prior to 2.38.0 stored student-uploaded assignment attachments as public files, so anyone who obtains or guesses the file URL can download them without authentication. The exposure is unauthenticated per the CVSS vector (PR:N) but is gated by URL knowledge - there is no open directory listing described, so practical risk depends on link leakage via referrer headers, shared links, logs, or guessable paths. Vendor-released patch: 2.38.0, which forces assignment uploads to be private by default; EPSS is low at 0.29% (19th percentile), no public exploit code has been identified at time of analysis, and the issue is not in CISA KEV. Impact is confidentiality-only, confined to student-submitted assignment content.
RemediationAI
Vendor-released patch: upgrade Frappe Learning (frappe/lms) to 2.38.0 or later, which passes private:true into the assignment upload component so student attachments are stored as private files and served through permission-checked /private/files/ paths; apply the same change if you maintain a fork, mirroring commit 78640561f558a6c7396f8be48874f79a54f03420 and the frappe-ui ^0.1.201 bump needed to honor the uploadArgs. Because the fix changes the default for new uploads, verify whether attachments submitted before the upgrade were retroactively reclassified - the advisory does not state this - and if they remain public, manually mark those File records as private (or move them under the private file directory), accepting a brief window where legitimate assignment links break and must be re-issued to students and instructors. If you cannot upgrade immediately, a compensating control is to block or require authentication for the specific public assignment file paths at the reverse proxy or web server; the trade-off is that /files/ is also used for legitimate public site assets, so any blanket rule there can break images, themes, and public course material, meaning the rule must be scoped narrowly to assignment upload paths. Tightening URL secrecy alone (avoiding link sharing, stripping referrer headers, scrubbing file URLs from logs and analytics) reduces but does not eliminate exposure, since it does not change the underlying access control. Review web and proxy logs for previously exposed attachment URLs to assess whether any student submissions were accessed by unauthorized parties, and note that no public exploit code has been identified at time of analysis, so exploitation would likely require targeted URL discovery rather than automated scanning.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Frappe Learning is a learning management system built on the Frappe framework (the same platform underlying ERPNext), where uploaded content is represented by the File doctype and carries an is_private flag. Files flagged public are served from the /files/ path and are retrievable by guest users who know the URL, whereas private files are served from /private/files/ and gated by Frappe's permission checks. In this case the frontend assignment upload flow in frontend/src/components/Assignment.vue did not pass private:true, so attachments landed in the public bucket; the upstream fix adds :uploadArgs="{ private: true }" to the upload component and bumps the frappe-ui dependency from ^0.1.200 to ^0.1.201 (submodule c9a0fc9 -> 8b85a70) to support those upload arguments. The root cause maps to CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) - a missing access-control designation on a stored resource rather than an injection or memory-safety flaw, which explains the low assessed CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N profile (confidentiality-only, no integrity or availability impact) and the 2.7 CVSS:4.0 score in the NVD feed.
Know when Frappe gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:U
Unauthenticated network retrieval of public files (AV:N/PR:N/UI:N); only confidentiality of student files is affected (C:L, I:N, A:N); AC:L matches the vendor vector though URL knowledge is a practical barrier.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Frappe Learning is a learning system that helps users structure their content. In versions prior to 2.38.0, the system did stored the attachments uploaded by the students in their assignments as public files. This issue potentially exposed student-uploaded files to the public. Anyone with the file URL could access these files without authentication. The issue has been fixed in version 2.38.0 by ensuring all student-uploaded assignment attachments are stored as private files by default.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)CVE.org
Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database c
SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A
An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev
Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie
SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL
In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re
NVD
CVE.org
EPSS
GitHub
Exploit-DB