The blockchain is public and accessible to anyone, and it is not safe to save the password in clear text, without any type of encryption.
The function PasswordStore::setPassword
saves the password without encryption.
With this test I can read the storage slot 1 and get the password.
The impact is medium, because by not encrypting the password there is a security problem in case of reading the data via the storage slot.
I didn't set high impact because it's not clear from the specifications whether data encryption was needed or not.
Manual check
Foundry
Performing on-chain encryption is difficult. It is recommended to send the password already encrypted with possible salt or off-chain encryption methods.
Private functions and state variables are only visible for the contract they are defined in and not in derived contracts. In this case private doesn't mean secret/confidential
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.