Executive Summary
Chamilo LMS has patched a critical stored cross-site scripting vulnerability, tracked as CVE-2026-45143 (CVSS 9.0), in its internal private messaging feature. From version 2.0.0 through at least 2.1.0, message content is stored without server-side sanitization and rendered directly as HTML — and because any user can address a message to any other user, including an administrator, a low-privilege student account can trigger script execution directly in an admin's browser.
The issue is fixed in Chamilo 2.0.1 (GitHub advisory GHSA-x88v-rg6r-vqq6).
Vulnerability Overview
| Attribute | Value |
|---|---|
| CVE ID | CVE-2026-45143 |
| CVSS Score | 9.0 (Critical) |
| CWE | CWE-79: Improper Neutralization of Input During Web Page Generation |
| Component | Message.content rendering — assets/vue/views/message/MessageShow.vue, public/main/template/default/message/view_message.html.twig |
| Affected | Chamilo LMS 2.0.0 – 2.1.0 |
| Fixed Version | 2.0.1 |
| Disclosed | September 17, 2026 |
| GitHub Advisory | GHSA-x88v-rg6r-vqq6 |
Root Cause and Attack Chain
Chamilo's private messaging feature stores Message.content without server-side sanitization and renders it as raw HTML in two places: the Vue-based message view (MessageShow.vue) and the Twig-templated legacy view (view_message.html.twig).
The attack requires nothing more than a normal, authenticated low-privilege account:
- A student (or any authenticated user) composes a private message containing crafted HTML/JavaScript.
- Because Chamilo's message-creation flow allows a sender to freely select any other user as the recipient, the student addresses the message directly to an administrator.
- When the admin opens their routine inbox or message view — no special link click or social engineering needed — the injected script executes in the admin's authenticated session.
- The script can steal session credentials or perform actions with admin privileges, effectively escalating a student account into full administrative compromise.
This "no click required" property is what pushes the severity to critical: the victim doesn't need to be tricked into anything beyond normal use of their own inbox.
Impact
- Privilege escalation: any authenticated user, regardless of role, can compromise an administrator's session.
- Session/credential theft: injected script runs with the admin's cookies and CSRF context.
- Downstream compromise: from an admin session, an attacker can create accounts, alter grades, access student PII, or pivot further into the platform.
Remediation
- Upgrade to Chamilo 2.0.1 or later, which introduces server-side message-content sanitization.
- Until patched, consider restricting messaging permissions so low-privilege roles cannot freely address messages to administrator accounts.
- Review message history for suspicious HTML/script payloads sent to admin or staff accounts during the exposure window.
- Rotate admin session tokens and audit recent admin-session activity if the platform was running an affected version.