Normally, applications that manage sensitive user information (like passwords, private keys, recovery phrases, or secrets) should never store them in plaintext on-chain, because blockchain data is fully transparent and immutable.
In this case, the function stores the secret
directly into a Vault
resource:
This means anyone with blockchain access (explorer, full node, archive node, or indexer) can read the stored secret.
Therefore, the “secret” is not private at all — the confidentiality promise of the contract is completely broken.
Likelihood:
Reason 1: This issue occurs every time a user sets a secret, since the value is always stored in plaintext.
Reason 2: It is guaranteed to manifest because blockchain storage is public by design.
Impact:
Impact 1: All user secrets are exposed publicly on-chain, resulting in a complete loss of confidentiality.
Impact 2: Sensitive data leakage may lead to account compromise, credential theft, or reputational damage to the dApp.
Store only references or hashes or Store off-chain, keep only proof on-chain or Encrypt before storing
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.