Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege student
-
DeliveryCompose message to administrator with script payload
-
ExploitServer stores content unsanitized
-
ExecutionAdmin opens inbox/message view
-
PersistPayload runs in admin browser context
-
ImpactSteal session or perform admin actions
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 authenticated Chamilo LMS account of any privilege level, including a student (PR:L), and relies on the built-in private messaging feature that lets a sender choose an arbitrary recipient - enabling a low-privilege user to directly target an administrator. Exploitation succeeds only against affected versions 2.0.0 through at least 2.1.0 (fixed in 2.0.1) where Message.content is stored without server-side sanitization and rendered as raw HTML in MessageShow.vue and view_message.html.twig. The limiting factor is user interaction (UI:R): the payload fires only when the recipient opens their inbox or the message view - though no link click is needed, so normal inbox usage triggers it. There is no unauthenticated path; an account and the messaging feature being enabled are prerequisites. |
| Impact | This is a stored (persistent) cross-site scripting flaw (CWE-79) whose severity signals are strong but whose real-world urgency is moderate. The vendor CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H = 9.0) is well-supported by the source evidence: the fixed Twig template previously wrapped output in |
| Exploit ScenarioDerived | A logged-in student composes a private message addressed to an administrator with a payload such as an image/script tag in the body; Chamilo stores it without sanitization. When the administrator opens their inbox or the message view, the script executes in the admin's authenticated browser context, allowing session/cookie theft or forged administrative actions. No public exploit code is identified in the provided data, but the exploit is trivial to construct given the confirmed unsanitized |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 17, 2026
Stored cross-site scripting in Chamilo LMS 2.x allows any authenticated user - including a low-privilege student - to inject persistent JavaScript into an administrator's browser by sending a private message through the platform's built-in messaging feature, which permits the sender to select an arbitrary recipient. The payload executes automatically when the administrator opens their routine inbox or message view, with no link click required, enabling session credential theft and actions performed with the administrator's privileges. Affected versions are 2.0.0 through at least 2.1.0 (EUVD narrows the fixed boundary to releases below 2.0.1), and a vendor patch is available in 2.0.1; no public exploit code was identified at time of analysis and there is no CISA KEV listing, but the very low attacker bar - an ordinary student account - makes timely patching important.
RemediationAI
Vendor-released patch: upgrade Chamilo LMS to 2.0.1 (release https://github.com/chamilo/chamilo-lms/releases/tag/v2.0.1, fix commit b2c91c021fc5ab7e91feb4927c4c676f77034ac5), which adds src/CoreBundle/Serializer/Normalizer/MessageNormalizer.php to sanitize Message.content with Security::remove_XSS(content, STUDENT) and removes the blanket {%% autoescape false %%} wrapper in the message view template - because the advisory text and EUVD disagree on the upper bound of the vulnerable range, verify the installed tag rather than assuming a 2.1.x build is safe. If upgrading immediately is not possible, the highest-value compensating control is to remove the delivery path: disable the private messaging module or restrict recipients so low-privilege accounts (students) cannot address messages to administrators, accepting the loss of legitimate internal communication. A second option is to manually backport the template change - delete {%% autoescape false %%} and force escaping of message.content rather than emitting it raw - but this will visibly break intentional HTML formatting in existing messages. Deploying the upstream MessageNormalizer alone also reduces risk, though STUDENT-level filtering still allows a limited HTML subset, leaving residual markup-based exposure. A restrictive Content-Security-Policy can blunt script execution as defense in depth but commonly breaks rich LMS content and must be tested. Advising administrators not to read messages from unknown senders is not a reliable mitigation, since the payload fires on ordinary inbox load without any link click. No public exploit code was identified at time of analysis and the issue is not in CISA KEV, but the trivial prerequisite of an ordinary student account justifies prompt patching.
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
Chamilo LMS is a PHP/Symfony learning management system whose private messaging is served by both a Twig template (public/main/template/default/message/view_message.html.twig) and a Vue.js component (assets/vue/views/message/MessageShow.vue). The flaw is CWE-79 (improper neutralization of input during web page generation, i.e. stored/persistent XSS): the Message.content field was persisted without server-side sanitization, and the Twig template wrapped the entire message body in a {%% autoescape false %%} block, which disabled context-aware output escaping for the injected content, while the Vue view rendered the same value as raw HTML. Because the message creation flow lets the sender choose any user as recipient, a student can address attacker-controlled markup directly to an administrator, and the script runs in the administrator's authenticated session when the message is merely viewed. The upstream fix removes the blanket autoescape-disabling block, keeps explicit |raw only on the intended content field, and introduces src/CoreBundle/Serializer/Normalizer/MessageNormalizer.php, a Symfony serializer normalizer that passes Message.content through Security::remove_XSS(content, STUDENT) before it is returned to the client. Note that STUDENT-level filtering permits a restricted HTML subset rather than stripping all markup, so the fix reduces but does not eliminate markup-based abuse. The assessed vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L reflects network delivery, low complexity, a required low-privilege account, and user interaction limited to opening the inbox, with scope change (S:C) because script executes in the higher-privileged administrator's browser context; the NVD-style score of 9.0 differs only by rating availability impact as High rather than Low.
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:H
Authenticated low-priv sender (PR:L) over the network, victim must open the message (UI:R); script runs in another user's context so S:C, enabling session theft (C:H) and admin actions (I:H); availability impact is secondary (A:L) not full.
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 through at least 2.1.0, Chamilo LMS stores private Message.content without server-side sanitization and renders it as HTML in assets/vue/views/message/MessageShow.vue and public/main/template/default/message/view_message.html.twig. An authenticated low-privilege user, including a student, can directly address crafted message content to an administrator because the message creation flow permits a sender to select another user as the recipient. The content executes in the recipient's browser when the recipient opens the routine inbox or message view, without requiring a link click, and can expose session credentials or permit actions as the administrator. This vulnerability is fixed in 2.0.1.
Technical POC Analysis
This is stored cross-site scripting, CWE-79.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical stored cross-site scripting flaw in Chamilo LMS versions 2.0.0 through at least 2.1.0 lets any ordinary account holder-including a student-silently plant persistent code in an administrator's inbox, which then runs automatically when that administrator opens their messages. Successful exploitation effectively hands an outside user the administrator's session and the ability to act with full platform privileges, putting student records, course content, and institutional data at risk. No public exploit code or active exploitation has been observed, but the exceptionally low skill and access bar makes this a priority remediation item for any institution running the affected releases.
Apply vendor patch.
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-82419
NVD
CVE.org
EPSS
GitHub
Exploit-DB