Boost _ Shardeum_ Ancillaries 33392 - [Websites and Applications - Insight] Validator GUI password bruteforcing is possible using the proxies
Submitted on Fri Jul 19 2024 10:44:51 GMT-0400 (Atlantic Standard Time) by @anton_quantish for Boost | Shardeum: Ancillaries
Report ID: #33392
Report type: Websites and Applications
Report severity: Insight
Target: https://github.com/shardeum/validator-gui/tree/dev
Impacts:
Taking state-modifying authenticated actions (with or without blockchain state interaction) on behalf of other users without any interaction by that user, such as: Changing registration information, Commenting, Voting, Making trades, Withdrawals, etc.
Description
Hey Shardeum team,
Brief/Intro
The only password-bruteforce protection the Validator GUI has is the IP rate-limiting. This protection could be easily bypassed by using a pool of proxy-servers and, thus, the attacker can successfully guess the admin password in a very short time (depending of the password complexity).
Vulnerability Details
First of all, there's no password policy the Validator GUI/CLI have at all. The node admin can easily set the password like "1" or something similar and, in such a case, the attacker would be able to immediately guess it using just his/her own IP address.
Then, if the password set is more complex, the only bruteforce-protection the Validator has is the rate-limiting of source IP address. This protection could easily be bypassed by an attacker using a pool of proxy servers.
If the password uses lowercase letters and digits only, for example, and has a length of 6 chars, the whole variety of combinations is 36^6 ~= 2.17 billions.
Every IP address can make 1500 API calls per 10 minutes.
Thus, it'd take just
to guess such a password using 10000 proxy servers (which is absolutely realistic).
It would be much easily to guess one in case of using the password dictionaries.
If the password is more complex, an attacker can use more proxy servers and/or wait more.
Impact Details
After the successful password guess, the attacker will be able to sign in to GUI and do anything the admin can.
Mitigation
First of all, I highly recommend you to set some default password policy like at least having a digit, a letter and a char, and a length of at least 8 symbols.
It wouldn't absolutely mitigate the issue though because users often use passwords like "Shardeum2024!". That's why I recommend you to set up a CAPTCHA on login page. It can also be bypassed but it would take a lot of either time or money from the attacker to successfully guess a password in such a case. If you don't want to show the CAPTCHA always, you can show it for EVERY IP address in case of there was 3 failed login attempts from ANY IP in some time window for instance.
Proof of concept
Proof of Concept
You can use the following python script to perform the password bruteforce using proxies (I commented them to be able to test it on my local installation but you can try it with your own external setup and make sure the bruteforcing works).
Last updated