Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: high
Valid

Password Stored in Clear Text

Description

The contract is designed to store a password on the blockchain in clear text. Although the s_password variable is marked as private, it does not provide any real security due to the transparent nature of blockchain data. Anyone with access to the Ethereum blockchain can use tools to read the contract's state and retrieve the stored password. Additionally, if the password is not hashed client-side before being sent to the contract, it will be exposed in the transaction data, making it easily accessible to anyone observing the blockchain. This design flaw severely undermines the primary objective of the contract, which is to store a password securely.

Impact

This issue is categorized as Critical severity due to the following impacts:

  • Any sensitive information stored on the blockchain in clear text is exposed to unauthorized access.

  • The private visibility modifier provides a false sense of security, as it only restricts other contracts from accessing the variable but does not hide the data from blockchain observers.

  • Users of this contract could suffer severe privacy breaches and potential financial loss if they mistakenly believe their password is securely stored.

  • Exposure of clear text passwords in transaction data further exacerbates the security risk.

Recommended Mitigation

It's crucial to avoid storing sensitive information in clear text on the blockchain, especially passwords. A more secure design could involve:

  • Educating users about the risks of storing sensitive information on the blockchain.

  • Implementing client-side password hashing before it is sent to the blockchain. This way, only the hash of the password is ever transmitted and stored on-chain, mitigating the risk of exposure.

  • Considering alternative designs that do not involve storing sensitive information on the blockchain.

Updates

Lead Judging Commences

inallhonesty Lead Judge
almost 2 years ago
inallhonesty Lead Judge almost 2 years ago
Submission Judgement Published
Validated
Assigned finding tags:

finding-anyone-can-read-storage

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

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.