Describe the normal behavior in one or more sentences
Answer: A resource stored under a user’s account should only be deleted (moved out of storage) by its rightful owner, typically requiring the signer of the account.
Explain the specific issue or problem in one or more sentences
Answer: The contract allows any caller to delete another user’s resource because the delete_resource function accepts an arbitrary address instead of enforcing that only the account owner (via &signer) can perform the deletion.
Likelihood:
Reason 1 // Describe WHEN this will occur (avoid using "if" statements)
Answer: This occurs whenever an attacker submits a transaction with the victim’s address.
Reason 2
Answer: No authentication checks are made against &signer making it trivial to execute.
Impact:
Impact 1
Answer: Complete loss of user resources (funds, data) because their Vault is deleted.
Impact 2
Answer: Potential DoS (user’s vault cannot be accessed anymore).
In Step 1, the victim’s account stores a Vault.
In Step 2, the attacker provides the victim’s address (@0x111) to delete_vault. Because the function does not require the victim’s signer, the deletion succeeds.
In Step 3, the test confirms the vault is gone — demonstrating that any attacker can destroy another user’s resources.
The new implementation requires a &signer, which is cryptographically tied to the transaction sender.
By deriving the address from signer::address_of(caller), the function ensures only the actual account owner can delete their own Vault.
This prevents attackers from passing arbitrary addresses and enforces strong ownership rules on resources — which is one of the key safety models of Move.
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.