The SecretVault contract stores secrets as plaintext in blockchain resources, making them publicly visible to anyone who can query the blockchain. Despite the contract's intended purpose of providing "secret" storage, all data stored on-chain is inherently transparent and accessible through blockchain explorers, CLI tools, and API queries. This completely defeats the purpose of a "secret" vault.
The fundamental issue is storing sensitive data directly on a public blockchain without encryption. The Move resource system stores all data transparently in global storage, accessible through standard blockchain queries.
Key issues:
Secrets stored as plaintext in blockchain resources
All blockchain data is publicly queryable by design
No encryption or obfuscation mechanisms implemented
Likelihood: High - Any user can trivially query blockchain data using standard tools
Impact: High - Complete exposure of all "secret" data to the public
High severity because:
Completely violates the confidentiality guarantee promised by a "secret" vault
All stored secrets are permanently exposed on the public blockchain
Defeats the entire purpose and value proposition of the application
Complete reproduction steps showing how anyone can access stored secrets:
Step 1: Initialize account and publish contract
Step 2: Create and execute script to set secret
Create scripts/set_secret.move:
Step 3: Verify secret exposure in multiple locations
The secret is exposed in multiple ways:
A) Account resources
Result: Secret exposed in stored resource
B) Transaction history and bytecode
The transaction payload contains the script bytecode with the secret embedded in plaintext:
When decoded from hex: my_super_secret_password_123
Anyone can view this in the blockchain explorer or by querying the transaction data directly.
The secret is permanently visible in:
Transaction payload/bytecode - embedded in the script and accessible via blockchain explorer
Account resources - stored in the Vault resource
Primary Recommendation: Do not store secrets on blockchain
The fundamental issue is that public blockchains are inherently transparent.
Zero-knowledge proofs: Use ZK systems to verify secret knowledge without revealing the secret
Commitment schemes: Store only cryptographic commitments for later verification
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.