The vulnerability allows an attacker with valid user credentials to bypass the Multi-Factor Authentication (MFA) process by changing the login request's HTTP method from POST to GET. This places the user's password directly into the URL's query string.
The analysis of the provided patches reveals that the core of the fix was to introduce a check that explicitly disallows login attempts if the password parameter is found in the query string. This check was implemented in a new helper function, isPasswordParameterInQueryString, within the AuthenticatedSessionManagerUtil class.
This new security check was then applied in two key locations:
-
LoginMVCActionCommand.doProcessAction: This is the most direct fix. This class handles the server-side logic for the MFA login portlet. By adding the check here, the primary attack vector described (bypassing MFA) is closed.
-
AuthenticatedSessionManagerUtil.login: This is a more general, system-wide login function. Patching this function as well serves as a defense-in-depth measure, hardening other potential login paths against the same type of attack, even if they are not directly related to the MFA flow.
Therefore, the identified functions were all part of the vulnerable process. LoginMVCActionCommand.doProcessAction was the entry point for the specific MFA bypass, and AuthenticatedSessionManagerUtil.login was a broader function that also lacked the necessary validation, making it a critical part of the overall fix.