The vulnerability allows suspended users to authenticate through the Learning Tools Interoperability (LTI) Provider in Moodle. The analysis of the provided patches reveals two key functions where the vulnerability existed and was subsequently fixed.
-
tool_provider::onLaunch in public/enrol/lti/classes/tool_provider.php: This function is part of the legacy LTI enrollment process. The patch 62f372e9d861d16df702d3c7726905fa2730e3d8 introduces a check for user suspension. The absence of this check meant that a suspended user could initiate an LTI launch and proceed with authentication, bypassing the suspension restriction.
-
auth_plugin_lti::complete_login in public/auth/lti/auth.php: This function is part of the LTI 1.3 authentication process. The patch c2705e2c18962fec4f21b9c34ed386be2a379663 adds a similar check for user suspension. Without this check, a suspended user could complete the LTI login flow, gaining unauthorized access to the system.
The root cause of the vulnerability is the failure to enforce user suspension status in the LTI authentication handlers. By identifying the exact locations where the suspension checks were added, we can pinpoint the vulnerable functions that would be present in a runtime profile during an exploitation attempt.