Skip to main content

Frappe LMS EUVDEUVD-2026-82559

| CVE-2026-54343 HIGH
Path Traversal (CWE-22)
2026-09-17 security-advisories@github.com
8.7
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach SCORM content endpoint unauthenticated
  2. Delivery
    Submit traversal path outside public/scorm
  3. Exploit
    SCORMRenderer opens resolved file
  4. Execution
    Server streams file contents
  5. Impact
    Read sensitive server-accessible files

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a reachable Frappe LMS instance (prior to 2.52.1) whose SCORM content route handled by SCORMRenderer.render is accessible over the network; per CVSS PR:N/UI:N no authentication or user interaction is needed. Exploitation is LIMITED to files that are readable by the LMS server process - the traversal grants file read only (confidentiality), not write or code execution. Effectiveness depends on the site having SCORM rendering exposed and on which sensitive files (e.g. site_config, source) the server user can access; the target must reach the renderer with a traversal path that resolves outside public/scorm.

Impact

Signals are consistent and point to a genuine, straightforward priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, VC:H/VI:N/VA:N, score 8.7) describes a remote, unauthenticated, low-complexity path traversal with high confidentiality impact and no integrity or availability effect - which matches the description (arbitrary read of files accessible to the server process) and the fix diff exactly. No EPSS score, KEV listing, or SSVC decision data was provided, and no public exploit is referenced. However, the vendor-published commit diff (e1b425ed) and PR #2299 reveal both the vulnerable code path and the missing realpath check in detail, effectively lowering the bar to reproduce even without a packaged PoC. The one caveat: impact is bounded to file DISCLOSURE - there is no code execution or write primitive here, so despite the high 8.7 rating the practical blast radius is 'read what the server user can read' (e.g. site config, secrets, source), not full compromise. Treat as a real, patch-now issue for exposed Frappe LMS instances, but not a wormable/RCE-class emergency.

Exploit ScenarioDerived

A remote, unauthenticated attacker sends a request to the SCORM content route with a traversal sequence in the path (e.g. ../../ segments) so SCORMRenderer.render resolves and opens a file outside public/scorm. The server streams back the file contents, letting the attacker read sensitive files (site configuration, credentials, application source) that the server process can access. No public exploit is identified, but the fix commit publicly discloses the exact vulnerable code and missing safe-path check.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 17, 2026

Unauthenticated path traversal in the SCORMRenderer.render handler of Frappe Learning Management System (LMS) allows a remote attacker to read files outside the intended public/scorm directory on any instance running a version prior to 2.52.1. Because the renderer builds and opens a server-side path from attacker-influenced input without first verifying that the resolved real path stays inside public/scorm, the attacker can retrieve any file the LMS server process can read; per the assessed vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) the impact is limited to confidentiality - no file write, integrity, or code execution is possible through this flaw. No public exploit code was identified at time of analysis and the issue is not confirmed as actively exploited (no CISA KEV entry); the vendor addressed it in version 2.52.1.

RemediationAI

Upgrade Frappe LMS to version 2.52.1 or later, which is the vendor-released patch containing the _is_safe_path realpath-containment check described in GHSA-3mq2-3c8v-m92j (release notes at https://github.com/frappe/lms/releases/tag/v2.52.1); if you track upstream code rather than releases, the corresponding fix is commit e1b425ed5bf0fc9c373efc1ba235c7c70e23d465 from PR 2299. If immediate upgrade is not possible, compensating controls should focus on reducing reachability and blast radius: temporarily disable or block the SCORM rendering route (for example by denying requests that reach SCORMRenderer.render at the reverse proxy or web server) - this removes the exposure but breaks SCORM content playback for legitimate learners; normalize and reject request paths containing traversal sequences (../ or encoded equivalents) at the reverse proxy before they reach the application, accepting that bypass via unusual encodings is possible and that this is not a substitute for the patch; and run the Frappe/LMS worker and web processes under a least-privilege OS account with no read access to sensitive files such as site_config.json, database credentials, environment files, or SSH keys, which limits what a successful traversal can disclose but does not eliminate the flaw. Verify after remediation that SCORM content still loads correctly and review server logs for prior traversal attempts.

Affected VersionsENISA

LMS < 2.52.1

Affected Packages

euvd lms fix: 2.52.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Frappe LMS is a Frappe Framework-based learning management application written in Python, and the affected code lives in lms/page_renderers.py. The SCORMRenderer class serves SCORM e-learning content from the site's public/scorm directory; SCORM is a legacy package format whose manifests reference chapter folders and index files that the renderer resolves dynamically. The vulnerable implementation joined the request-derived path onto the site path and called open() directly, without canonicalizing the result with os.path.realpath and confirming containment in the SCORM root. This is a classic CWE-22 (Improper Limitation of a Pathname to a Restricted Directory, i.e., Path Traversal): because no canonicalization step preceded the filesystem access, sequences such as ../ escaped the SCORM sandbox. The upstream fix (commit e1b425ed5bf0fc9c373efc1ba235c7c70e23d465, PR 2299) introduces an _is_safe_path helper that resolves both the SCORM root and the requested path via os.path.realpath and returns True only when the resolved path equals or is a strict child of the SCORM root, raising frappe.PermissionError otherwise; the file-serving logic is also consolidated into a _serve_file helper that is called only after the containment check passes. The check depends on the LMS instance actually exposing SCORM content rendering, and successful reads are bounded by the privileges of the user account under which the Frappe server process runs.

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

Vendor (github) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote unauthenticated traversal with no interaction (AV:N/AC:L/PR:N/UI:N); arbitrary file read gives C:H, but there is no write or DoS primitive so I:N/A:N.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 23:04 EUVD
CVE Published
Sep 17, 2026 - 22:17 cve.org
HIGH 8.7

DescriptionCVE.org

Frappe Learning Management System (LMS) is a learning system that helps users structure their content. Prior to version 2.52.1, a remote attacker can request a traversal path handled by SCORMRenderer.render in lms/page_renderers.py. The renderer constructs and opens a server-side path without first confirming that its real path remains within public/scorm, allowing files outside the SCORM directory to be read when they are accessible to the server process. This issue is fixed in version 2.52.1.

Technical POC Analysis

Evidence basis: GHSA-3mq2-3c8v-m92j (frappe/lms) plus the CVE brief.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Frappe Learning Management System deployments running versions earlier than 2.52.1 are exposed to an unauthenticated path traversal flaw (CVE-2026-54343) that allows any remote party to read files the LMS server process can access, including configuration files, integration secrets, and learner records. Because no credentials or user interaction are required, every internet-facing instance is effectively reachable by anyone with network access, and the flaw can be triggered with commodity tooling rather than specialized exploit code. Leadership should treat this as a confidentiality and data-exposure risk to student information and connected systems rather than an availability issue, and prioritize version upgrade alongside an assessment of what may already have been read.

Business Impact: High
Compensating Controls

Apply vendor patch (upgrade to 2.52.1).

Threat Intelligence Overview

EPSS Score
0.5%
Top 59% exploitable
Prevalence
Low
niche open-source learning-management app in the Frappe ecosystem
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

More in Frappe

View all
CVE-2025-67289 CRITICAL POC
9.6 Dec 22

Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on

CVE-2018-3885 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3884 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3883 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3882 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2025-66440 HIGH POC
8.8 Dec 15

Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database c

CVE-2025-66439 HIGH POC
8.8 Dec 15

SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa

CVE-2025-66437 HIGH POC
8.8 Dec 15

Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A

CVE-2020-6145 HIGH POC
8.8 Aug 10

An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev

CVE-2026-39352 HIGH POC
8.7 May 20

Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie

CVE-2025-10655 HIGH POC
8.6 Dec 09

SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL

CVE-2025-52042 HIGH POC
8.2 Oct 01

In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy