When a user submits a transaction to save their password, it may be visible to everyone in the transaction's calldata.
In the codebase, the setPassword
function is responsible for saving a user's password on the blockchain. However, due to the possibility of non-technically literate users submitting their transactions with unencrypted passwords, a vulnerability exists. This vulnerability allows anyone to view the password directly from the transaction's calldata.
Here's the relevant code snippet:
This vulnerability exposes the user's password to potential eavesdropping by anyone who examines the transaction. This could lead to unauthorized access to the user's account or personal information.
Manual Review
To address this vulnerability, it is crucial to ensure that passwords are not stored in plain text. Additionally, explicit documentation should be provided, especially for users who may not be technically proficient.
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.