Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconRegister or self-register student account
-
DeliveryInject HTML/JS into profile rich-text fields
-
ExploitShare public /user/{username} profile link
-
InstallVictim (incl. admin) opens profile
-
C2Payload executes in victim browser
-
ExecuteExfiltrate session/JWT/localStorage
-
ImpactAccount 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 |
| 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 |
| 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Chamilo Lms
View allChamilo LMS prior to 1.11.28 has a code injection through SOAP request parameters enabling remote code execution.
Chamilo LMS prior to 1.11.30 has a time-based SQL injection in a different endpoint, providing an additional database ex
Chamilo LMS prior to 1.11.30 has an error-based SQL injection enabling database extraction.
Chamilo LMS v1.11.x was discovered to contain a SQL injection via the doc parameter in main/plagiarism/compilatio/upload
Chamilo LMS 1.11.8 and 2.x allows remote code execution through an lp_upload.php unauthenticated file upload feature. Ra
Chamilo LMS prior to 1.11.30 has a blind SSRF vulnerability enabling internal network reconnaissance from the learning p
Unrestricted file upload in big file upload functionality in `/main/inc/lib/javascript/bigupload/inc/bigUpload.php` in C
Chamilo is a learning management system. [CVSS 8.8 HIGH]
Chamilo is a learning management system. Prior to version 1.11.30, an input validation vulnerability exists when importi
Chamilo LMS 1.11.26 is vulnerable to Incorrect Access Control via main/auth/profile. Rated high severity (CVSS 8.8), thi
Unrestricted file upload in `/main/inc/ajax/work.ajax.php` in Chamilo LMS <= v1.11.24 allows authenticated attackers wit
Unrestricted file upload in `/main/inc/ajax/exercise.ajax.php` in Chamilo LMS <= v1.11.24 allows authenticated attackers
EUVD-2026-113996
NVD
CVE.org
EPSS
GitHub
Exploit-DB