Dynamic tables did not enforce capability checks, which resulted in users having the ability to retrieve information they did not have permission to access.
Note: Please check the information at the bottom of this announcement for important information related to this fix.
Severity/Risk: |
Serious |
Versions affected: |
4.4 to 4.4.2, 4.3 to 4.3.6, 4.2 to 4.2.9, 4.1 to 4.1.12 and earlier unsupported versions |
Versions fixed: |
4.4.3, 4.3.7, 4.2.10 and 4.1.13 |
Reported by: |
Frédéric Massart |
CVE identifier: |
CVE-2024-45689 |
Changes (main): |
http://git.moodle.org/gw?p=moodle.git&a=search&h=HEAD&st=commit&s=MDL-82567 |
Tracker issue: |
MDL-82567 Unprotected access to sensitive information via dynamic tables |
The following is important information about this fix, which includes some action items that may be necessary on your site to ensure continued functionality of dynamic tables:
- This vulnerability potentially affects all dynamic tables, so the fix implements a new method which forces a capability check.
- By default, the patches released for Moodle 4.4, 4.3, 4.2 and 4.1 implement a default check which restricts all dynamic tables to admin access only (moodle/site:config capability), to ensure any third party code is also automatically protected.
- Any dynamic tables (classes implementing core_table\dynamic) which require access by non-admins will need to be updated in the code to implement the new ::has_capability() method.
- From Moodle 4.5, that default will be removed and the ::has_capability() method will become compulsory for dynamic tables (defined in the interface), so if you have any plugins/customisations that include classes implementing core_table\dynamic, those classes will need to be updated to implement the new method. Any dynamic tables without that implementation will trigger a fatal error and fail to load from Moodle 4.5 onwards.
- The fixes for this issue update all core LMS dynamic tables, so you can refer to those for examples of how to implement this.
- If your Moodle site(s) do not use any custom/third party code which implements core_table\dynamic, you just need to upgrade your site to the latest minor version (or apply the patch), no further action is required.
Draag bij aan de discussie
(0 antwoorden tot nu toe)