Skip to main content

Moodle CVE-2026-102580

| EUVDEUVD-2026-89719 MEDIUM
Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') (CWE-470)
2026-09-30 fedora GHSA-xw58-hp5c-6wc2
4.3
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as user with Report Builder access
  2. Delivery
    Craft report audience with malicious class name
  3. Exploit
    Bypass audience class-name validation
  4. Execution
    Trigger arbitrary class instantiation
  5. Impact
    Create unintended internal objects altering app behavior

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V15 - Secure Coding and Architecture Reflection safety, class allowlisting
Exploitation Conditions

Exploitation requires an authenticated Moodle account that holds the capability to create or manage Report Builder audiences (the flaw lives in the Report Builder component's audience-class handling), so ordinary students or self-registered users cannot reach it - this is the PR:H limiter. The attacker must additionally supply a class name that defeats the component's audience-class validation and instantiates into something with effect, which the vendor rates as high complexity (AC:H). No user interaction by a victim is needed (UI:N), and the vector is network-reachable via the normal Moodle web interface, but the realistic risk is bounded to sites where semi-privileged report authors are untrusted. Impact is limited to integrity (unexpected internal objects / application behavior); no confidentiality or availability effect is described.

Impact

This is a low-real-risk issue despite being a code-instantiation flaw. The provided CVSS 3.1 vector (AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:L/A:N = 2.2 Low) is internally consistent and credible: exploitation requires high privileges (PR:H - access to Report Builder audience configuration, a capability normally held by managers/course creators, not ordinary users), high attack complexity (AC:H - the attacker must find a class-name value that both bypasses Moodle's audience allowlist validation and instantiates into something meaningful), and yields only limited integrity impact (I:L) with no confidentiality or availability loss. There is no EPSS score, no CISA KEV listing, and no public proof-of-concept in the provided data; exploitation status is therefore 'no public exploit identified at time of analysis.' No SSVC decision data was supplied. The CWE-470 (unsafe reflection / arbitrary class instantiation) classification does raise the theoretical ceiling - reflection flaws can sometimes escalate to object-injection or RCE - but the description explicitly limits the outcome to 'unauthorized creation of internal program objects' and 'unexpected application behavior,' and both NVD and the vendor scored it as merely I:L with no RCE claim. No signals conflict; every indicator (privileged access, high complexity, minimal impact, no exploitation evidence) points the same direction: real but very low priority. One caveat: the reported CWE-470 and the input Tag 'Authentication Bypass' disagree - the tag mischaracterizes an unsafe-reflection integrity bug.

Exploit ScenarioDerived

An authenticated Moodle user who already holds Report Builder audience-management privileges crafts a report and supplies a malicious, non-whitelisted PHP class name as the audience class. Because the class name is instantiated without proper validation, the platform constructs an unintended internal object, producing unexpected application state or behavior. No public exploit code is available, and the high privilege requirement means the attacker must already be a trusted report author.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 30, 2026

Authenticated Moodle users who hold Report Builder audience-management permissions can abuse an improperly validated audience class name to instantiate arbitrary internal PHP classes, producing unexpected internal objects and altered application behavior (CWE-470, unsafe reflection). The vendor and independent assessment both rate real-world risk as low: the assessed vector is CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:L/A:N (score 2.2), because reaching the flaw requires a semi-privileged authenticated account able to create or manage Report Builder audiences, and the attack is rated high complexity with no victim interaction. Impact is bounded to integrity - no confidentiality or availability effect is described - and no public exploit code or confirmed active exploitation was identified at time of analysis.

RemediationAI

Apply the upstream fix tracked as Moodle MDL-89078: the change is referenced in Moodle's git history (searchable at http://git.moodle.org/gw?p=moodle.git&a=search&h=HEAD&st=commit&s=MDL-89078), so upgrade to the maintenance release for your Moodle branch that contains that commit - the status is best described as 'Upstream fix available (PR/commit); released patched version not independently confirmed', meaning you should confirm the fixed version number in Moodle's advisory at https://moodle.org/mod/forum/discuss.php?d=482498 before upgrading, and Fedora users should follow https://access.redhat.com/security/cve/CVE-2026-102580 and https://bugzilla.redhat.com/show_bug.cgi?id=2543635 for the packaged rebuild. If you cannot patch immediately, the highest-value compensating control is to remove or tighten the Report Builder audience/report management capabilities from all roles except fully trusted administrators via Site administration > Users > Permissions > Define roles, which eliminates the semi-privileged insider population the PR:H prerequisite depends on; the trade-off is that legitimate report authors lose the ability to create or edit audiences and will need admin-mediated changes. As a stronger but more disruptive measure, disable or uninstall the Report Builder functionality (or block access to its report/audience editing endpoints via web server rules for non-admin roles) until the patch is applied - this breaks custom reporting entirely for affected users. Finally, audit role assignments and Moodle web logs for unexpected audience-creation or class-instantiation activity by non-admin accounts, since detecting the exploit requires reviewing who exercised Report Builder audience management, not just HTTP error codes.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause class is CWE-470, 'Use of Externally-Controlled Input to Select Classes or Code' (unsafe reflection). Moodle's Report Builder lets report authors define audiences, and audience definitions reference a class name that the component resolves and instantiates at runtime. Because the audience class name is not properly validated against an allow-list of expected audience types, PHP's dynamic class instantiation and autoloading can be steered toward other loaded or autoloadable classes within the Moodle codebase, creating internal program objects outside the component's intended contract. This is a classic reflection/serialization-adjacent weakness: the flaw is not memory corruption or remote code execution in itself, but unintended object construction whose downstream effects depend on which classes are reachable and how their constructors or side effects behave - hence the vendor's integrity-only, high-complexity rating (AC:H) rather than a higher-severity classification. The issue was tracked upstream under Moodle tracker issue MDL-89078, and Red Hat separately assigned CVE-2026-102580 (Red Hat Bugzilla 2543635) because Fedora packages Moodle. No CPE strings were supplied with the intelligence feed, so the exact affected branch/version matrix must be confirmed from Moodle's own advisory (forum discussion d=482498); the vulnerable surface is the Report Builder component present in modern Moodle 4.x-style releases that ship this subsystem.

Know when Moodle 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 (fedora) PRIMARY LOW
NVD 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 2.2 LOW

Report Builder audience management needs elevated capability (PR:H) and a validation-bypassing class name is non-trivial (AC:H); impact is limited to integrity (I:L) with no C or A effect.

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

Primary rating from Vendor (fedora).

CVSS VectorNVD

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

Lifecycle Timeline

3
Severity Changed
Oct 01, 2026 - 14:37 NVD
LOW MEDIUM
CVSS changed
Oct 01, 2026 - 14:37 NVD
2.2 (LOW) 4.3 (MEDIUM)
CVE Published
Sep 30, 2026 - 08:36 cve.org
LOW 2.2

DescriptionNVD

A flaw was found in Moodle. An authenticated attacker can supply an improperly validated audience class name to the Report Builder component, allowing arbitrary class instantiation. This vulnerability enables the unauthorized creation of internal program objects, which may result in unexpected application behavior.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
High
Moodle is one of the most widely deployed open-source LMS platforms in education
Data Quality
4 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Affected Products (CPE)NVD

cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*
cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*
cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*
cpe:2.3:a:moodle:moodle:*:*:*:*:*:*:*:*

More in Moodle

View all
CVE-2013-3630 MEDIUM POC
4.6 Nov 01

Moodle through 2.5.2 allows remote authenticated administrators to execute arbitrary programs by configuring the aspell

CVE-2021-21809 CRITICAL POC
9.1 Jun 23

A command execution vulnerability exists in the default legacy spellchecker plugin in Moodle 3.10. Rated critical severi

CVE-2024-43425 HIGH POC
8.1 Nov 07

A flaw was found in Moodle. Rated high severity (CVSS 8.1), this vulnerability is remotely exploitable, no authenticatio

CVE-2017-2641 CRITICAL POC
9.8 Mar 26

In Moodle 2.x and 3.x, SQL injection can occur via user preferences. Rated critical severity (CVSS 9.8), this vulnerabil

CVE-2025-34031 HIGH POC
7.5 Jun 24

The Moodle LMS Jmol plugin version 6.1 and earlier contains a path traversal vulnerability in jsmol.php. The query param

CVE-2013-4341 MEDIUM POC
4.3 Sep 16

Multiple cross-site scripting (XSS) vulnerabilities in Moodle through 2.2.11, 2.3.x before 2.3.9, 2.4.x before 2.4.6, an

CVE-2016-9187 HIGH POC
8.8 Nov 04

Unrestricted file upload vulnerability in the double extension support in the "image" module in Moodle 3.1.2 allows remo

CVE-2016-9186 HIGH POC
8.8 Nov 04

Unrestricted file upload vulnerability in the "legacy course files" and "file manager" modules in Moodle 3.1.2 allows re

CVE-2018-14630 HIGH POC
8.8 Sep 17

moodle before versions 3.5.2, 3.4.5, 3.3.8, 3.1.14 is vulnerable to an XML import of ddwtos could lead to intentional re

CVE-2018-1133 HIGH POC
8.8 May 25

An issue was discovered in Moodle 3.x. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, low a

CVE-2016-7919 HIGH POC
7.5 Oct 28

Moodle 3.1.2 allows remote attackers to obtain sensitive information via unspecified vectors, related to a "SQL Injectio

CVE-2021-47857 HIGH POC
7.2 Jan 21

Moodle 3.10.3 contains a persistent cross-site scripting vulnerability in the calendar event subtitle field that allows

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy