Headline
CVE-2020-14944: BSA-Radar_CVE-Vulnerabilities/CVE-2020-14944 - Access Control Vulnerabilities.md at master · wsummerhill/BSA-Radar_CVE-Vulnerabilities
Global RADAR BSA Radar 1.6.7234.24750 and earlier lacks valid authorization controls in multiple functions. This can allow for manipulation and takeover of user accounts if successfully exploited. The following vulnerable functions are exposed: ChangePassword, SaveUserProfile, and GetUser.
I. VULNERABILITY
Access Control Vulnerabilities - BSA Radar (Authenticated)
II. BACKGROUND
BSA Radar is a banking application provided by GLOBAL Radar which is implemented within corporate environments to perform SWIFT transactions, approve and review transactions, manage documents, manage users and roles and other features.
III. DESCRIPTION
The Global RADAR BSA Radar 1.6.7234.X application lacks valid authorization controls in multiple functions while logged into the application. This can allow for manipulation and takeover of user accounts if successfully exploited.
The following vulnerable functions are exposed: ChangePassword, SaveUserProfile, GetUser
IV. History
The vulnerability was originally disclosed to the vendor on November 4, 2019.
The CVE was originally submitted on June 19, 2020.
CVE assigned: CVE-2020-14944
V. PROOF OF CONCEPT
Affected components:
ChangePassword API endpoint - Allows the ability to update the password belonging to another account by their UserID, and therefore leading to account takeover.
HTTP Request PoC:POST /WS/AjaxWS.asmx/ChangePassword
{"password": {"UserID":XXXX,"NewPassword":"NEWPASSHERE","NewPasswordConfirm":"NEWPASSHERE",<REMAINDER OF REQUEST HERE>} }
The UserID and NewPassword parameters can be forged to force the password change of another existing user account by using their UserID.
SaveUserProfile API endpoint - Allows the ability to update the user profile belonging to another account by using their UserID. This includes modifiable details like first name, last name, email, and phone number. This also allows for injection of a Stored Cross-Site Scripting (XSS) into arbitrary user account profiles as the first name and last name parameters are vulnerable. This can allow for session hijacking, stealing application data or redirecting users to attacker-controlled applications for phishing attacks.
HTTP Request PoC:POST /WS/AjaxWS.asmx/SaveUserProfile
{"user": {"UserID":XXXX,"BankID":XXX,"Firstname":<ARBITRARY INPUT HERE OR STORED XSS SCRIPT>","Lastname":"<ARBITRARY INPUT HERE OR STORED XSS SCRIPT>","Title":"","Phone":"<ARBITRARY INPUT HERE>","Email":"<Correct email here>",<REMAINDER OF REQUEST HERE>} }
Multiple params above can be forged and modified for existing UserID accounts. The Firstname and Lastname parameters are vulnerable to a stored XSS attack which can be used to inject malicious scripts into existing user accounts to steal sessions or account data, or to redirect users to malicious pages.
GetUser API endpoint - Allows the ability to view the user account details of any arbitrary user by enumerating their UserID.
HTTP Request PoC:POST /WS/AjaxWS.asmx/GetUser
{"userID":XXXX }
The UserID paramter can be forged to enumerate over existing userID’s in order to return their account details such as full name, username, user permissions, account role, email, and password question.
VI. BUSINESS IMPACT
Authorization control issues, account takeover, account modifications, disclosure of arbitrary user accounts.
VII. SYSTEMS AFFECTED
BSA Radar - Version 1.6.7234.24750 and lower.
VIII. SOLUTION
Implement authorization controls and input validation on the affected components and parameters to limit permissions in a way that prevent users from accessing resources being requested outside of their account context and privileges. Application responses should include a friendly and generic error message.
IX. REFERENCES
Mitre CVE-2020-14944
Exploit-DB CVE-2020-14944 - Cross-Site Request Forgery (Change Password)
X. CREDITS
This vulnerability has been discovered and reported by William Summerhill.
XI. DISCLOSURE TIMELINE
The vulnerability was originally disclosed to the vendor on November 4, 2019 and acknowledged shortly after. The vulnerability was then patched and verified on April 26, 2020.