Skip to main content

Frappe LMS EUVDEUVD-2026-114195

| CVE-2026-39375 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-30 GitHub_M
5.1
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain course-editing role account
  2. Delivery
    Inject JS into course meta tag field
  3. Exploit
    Payload stored unsanitized
  4. Execution
    Victim loads course page
  5. Impact
    Script executes in victim browser session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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

Exploitation Conditions

Exploitation requires an authenticated account that holds a course-editing role (PR:L) with access to the Course Management module, where the attacker populates the course meta tag fields - specifically the values rendered into index.html as meta name/property title, image, description, keywords (and the og:/twitter: equivalents), plus the course title, description heading and 'Know More' link. These values were stored without HTML sanitization and emitted without escaping prior to 2.52.0. Exploitation is further gated by required victim interaction (UI:P): a second user must load the affected course page for the stored script to execute. Limiting factors: the privileged editor role, the need for a victim to view the page, and the fix in 2.52.0 which both strips HTML on storage and escapes on render.

Impact

This is a stored XSS (CWE-79) in Frappe LMS rated CVSS 4.0 5.1 (Medium) with vector AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N. The signals are internally consistent and point to a bounded, lower-tier risk rather than a critical priority. PR:L confirms the attacker must already be an authenticated user holding a course-editing role - this is not an anonymous internet-facing flaw - and UI:P confirms a victim must visit the affected course page for the payload to fire. The vulnerable-system confidentiality/availability are N and integrity is only L, with the meaningful impact falling on the subsequent system (SC:L/SI:L) i.e. the victim's browser session. No EPSS score was supplied, the vulnerability is NOT in CISA KEV, and no working exploit is referenced - only the vendor advisory and fix commits. The vuln.today decision label is 'this_month', not 'act_now' or 'emergency', aligning with a moderate-urgency, patch-on-normal-cycle posture. Net assessment: a genuine but privilege-gated, interaction-dependent stored XSS affecting a niche product - real enough to patch, but not a widespread or urgent exploitation threat.

Exploit ScenarioDerived

An authenticated user who has been granted a course-editing role injects a malicious JavaScript payload into one of the meta tag fields (e.g. title, description, keywords, image) of a course in the Course Management module. The value is stored without HTML sanitization and later rendered unescaped into the page's <meta>/<title>/heading markup, so when another user - such as a learner or administrator - views that course page, the script executes in their browser session. No public working exploit is referenced, though the vendor advisory and fix commits describe the mechanism precisely.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 30, 2026

Stored cross-site scripting in Frappe LMS versions up to and including 2.51.0 lets an authenticated user who holds a course-editing role plant malicious JavaScript in the Course Management meta tag fields, which is then stored and rendered unescaped into the course page (including the meta name/property tags for title, image, description and keywords, the og:/twitter: equivalents, the course title and description headings, and the 'Know More' link). The script executes in the browser of any second user who opens the affected course page, which is why victim interaction is required. Severity is rated Medium - CVSS 4.0 base 5.1 (AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N), with the independent assessment scoring CVSS 3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N; exploitation needs an authenticated editor account plus a victim visiting the page, no public exploit code was identified at time of analysis, and the issue is fixed in 2.52.0.

RemediationAI

Upgrade Frappe LMS to 2.52.0 or later, which is the version the advisory names as fixed and where meta tag values are stripped of HTML tags before storage and escaped on render; the fix is delivered by commits cd6aca25f7d28425660720db4fdb920727edb670 (output escaping across frontend/index.html) and f244a6c9ff6e0b104fec48b2d97af4cc09896b60 (input stripping in lms/lms/api.py), with details in advisory https://github.com/frappe/lms/security/advisories/GHSA-9fqj-95wr-6hm6. Until the upgrade can be applied, review and reduce the set of accounts holding course-editing roles and audit existing course meta tag values for injected HTML, since the payload persists in stored metadata and will be re-emitted on every page view; note that such scoping does not remove payloads already saved and updating to 2.52.0 is the complete fix.

Affected VersionsENISA

LMS < 2.52.0

Affected Packages

euvd lms fix: 2.52.0

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

CWE-79 (Improper Neutralization of Input During Web Page Generation) in the Frappe LMS Course Management module. The frontend landing template in frontend/index.html interpolated server-side values - meta.title, meta.image, meta.description, meta.keywords and the og:/twitter: mirrors, plus the course title, description block and link - directly into <title>, <meta> and <h1>/<a href> contexts; the corresponding writer endpoint update_meta_info() in lms/lms/api.py persisted the supplied meta tag values without sanitization. The upstream fix does two things: it strips HTML tags from every meta tag value on storage via frappe.utils.strip_html_tags(), and it applies the template escaper filter (| e) to all of those interpolations on render, closing both the storage and the output-encoding side of the flaw. The CPE cpe:2.3:a:frappe:lms:*:*:*:*:*:*:*:* denotes that all builds prior to the 2.52.0 branch are in scope; the meta-tag fields are writable by course-editing roles, so the injection surface is the course metadata authoring workflow rather than an anonymous endpoint.

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_M) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Authenticated course-editor role sets PR:L; stored payload needs a victim page view so UI:R; XSS executing in the victim's browser crosses authority (S:C) with limited C/I and no availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 30, 2026 - 18:03 EUVD

DescriptionCVE.org

Frappe Learning Management System (LMS) is a learning system that helps users structure their content. Prior to version 2.52.0, an authenticated user with a course editing role can inject malicious JavaScript through meta tag fields in the Course Management module. The values are stored without adequate HTML sanitization and are not safely escaped when rendered, allowing stored cross-site scripting. This issue is fixed in version 2.52.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 72% exploitable
Prevalence
Low
Frappe LMS is a niche open-source learning platform, limited deployment footprint
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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