Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Chamilo instance
-
DeliveryReach custom form with attacker-influenced element name
-
ExploitInject PHP via QuickForm element name
-
Executioneval() executes payload as web server
-
ImpactFull server compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Eval input sanitization
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a non-default code path in which user-controlled input reaches a QuickForm element name - specifically a developer-written plugin or a misconfiguration, since standard Chamilo forms use hardcoded element names and are therefore NOT exploitable. The vulnerable sinks are the eval() calls in the vendored PEAR HTML_QuickForm libraries (element.php _findValue/_prepareValue and file.php _findValue). Limiting factors: default/standard installations are not exploitable without such a custom path; the vulnerable path is attacker-uncontrolled (hence the high attack complexity); and reaching the affected forms generally requires authenticated access. Fully remediated only by updating to 1.11.40 or 2.0.1, which replace the eval()-based array construction with safe preg_split parsing. |
| Impact | This is a conditional, environment-dependent RCE that should be treated as moderate priority rather than an emergency. The input CVSS 3.1 vector (AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H, score 6.6) already encodes the two biggest dampeners: AC:H reflects that exploitation depends on an attacker-uncontrolled precondition (a developer-written plugin or misconfiguration that routes user input into QuickForm element names), and PR:H indicates privileged access is needed. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with the dampened risk. No EPSS score, no CISA KEV listing, and no exploit/PoC code were provided - the only references are the GHSA advisory, three remediation commits, and the two fixed release tags, so there is no public exploit identified at time of analysis. The signals are internally consistent rather than conflicting: a high technical impact (full server compromise where the vulnerable path exists) is gated behind a code path that the vendor explicitly states does not occur in standard Chamilo forms, which use hardcoded element names. The practical takeaway: critical impact but low likelihood on default deployments; real risk concentrates in sites running custom/third-party plugins that pass user input to form element names. |
| Exploit ScenarioDerived | On a Chamilo site whose developer has written a custom plugin (or misconfiguration) that lets user-supplied data become a QuickForm element name, an attacker who can reach that form submits a crafted element name that is interpolated into one of the vendored PEAR HTML_QuickForm eval() calls, executing arbitrary PHP as the web server and compromising the host. Against a default Chamilo install this does not work because form element names are hardcoded, and no public exploit code is available. Attack complexity is high (AC:H) precisely because the vulnerable code path is non-default and attacker-uncontrolled. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Arbitrary PHP code execution can occur in Chamilo LMS when attacker-influenced data reaches the names of HTML_QuickForm elements, because the vendored PEAR QuickForm code builds array accesses through eval() and therefore treats those names as PHP source. Exposure is conditional rather than universal: stock Chamilo forms hardcode their element names and are not exploitable, so only installations running a developer-written plugin or a misconfiguration that routes user input into element names are at risk, and reaching those forms generally requires an authenticated account with low privileges while the vulnerable path itself is attacker-uncontrolled. Where such a path does exist the outcome is full server compromise; versions 1.11.40 and 2.0.1 replace the eval() construction with safe key parsing, and no public exploit code was identified at time of analysis.
RemediationAI
Upgrade to Chamilo LMS 1.11.40 (1.x line) or 2.0.1 (2.x line); these releases replace the eval()-based array construction in the vendored PEAR HTML_QuickForm files (element.php and file.php) with preg_split key traversal, as shown in commits 99d407a30e03c06cf764649dae85b4043877959a, a7fcc222bd7a7c09fb1d84173f710154c019bb7d and c497f7ef7fadeabb80ba27046a3ad5ce0edfc139. Because only the eval()'d names are dangerous, an interim compensating control is to audit every custom plugin or local modification that passes request data into form element names and replace dynamic names with fixed literals or a strict allowlist lookup - the trade-off is that any feature relying on user-supplied field names must be reworked before it will work. Restricting access to such custom forms to trusted authenticated users reduces exposure but does not remove the underlying sink, and neither workaround substitutes for updating, which is the only complete fix.
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 bundles an old, vendored copy of the PEAR HTML_QuickForm library under public/main/inc/lib/pear/HTML/QuickForm/, and several methods (_findValue and _prepareValue in element.php, _findValue in file.php) constructed PHP expressions from an element's name string - for example turning a name such as extra_statusocial[extra_statusocial] into an eval()'d array index - so that nested form values and $_FILES entries could be looked up. Because the element name is interpolated into code that is then passed to eval(), any name containing PHP syntax is executed; this is CWE-95, eval injection, and it is a code-construction flaw rather than a parser or memory-safety issue. The upstream fix removes the eval() calls entirely: names are split on bracket delimiters with preg_split and walked key by key, and the file-upload handler now inspects $_FILES with array_key_exists instead of generating a code string. The CPE cpe:2.3:a:chamilo:chamilo-lms covers the affected release line without version granularity, while the advisory data identifies the 1.x line before 1.11.40 and the 2.x line before 2.0.1 (the composer package metadata lists 2.0.0 as vulnerable and 2.0.1 as fixed). Severity assessments differ slightly between sources on privileges required, and the high attack complexity reflects that whether the eval() sink is reachable at all depends on how a given site's forms were written; the trigger path for any specific deployment is not described in the available sources.
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:H/PR:H/UI:N/S:U/C:H/I:H/A:H
AC:H because exploitation depends on a non-default plugin/misconfiguration routing input to element names; PR:L as reaching the affected forms generally needs an authenticated session; eval() grants full code execution so C/I/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Chamilo LMS is an open-source learning management system. In the 1.x line before 1.11.40, and the 2.x line before 2.0.1, multiple eval() calls in the vendored PEAR HTML_QuickForm libraries can execute arbitrary PHP code if form element names contain attacker-influenced data. Standard Chamilo forms use hardcoded element names; exploitation requires a developer-specific plugin or misconfiguration that lets user input reach those element names. Where that conditional path exists, the impact can be full server compromise. This issue is fixed in versions 1.11.40 and 2.0.1.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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-113999
NVD
CVE.org
EPSS
GitHub
Exploit-DB