CVE-2023-28329:
Moodle SQL Injection vulnerability
8.8
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.53811%
CWE
Published
3/23/2023
Updated
4/19/2024
KEV Status
No
Technology
PHP
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
moodle/moodle | composer | >= 4.1.0, < 4.1.2 | 4.1.2 |
moodle/moodle | composer | >= 4.0.0, < 4.0.7 | 4.0.7 |
moodle/moodle | composer | >= 3.11.0, < 3.11.13 | 3.11.13 |
moodle/moodle | composer | < 3.9.20 | 3.9.20 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stemmed from missing validation of user-controlled 'standardfield' parameter in profile availability conditions. The patch added validation through get_standard_profile_fields() and checks via array_key_exists. The filter_user_list and get_user_list_sql functions directly used the unvalidated field name in SQL queries (visible in pre-patch code's $DB->get_records_select and WHERE clause construction). get_description had a secondary exposure but wasn't the primary injection vector. The high confidence comes from the patch's security-focused validation being added precisely to these SQL-handling functions.