Skip to main content

Chamilo LMS CVE-2026-45145

| EUVDEUVD-2026-113997 HIGH
Deserialization of Untrusted Data (CWE-502)
2026-10-30 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain DB write via SQLi or admin panel
  2. Delivery
    Inject serialized POP gadget into user_career.extra_data
  3. Exploit
    Reach unserialize() in career.lib.php or import_csv.php
  4. Execution
    Instantiate Symfony/Doctrine/Monolog gadget chain
  5. Impact
    Execute OS commands as web server user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the attacker to first write attacker-controlled serialized PHP data into the user_career.extra_data database column - the advisory names three concrete routes: a separate SQL injection, a compromised/malicious admin CSV import processed by public/main/cron/import_csv.php, or access to a lower-privilege admin panel that can populate user_career records. Additionally, the vulnerable unserialize() path must be reached (career diagram rendering in career.lib.php line 495, or the import_csv.php career-results cron at line 2768), and a usable POP gadget chain must exist in the autoloaded Symfony, Doctrine, or Monolog dependencies. Limiting factors: the flaw cannot be triggered by an unauthenticated single request on its own (PR:L and AC:H), it depends on obtaining a database-write primitive, and only Chamilo LMS 2.0.0 is affected (fixed in 2.0.1).

Impact

This is a genuine but conditional Remote Code Execution issue (CWE-502 PHP Object Injection) whose real-world priority is moderate rather than critical, despite the 7.5 'High' CVSS score. The supplied CVSS vector (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) encodes the central caveat: AC:H and PR:L reflect that the flaw is not directly exploitable on its own - the attacker must first obtain the ability to write crafted serialized data into the user_career.extra_data database column. No EPSS score was provided, the CVE is not listed in CISA KEV, and no working proof-of-concept or exploit code is present in the inputs - only the GHSA advisory and the fix commit, which document the vulnerable lines but not an exploitation routine. These signals are consistent with each other: a chaining/second-stage vulnerability with no confirmed exploitation. The vuln.today decision label is 'this_week', which matches a patch-promptly-but-not-emergency posture. Note one tension worth verifying: the description and CVSS use AV:N, but exploitation actually depends on a separate write primitive (SQL injection, malicious admin CSV import, or a lower-privilege admin panel) rather than a single network request, so the effective attack surface is narrower than 'network-reachable RCE' implies.

Exploit ScenarioDerived

An attacker who already holds a lower-privilege admin account (or has found a separate SQL injection) writes a crafted serialized PHP object into the user_career.extra_data column. When career.lib.php renders the career diagram or import_csv.php processes career results, the native unserialize() call instantiates the object and triggers a POP gadget chain in the autoloaded Symfony, Doctrine, or Monolog components, yielding OS command execution as the web server user. No public working exploit is present in the inputs, and the AC:H rating reflects that a prerequisite database-write primitive must be obtained first.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

PHP object injection in Chamilo LMS 2.0.0 can escalate to remote code execution: two code paths (career.lib.php line 495 and cron/import_csv.php line 2768) call PHP's native unserialize() on the user_career.extra_data database column without restricting allowed classes, so an attacker who can write crafted serialized data into that column can instantiate arbitrary objects and drive POP gadget chains in the bundled Symfony, Doctrine and Monolog libraries. The prerequisite write primitive is not available in a single request - the advisory names a separate SQL injection, a compromised admin CSV import, or a lower-privilege admin panel - and a usable gadget chain must also be present, which is why the assessed severity is High (7.5) but with AC:H and PR:L and the current priority is 'this week' rather than emergency. No public exploit code and no confirmed active exploitation were identified at time of analysis; vendor-released patch: Chamilo LMS 2.0.1.

RemediationAI

Vendor-released patch: upgrade Chamilo LMS to 2.0.1, which replaces both native unserialize() calls with UnserializeApi::unserialize('not_allowed_classes', ...) as shown in commit https://github.com/chamilo/chamilo-lms/commit/4da33d8fd317fe5d58041f3202dddc62282ef2fb and the v2.0.1 release notes (https://github.com/chamilo/chamilo-lms/releases/tag/v2.0.1); full details are in advisory GHSA-pr59-4rm7-ghwx. If upgrading cannot be done immediately, the effective controls target the database-write prerequisite rather than the sink: remediate any SQL injection reachable by the same users, restrict who can run the import_csv.php career-results cron and who holds the admin roles able to populate user_career records, and audit/clean existing user_career.extra_data rows for serialized payloads containing class names - with the trade-off that tightening admin and cron access reduces legitimate administrative functionality, and rewriting extra_data rows can corrupt career data that the application still needs to read back. Note that Chamilo 2.0.1's fix routes these values through the whitelist wrapper, so after upgrading verify that legitimately written extra_data records still decode under the restricted class policy. No vendor workaround beyond updating is described in the supplied sources.

Affected VersionsENISA

chamilo-lms < 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 root cause is CWE-502 (deserialization of untrusted data) in a PHP application. Chamilo stores per-user career data as a serialized PHP blob in the user_career.extra_data column; the two affected locations passed that blob straight to PHP's native unserialize() without the allowed_classes => false option, meaning any class name embedded in the payload is instantiated and its magic methods (__wakeup, __destruct, __toString) execute. Because the Composer autoloader pulls in Symfony, Doctrine and Monolog, POP gadget chains from those components become reachable and can be chained to OS command execution as the web server user. Notably the same file already contained a hardened wrapper - public/main/inc/lib/UnserializeApi.php, which enforces an allowed-class whitelist, and is used correctly at career.lib.php line 475 for a different field - so this is an inconsistency in applying an existing safe API rather than a missing capability. The fix commit 4da33d8fd317fe5d58041f3202dddc62282ef2fb replaces both native unserialize() calls with UnserializeApi::unserialize('not_allowed_classes', ...), and adds an emptiness guard in the cron path. The CPE cpe:2.3:a:chamilo:chamilo-lms:*:*:*:*:*:*:*:* is unversioned, but the package metadata and advisory scope the flaw to Composer package chamilo/chamilo-lms 2.0.0, fixed in 2.0.1. The trigger is not a network-reachable parse of attacker-supplied request data; the deserialization only fires on data already persisted in the database, which is why the attack path hinges on a separate database-write primitive.

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 7.5 HIGH
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.5 HIGH

AC:H and PR:L because exploitation requires a chained write primitive via an authenticated low-privilege account or injection, not a direct request; full C/I/A impact from RCE as the web server user.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

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

DescriptionCVE.org

Chamilo LMS is an open-source learning management system. Prior to 2.0.1, public/main/inc/lib/career.lib.php and public/main/cron/import_csv.php call PHP's native unserialize() on user_career.extra_data retrieved from the database without the allowed_classes: false safety option. An attacker able to write crafted serialized PHP objects to that column, for example through a separate SQL injection, a compromised admin CSV import, or a lower-privilege admin panel, can instantiate arbitrary PHP objects and trigger POP gadget chains in autoloaded Symfony, Doctrine, or Monolog components. This permits arbitrary OS commands as the web server user, compromising server confidentiality, integrity, and availability. This issue is fixed in version 2.0.1.

Technical POC Analysis

CWE-502 (Deserialization of Untrusted Data).

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

Chamilo LMS 2.0.0 contains a high-severity vulnerability (CVE-2026-45145) that could allow an attacker with some level of access to escalate to remote code execution. This affects organizations using Chamilo for learning management, potentially compromising sensitive data and system integrity. Leadership should care because exploitation requires a pre-existing foothold, but successful attacks could lead to full system compromise.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Medium
open-source LMS with moderate but education-sector-focused deployment, not ubiquitous
Social Media
1
Sightings
Data Quality
5 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.4%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.

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