Skip to main content

Open edX Platform CVE-2026-85271

| EUVDEUVD-2026-83443 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-18 GitHub_M
6.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Enroll in course as student
  2. Delivery
    Post discussion with CSS markup in title
  3. Exploit
    Unsanitized title stored in notification content
  4. Execution
    Digest/batched email renders title as safe HTML
  5. Persist
    Victim learner opens email in CSS client
  6. Impact
    Tracking pixel fires or spoofed/phishing content shown

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

Requires an attacker enrolled as a student in a course who can submit a discussion post_title (via lms/djangoapps/discussion/rest_api/discussions_notifications.py). The target must have digest or batched email notifications enabled - the immediate-email path is NOT affected because it strips title markup and renders a separately sanitized body. Exploitation further requires a victim (another learner) to open the resulting notification email in an email client that renders CSS/HTML. Limiting factors: course enrollment/authentication of the poster, victim user interaction (opening the email), the non-default reliance on digest/batched (not immediate) email delivery, and impact bounded to tracking/spoofing/phishing rather than code execution. Applies to Open edX from Redwood up to (not including) Ulmo and Verawood.1.

Impact

Real-world risk is moderate-to-low despite the 6.1 vendor CVSS. All exploitation signals point to a low-urgency issue: no EPSS score, not in CISA KEV, and no public exploit code (no public exploit identified at time of analysis). The CVSS vector (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N) shows only Low confidentiality and Low integrity impact with no availability effect, and requires victim user interaction (UI:R - a second learner must open a digest/batched email in a CSS-rendering client). A key data conflict exists: the vector lists PR:N (unauthenticated), but the description states the injecting party must be 'an enrolled student' who can place markup in a discussion post_title - that is a course-enrolled, authenticated actor, so PR:L is more defensible. Also note the impact class is overstated in name: CWE-79 tags this XSS, but the source-code fix and description show it is HTML/CSS injection into email (email clients do not execute JavaScript), enabling email-open tracking, content spoofing and phishing - not script execution or session theft. Bottom line: legitimate to patch on a normal cycle, but not an emergency; the phishing/tracking payoff and required enrollment + victim email-open make it a targeted-abuse issue rather than a mass-exploitable one.

Exploit ScenarioDerived

An enrolled student creates or edits a discussion thread whose title contains CSS-capable markup (e.g. a <style> block or tracking-styled element). When the platform generates digest or batched-email notifications, the unsanitized post_title is rendered as safe HTML in digest_content.html, so when another learner opens the email in a CSS-rendering client the injected markup fires - enabling email-open tracking, visual content spoofing, or a phishing lure. No public exploit code exists, but the fix commit and regression tests concretely demonstrate the injection payloads.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 18, 2026

HTML/CSS injection in Open edX Platform discussion-notification emails allows an authenticated, enrolled student to embed CSS-capable markup in a discussion post title, which is then interpolated without sanitization into digest and batched-email notification content and rendered as trusted HTML; when another learner opens that email in a client that renders CSS, the attacker gains email-open tracking, content spoofing, and a credible phishing vector. The issue affects releases from Redwood up to (but not including) Ulmo and prior to Verawood.1, and is fixed in Ulmo and Verawood.1. Exploitation requires course enrollment, digest or batched (non-immediate) notification delivery, and victim interaction with the email, and no public exploit has been identified at time of analysis.

RemediationAI

Upgrade to a Vendor-released patch: Ulmo (release/ulmo.4) or Verawood.1, which escape user-controlled notification context values while preserving structural tag keys; operators running Redwood or an interim release should apply the upstream commits 2af03d21b4142e53e375c7f3699b313e92ec5121, 52f2b3bb3e6fac2601c29e8f926c81498d20bb0b, and 5eae6e51a8797cd3b87cc132f5de73d52561c4d7 as backports if an immediate version jump is not feasible. Detailed guidance is in the vendor advisory at https://github.com/openedx/openedx-platform/security/advisories/GHSA-rv5w-f4r5-h77g. Where patching must be deferred, the most direct mitigation is to disable digest and batched email notifications for the deployment so the affected rendering path is never reached, since the immediate-email path strips title markup and renders a separately sanitized body; the trade-off is that learners lose consolidated digest mail and notification volume increases per-event. Supplementary controls include restricting who may post to discussion forums pending the fix and advising recipients to block remote content and CSS in their mail clients, which reduces tracking and spoofing fidelity but does not eliminate the underlying content injection. Note that KEV and exploit signals are absent, so exposure is bounded to tracking, spoofing, and phishing against users who open notification email in a CSS-rendering client, not code execution.

Affected VersionsENISA

openedx-platform release/redwood.1, < release/ulmo.4

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

The flaw is a CWE-79 improper-neutralization issue in the Open edX notifications Django app. get_notification_content in openedx/core/djangoapps/notifications/base_notification.py interpolates a context dictionary into per-notification-type content templates using Python str.format, and post_title values originating from lms/djangoapps/discussion/rest_api/discussions_notifications.py were passed through unescaped. add_additional_attributes_to_notifications in openedx/core/djangoapps/notifications/email/utils.py then attaches that content to the notification, and digest_content.html renders it with the |safe filter, deliberately bypassing Django's autoescaping. Because digest and batched emails are rich HTML, injected <style> or other CSS-capable markup is interpreted by the recipient's mail client rather than displayed as text. The immediate-email path is unaffected: it discards the title markup and renders a separately sanitized body. The upstream fix adds django.utils.html.escape to every context value before formatting, exempting only the structural keys 'p' and 'strong' that must remain real HTML tag names for the templates; regression tests assert that <style> and <script> payloads are escaped while structural tags are preserved. This maps to the assessed CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, where scope changes because the crafted content is delivered and interpreted in an external mail client context.

Know when Openedx 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 6.1 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

Injecting party must be an enrolled student so PR:L not PR:N; victim must open the email (UI:R); injected content crosses into another user's email context (S:C); impact limited to tracking/spoofing (C:L/I:L, A:N).

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:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

Open edX Platform enables the authoring and delivery of online learning at any scale. From Redwood until Ulmo and Verawood.1, the add_additional_attributes_to_notifications function in openedx/core/djangoapps/notifications/email/utils.py assigns notification content without sanitizing discussion-title values produced by get_notification_content in openedx/core/djangoapps/notifications/base_notification.py. An enrolled student can place CSS-capable markup in the post_title value supplied by lms/djangoapps/discussion/rest_api/discussions_notifications.py. Digest and batched-email rendering then passes that value through openedx/core/djangoapps/notifications/templates/notifications/digest_content.html as safe HTML, allowing email-open tracking and content spoofing or phishing when another learner opens a CSS-rendering client. The immediate-email path is not affected because it strips title markup and renders a separately sanitized body. This issue is fixed in Ulmo and Verawood.1.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
popular open-source LMS, common in education but not ubiquitous
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
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

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
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.

CVE-2022-46147 MEDIUM POC
6.1 Nov 28

Drag and Drop XBlock v2 implements a drag-and-drop style problem, where a learner has to drag items to zones on a target

CVE-2026-42858 CRITICAL
9.9 May 11

Server-side request forgery in the Open edX Platform SAML provider-data sync endpoint lets an authenticated user holding

CVE-2024-43782 CRITICAL
9.8 Aug 23

This openedx-translations repository contains translation files from Open edX repositories to be kept in sync with Trans

CVE-2026-53635 HIGH
7.6 Sep 02

Missing authorization on the `set_course_mode_price()` instructor endpoint in Open edX Platform allows any authenticated

CVE-2026-55421 MEDIUM
6.8 Sep 02

Server-Side Request Forgery with full response exfiltration in Open edX Platform's Studio CMS video download endpoint al

CVE-2026-35404 MEDIUM
6.1 Apr 06

Open edX Platform versions prior to commit 76462f1e5fa9b37d2621ad7ad19514b403908970 suffer from an open redirect vulnera

CVE-2026-42857 MEDIUM
5.4 May 11

Stored cross-site scripting (XSS) via CSS injection in Open edX Platform allows enrolled students to inject arbitrary CS

CVE-2023-23611 MEDIUM
5.4 Jan 26

LTI Consumer XBlock implements the consumer side of the LTI specification enabling integration of third-party LTI provid

CVE-2026-34736 MEDIUM
5.3 Apr 02

Open edX Platform from maple release through ulmo allows unauthenticated attackers to bypass email verification by explo

CVE-2026-53636 MEDIUM
4.7 Sep 02

OAuth nonce replay attacks against Open edX LMS's LTI 1.1 Provider endpoint allow an attacker who intercepts a valid LTI

CVE-2026-85272 MEDIUM
4.3 Sep 18

Authenticated course authors or staff holding course-import permission in Open edX Studio (CMS) can break out of the int

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