Skip to main content

Chamilo LMS CVE-2026-45144

| EUVDEUVD-2026-113996 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-30 GitHub_M
8.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Register or self-register student account
  2. Delivery
    Inject HTML/JS into profile rich-text fields
  3. Exploit
    Share public /user/{username} profile link
  4. Install
    Victim (incl. admin) opens profile
  5. C2
    Payload executes in victim browser
  6. Execute
    Exfiltrate session/JWT/localStorage
  7. Impact
    Account takeover

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

The attacker must hold at least a ROLE_STUDENT account to write HTML into their own profile fields (firstname, lastname, competences, openarea, teach, diplomas); if the instance has self-registration enabled, an otherwise anonymous attacker can obtain that role, effectively making this exploitable pre-auth. The vulnerable path is the anonymously reachable GET /user/{username}, which renders those fields inside {% autoescape false %} with no server-side sanitization on the write path. Exploitation is limited to Chamilo LMS versions 2.0.0 up to (but not including) 2.0.1, and requires victim interaction: a visitor (potentially an administrator) must follow the public profile link for the stored payload to fire. Deployments that disable self-registration raise the bar to an authenticated student account; the fix in 2.0.1 (updating is the vendor's remediation) removes the autoescape block and sanitizes the fields.

Impact

This is a credible, above-average-priority issue rather than an inflated high-CVSS score. The CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L, 8.9) is well supported by the evidence: a stored XSS (CWE-79) where six user-editable profile fields are rendered inside {% autoescape false %} with no write-path sanitization, confirmed by the vendor commit diff. The scope change (S:C) and high confidentiality/integrity reflect that the payload executes in any visitor's browser - including administrators - enabling account takeover via session/JWT/localStorage theft. PR:L (an attacker needs at least a ROLE_STUDENT account) is a genuine limiter, but the description notes self-registration, when enabled, lets an anonymous attacker obtain that role, which is why the GHSA titles it 'Pre-auth stored XSS'; whether a given deployment is effectively pre-auth depends on that configuration. UI:R is also a real limiter - a victim must follow the public profile link. No EPSS score and no KEV status were provided, and the references contain only the vendor advisory, fix commit, and release - no PoC/exploit reference - so there is no public exploit identified. The vuln.today Decision label is 'this_week' (not act_now/emergency), consistent with a serious-but-not-actively-exploited flaw. One conflict to verify: the description and fix both say versions 2.0.0 up to (not including) 2.0.1, yet the advisory text states the bug was 'Verified live on Chamilo 2.1.0 (commit b543d3a)' - confirm the true affected range with the vendor.

Exploit ScenarioDerived

An attacker registers (or uses an existing ROLE_STUDENT account; self-registration, if enabled, makes this trivial) and plants an HTML/JavaScript payload in profile fields such as competences, openarea, teach, or diplomas. They then distribute the public link /user/<attacker> via a forum post, shared link, or staff-onboarding context; when an administrator or other visitor opens it, the script runs in their session and exfiltrates their session cookie, JWT, or localStorage to the attacker, leading to account takeover. No public exploit code is identified, but the mechanism is fully documented in the vendor advisory and fix commit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% 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 Chamilo LMS 2.0.0 through releases before 2.0.1 lets an account holding at least ROLE_STUDENT plant HTML in six user-editable profile fields (firstname, lastname, competences, openarea, teach, diplomas), which are rendered unescaped on the anonymously reachable GET /user/{username} page, so the payload executes in the browser of any visitor, including administrators, and can lead to account takeover via session, JWT or localStorage exfiltration. Exploitation requires a student-level account (self-registration, where enabled, lets an otherwise anonymous attacker obtain that role) plus victim interaction - a visitor must follow the public profile link - and no public exploit identified at time of analysis.

RemediationAI

Upgrade Chamilo LMS to 2.0.1, the vendor-released patch (release: https://github.com/chamilo/chamilo-lms/releases/tag/v2.0.1; advisory: https://github.com/chamilo/chamilo-lms/security/advisories/GHSA-9833-c7cj-x9xm), which removes the {% autoescape false %} block and sanitises the profile fields with \Security::remove_XSS($v, STUDENT) in UserController::profile(); the underlying diff is commit 0ba260a851ef48506814baa7a20534c8f0c35057, which can be reviewed or backported if an immediate upgrade is not possible on a fork. Because the vulnerable page is anonymously reachable, disabling self-registration reduces exposure from unauthenticated attackers to those already holding a student account, but it does not remove the stored-XSS sink and should be treated only as a stop-gap until 2.0.1 is applied. The advisory's further suggestion of gating /user/{username} behind ROLE_USER would eliminate anonymous profile viewing but changes intended public-profile behaviour, so weigh it against functional requirements. Updating to 2.0.1 is the vendor's complete remediation.

Affected VersionsENISA

chamilo-lms 2.0.0, < 2.0.1

Affected Packages

euvd chamilo_lms fix: 2.0.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

The flaw is CWE-79 stored cross-site scripting rooted in the Twig template src/CoreBundle/Resources/views/User/profile.html.twig, which wrapped the profile header and the competences, openarea, teach and diplomas fields in a {% autoescape false %} block while the write path applied no server-side sanitisation to those user-supplied values. Because GET /user/{username} is anonymously reachable, content persisted by a low-privileged ROLE_STUDENT user is served to any visitor. The assessed CVSS vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N) captures the prerequisites: network reachability, low privileges on the write side, mandatory victim interaction, and scope change because the payload runs in the victim's browser context, with high confidentiality and integrity impact. The 2.0.1 fix removes the autoescape block, escapes the username/firstname/lastname output, and sanitises the rich-text fields in UserController::profile() through \Security::remove_XSS($v, STUDENT) before rendering. CPE data (cpe:2.3:a:chamilo:chamilo-lms:*:*:*:*:*:*:*:*) is a wildcard entry, so the authoritative version constraint is the composer package metadata for chamilo/chamilo-lms: vulnerable >= 2.0.0, < 2.0.1.

Know when Chamilo Lms 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 8.9 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L
vuln.today AI 8.7 HIGH

Stored XSS needs a low-privilege student account (PR:L) and a victim clicking the profile link (UI:R); it executes in the victim's browser across a trust boundary (S:C) with high confidentiality/integrity via account takeover and no direct availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:H/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
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
Low

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 16:03 EUVD
CVE Published
Oct 30, 2026 - 14:27 cve.org
HIGH 8.9

DescriptionCVE.org

Chamilo LMS is an open-source learning management system. From 2.0.0 until 2.0.1, GET /user/{username} is anonymously reachable and renders six user-editable profile fields (firstname, lastname, competences, openarea, teach, and diplomas) inside {% autoescape false %}, without server-side sanitization on the write path. A ROLE_STUDENT attacker can plant HTML in their own profile; self-registration, when enabled, lets an otherwise anonymous attacker obtain that role. The stored content executes in the browser of any visitor, including administrators, who follows the public profile link, potentially allowing account takeover through session, JWT, or localStorage exfiltration. This issue is fixed in version 2.0.1.

Technical POC Analysis

CWE-79 (stored / persistent cross-site scripting).

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

CVE-2026-45144 is a high-severity stored cross-site scripting vulnerability in Chamilo LMS (versions 2.0.0 to before 2.0.1). Authenticated attackers with only student-level access can plant malicious HTML in profile fields, which executes when any visitor views the public profile page, potentially leading to session theft and full account takeover, including administrator accounts. This puts sensitive data and system integrity at risk, especially in environments where self-registration is enabled, as attackers can easily obtain the necessary role.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: implementing a WAF rule to block HTML content in the six profile fields, disabling public profiles or self-registration until patched, enforcing strict output encoding on the /user/{username} page, and restricting profile editing capabilities to trusted users.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
niche open-source LMS, limited enterprise footprint versus Moodle
Social Media
1
Sightings
Data Quality
4 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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

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

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

CVE-2025-50187 CRITICAL POC
9.8 Mar 02

Chamilo LMS prior to 1.11.28 has a code injection through SOAP request parameters enabling remote code execution.

CVE-2025-50192 CRITICAL POC
9.8 Mar 02

Chamilo LMS prior to 1.11.30 has a time-based SQL injection in a different endpoint, providing an additional database ex

CVE-2025-50190 CRITICAL POC
9.8 Mar 02

Chamilo LMS prior to 1.11.30 has an error-based SQL injection enabling database extraction.

CVE-2021-35414 CRITICAL POC
9.8 Dec 03

Chamilo LMS v1.11.x was discovered to contain a SQL injection via the doc parameter in main/plagiarism/compilatio/upload

CVE-2019-13082 CRITICAL POC
9.8 Jun 30

Chamilo LMS 1.11.8 and 2.x allows remote code execution through an lp_upload.php unauthenticated file upload feature. Ra

CVE-2025-50199 CRITICAL POC
9.1 Mar 02

Chamilo LMS prior to 1.11.30 has a blind SSRF vulnerability enabling internal network reconnaissance from the learning p

CVE-2023-4220 MEDIUM POC
6.1 Nov 28

Unrestricted file upload in big file upload functionality in `/main/inc/lib/javascript/bigupload/inc/bigUpload.php` in C

CVE-2025-50189 HIGH POC
8.8 Mar 02

Chamilo is a learning management system. [CVSS 8.8 HIGH]

CVE-2025-52468 HIGH POC
8.8 Mar 02

Chamilo is a learning management system. Prior to version 1.11.30, an input validation vulnerability exists when importi

CVE-2024-30616 HIGH POC
8.8 Nov 04

Chamilo LMS 1.11.26 is vulnerable to Incorrect Access Control via main/auth/profile. Rated high severity (CVSS 8.8), thi

CVE-2023-4226 HIGH POC
8.8 Nov 28

Unrestricted file upload in `/main/inc/ajax/work.ajax.php` in Chamilo LMS <= v1.11.24 allows authenticated attackers wit

CVE-2023-4225 HIGH POC
8.8 Nov 28

Unrestricted file upload in `/main/inc/ajax/exercise.ajax.php` in Chamilo LMS <= v1.11.24 allows authenticated attackers

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