Moodle 4.3.x Release Notes
Comprehensive release notes and changelog for Moodle 4.3.x, including security patches, bug fixes, and feature updates across all supported versions.
October 2026
4.3.14
Released Oct 12, 20264.3.14+4.3.12:moodle
Notes
- Backports 11 advisories published since NES for Moodle 4.3.13 that apply to the 4.3 line. None has a CVE assigned by Moodle at the time of release; this page is updated as identifiers are published.
- CVEs are now assigned to the 18 advisories in 4.3.13 that had none at its release, and those entries below are updated.
$branchremains403and$maturityremainsMATURITY_STABLE, so Moodle 4.3 compatibility is unchanged.
Full Version: 4.3.14+4.3.12:moodle
Install this release with the installation guide, including the
database update. Moodle does not record the new $version until the update runs.
Use these values to verify your installation.
Build: 20261008 is the date this build was cut, not its release date.
| Check | Value |
|---|---|
Core $release | 4.3.14+4.3.12 (Build: 20261008) |
Core $version | 2023100914.00 |
Security Fixes
Severity follows Moodle's own rating for each advisory, as published in the Moodle security advisories.
Serious
- MSA-26-0042 - Blind SQL injection in profile availability condition (reject standard field names not in the allowlist). CVE not yet assigned | MDL-89484
- MSA-26-0041 - CSRF in XML grade imports.
import.phpnow rejects direct access outside key login, and interactive imports run from the sesskey-protected form. CVE not yet assigned | MDL-84545 - MSA-26-0032 - User profile information disclosure via grade web service (
get_gradable_usersnow requiresmoodle/site:viewuseridentityinstead ofmoodle/course:viewparticipants). CVE not yet assigned | MDL-89381 - MSA-26-0031 - SQL injection in question bank web service (
entryidis cleaned as an integer and bound as a query parameter). CVE not yet assigned | MDL-89383 - MSA-26-0030 - SSRF in URL downloader via IPv4-mapped IPv6 addresses (
address_in_subnet()also checks the unwrapped IPv4 form against the blocked-hosts list). CVE not yet assigned | MDL-88779
Minor
- MSA-26-0043 - Login notification bypass via spoofed Moodle App user agent. The user-agent exemption is removed, and the notification is skipped only when the
MOODLEID1_cookie shows the same user logging in again. CVE not yet assigned | MDL-87817- Limitation: Moodle 4.3 still protects the
MOODLEID1_cookie with RC4. Upstream moved it to\core\encryptionin 4.5 through MDL-81940, a non-security change that is not backported, so the same-user check is weaker than upstream's.
- Limitation: Moodle 4.3 still protects the
- MSA-26-0040 - Report builder user filters and columns did not respect profile field visibility (visibility is now checked in the system context). CVE not yet assigned | MDL-87518
- MSA-26-0039 - Minor XSS via password reset link (username escaped in the reset confirmation email and the password-set form). CVE not yet assigned | MDL-88335
- MSA-26-0035 - Manual enrolment did not observe the plugin's disabled state (
enrol/manual/manage.phpnow throws whenenrol_manualis disabled). CVE not yet assigned | MDL-88593 - MSA-26-0034 - XSS in forum post templates (the post subject is escaped into a
labelproperty instead of being interpolated into a string argument). CVE not yet assigned | MDL-88981 - MSA-26-0033 - Arbitrary class instantiation via report builder audience classname (only audience base subclasses are accepted). CVE not yet assigned | MDL-89078
4.3.13
Released Oct 1, 20264.3.13+4.3.12:moodle
Notes
- Initial NES for Moodle release, forked from upstream Moodle
4.3.12- the final upstream 4.3.x release. - Backports every Moodle security advisory published after Moodle 4.3.12 that applies to the 4.3 line: 49 advisories, covering 49 assigned CVEs.
- Includes fixes for vulnerabilities in third-party libraries vendored into Moodle core (ADOdb, FPDI), patched in place.
$branchremains403and$maturityremainsMATURITY_STABLE, so Moodle 4.3 compatibility is unchanged.
Full Version: 4.3.13+4.3.12:moodle
Install this release with the installation guide, including the
database update. Moodle does not record the new $version until the update runs.
Use these values to verify your installation.
Build: 20260618 is the date this build was cut, not its release date.
| Check | Value |
|---|---|
Core $release | 4.3.13+4.3.12 (Build: 20260618) |
Core $version | 2023100913.00 |
Security Fixes
Severity follows Moodle's own rating for each advisory, as published in the Moodle security advisories.
Serious
- MSA-26-0028 - DoS via overlong user profile description (length validation). CVE-2026-58347 | MDL-87898
- MSA-26-0026 - Missing capability check in assignment marker allocation. CVE-2026-58345 | MDL-88529
- MSA-26-0021 - CSRF and XSS in grade item idnumber editing. CVE-2026-58340 | MDL-88542
- MSA-26-0017 - IDOR allows arbitrary comment deletion (strict load before delete). CVE-2026-58336 | MDL-88619
- MSA-26-0015 - RCE via admin presets import (strengthen import/apply validation). CVE-2026-58334 | MDL-88735
- MSA-26-0014 - Arbitrary file read in backup restore. File record data is now validated. CVE-2026-58333 | MDL-88736
- MSA-26-0013 - Email-based MFA bypass (improve Email factor validation). CVE-2026-58332 | MDL-88767
- MSA-26-0012 - Arbitrary file read in Database activity module (check zip content; clean CSV filenames). CVE-2026-58331 | MDL-88595
- MSA-26-0006 - RCE via Google Drive repository plugin (prepared file path must be a name only). CVE-2026-7275 | MDL-88423
- MSA-26-0005 - SQL injection in external database authentication (
auth_db). String interpolation is replaced with parameterized queries across the login, user lookup, user existence, and user update paths. CVE-2026-7274 | MDL-88138 - MSA-26-0003 - DoS in TeX formula editor (mimetex timeout handling). CVE-2026-26047 | MDL-86785
- MSA-26-0002 - Remote code execution via the TeX filter admin setting. The background argument in
filter/tex/latex.phpis escaped and the setting is moved to the colour picker. Colour-picker validation is now anchored, so a value is no longer accepted merely for containing a colour - this hardens every colour-picker setting, not only the TeX one. CVE-2026-26046 | MDL-87870 | MDL-87843 - MSA-26-0001 - RCE via file restore (safer unserializing of repository file source data). CVE-2026-26045 | MDL-87612
- MSA-25-0059 - Reflected XSS in the policy tool via
PARAM_LOCALURL. Thejavascript:pattern inclean_param()is strengthened. CVE-2025-67855 | MDL-86544- Behaviour change: the new pattern matches
javascriptas a whole word anywhere before a:or/, so a relative local URL that merely contains the word is now cleaned to an empty string - for exampledocs/javascript/index.html. Root-relative andwwwroot-absolute URLs return before the check and are unaffected, and matching is whole-word only, sodocs/javascripts/index.htmlstill passes. Sites that route such relative paths throughPARAM_LOCALURLmust make them root-relative or use a different param type. This is upstream's own trade-off, not a porting artefact.
- Behaviour change: the new pattern matches
- MSA-25-0055 - Formula injection when exporting to CSV/Excel/ODS (escape leading =,+,-,@ and control chars in dataformat and grade exports). CVE-2025-67851 | MDL-72744
- MSA-25-0054 - XSS in the formula (equation) editor preview. Input is sanitised in both
atto_equationandtiny_equation. CVE-2025-67850 | MDL-85557 - MSA-25-0052 - Authentication via LTI Provider available to suspended users (block suspended accounts in legacy LTI and LTI 1.3 auth). CVE-2025-67848 | MDL-87286
- MSA-25-0051 - Remote code execution via file restore. Stored-file source data is now read with the safe
unserialize_object()helper instead of raw@unserialize(), preventing PHP object injection during draft-file save and restore. CVE-2025-67847 | MDL-87353 - MSA-25-0047 - MFA bypass via mfa_pending NO_REDIRECT path. CVE-2025-62398 | MDL-86334
- MSA-25-0042 - Exception handling in bundled FPDI PDF library. CVE-2025-54869 | MDL-86353
- MSA-25-0035 - Missing authorisation checks in BigBlueButton view page. CVE-2025-49517 | MDL-84706
- MSA-25-0033 - Course visibility not honoured consistently. CVE-2025-49515 | MDL-84518
- MSA-25-0032 - SSRF via DNS rebind (bind resolved IPs/ports for cURL). CVE-2025-49514 | MDL-83762
- MSA-25-0031 - SQL escaping in the bundled ADOdb PostgreSQL driver. CVE-2025-46337 | MDL-85375
Minor
- MSA-26-0029 - Report builder fragment callbacks missing access checks (verify can-view/can-edit and audience add permission in filters/audience form fragments). CVE-2026-58348 | MDL-84535
- MSA-26-0027 - Blind SSRF in MNet peers function (validate peer hostname). CVE-2026-58346 | MDL-87911
- MSA-26-0023 - CSRF when adding quiz section headings (sesskey protection). CVE-2026-58342 | MDL-88540
- MSA-26-0022 - CSRF in group messaging state toggle (require_sesskey on enable/disablemessaging; sesskey field in groups index template). CVE-2026-58341 | MDL-88541
- MSA-26-0020 - Reflected XSS via Feedback import error message (stricter cleaning). CVE-2026-58339 | MDL-88543
- MSA-26-0019 - CSRF in user profile page reset (sesskey check). CVE-2026-58338 | MDL-88545
- MSA-26-0018 - CSRF in user homepage preference setting (sesskey check on setdefaulthome in index.php and my/index.php). CVE-2026-58337 | MDL-88609
- MSA-26-0016 - Missing group-mode access checks in grade web services. CVE-2026-58335 | MDL-88667
- MSA-26-0011 - CSRF and missing capability check in admin/mnet/peers.php. CVE-2026-7278 | MDL-84495
- MSA-26-0007 - Messaging DoS from messages of deleted users (validation). CVE-2026-7276 | MDL-87760
- MSA-25-0061 - User IDs exposed in URLs with anonymous assignment submissions (use blind id instead of userid in grading table and submission removal). CVE-2025-67857 | MDL-82808
- MSA-25-0060 - Badges with role criterion awarded to users without the role. CVE-2025-67856 | MDL-86507
- MSA-25-0058 - Participants can access ratings without permission. View and view-all rating permissions are now enforced in Forum, Database, and Glossary. CVE-2025-67854 | MDL-86960
- MSA-25-0057 - Password brute force via confirmation-email web service (validation). CVE-2025-67853 | MDL-86326
- MSA-25-0056 - Open redirect in OAuth2 login (restrict redirect to local URLs). CVE-2025-67852 | MDL-80317
- MSA-25-0050 - Bypass timer in timed assignments (respect timer server-side in submission flow). CVE-2025-62401 | MDL-75087
- MSA-25-0049 - Hidden group names visible via group calendar events (event form shows only accessible groups). CVE-2025-62400 | MDL-86261
- MSA-25-0048 - Password brute force via web service auth (stricter login check). CVE-2025-62399 | MDL-86327
- MSA-25-0044 - External cohort search web service leaks system cohort data. CVE-2025-62395 | MDL-85421
- MSA-25-0040 - Profile-access callbacks not enforced in web services (user_get_user_details now runs control_view_profile callbacks; new user_process_profile_callbacks). CVE-2025-62438 | MDL-63395
- MSA-25-0039 - Feedback results ignored Separate Groups mode (new mod_feedback manager::can_see_others_in_groups gate on entries/non-respondents). CVE-2025-62437 | MDL-84463
- MSA-25-0038 - Course Logs / Live Logs reports ignored Separate Groups mode (hide report for teachers without groups; new report_helper::has_valid_group). CVE-2025-62436 | MDL-84464
- MSA-25-0036 - IDOR: fetch other users' recently accessed courses via web service (require moodle/user:viewalldetails). CVE-2025-49518 | MDL-79993
- MSA-25-0034 - CSRF in badges backpack management (add sesskey checks). CVE-2025-49516 | MDL-84497
- MSA-25-0030 - Password revealed on login page after logout (login-page caching). CVE-2025-49513 | MDL-85323