Normal behavior:
set_secret should be callable only by the program owner (the module’s publishing address, e.g., @owner). This function configures a sensitive value, so unauthorized callers must be rejected.
Specific issue:
set_secret is marked public entry and accepts any &signer. There is no check that address_of(caller) equals the program owner. As a result, any account can invoke set_secret, emit the SetNewSecret event, and write a Vault resource under their own address, spoofing configuration changes and polluting state.
Likelihood:
Whenever a non-owner externally calls set_secret, because the function is public entry and contains no owner/capability check.
Whenever off-chain indexers or other components trust the SetNewSecret event or the mere existence of Vault resources to infer official configuration.
Impact:
Unauthorized parties can trigger SetNewSecret events and create arbitrary Vault resources, spoofing configuration updates and potentially confusing integrators/UI/indexers.
State pollution / griefing by creating many bogus secrets under random addresses, increasing storage and complicating program logic that enumerates or validates vaults.
In Move for Aptos, the term "owner" refers to a signer, which is a verified account that owns a given resource, has permission to add resources and the ability to grant access or modify digital assets. Following this logic in this contest, the owner is the account that owns `Vault`. This means that anyone has right to call `set_secret` and then to own the `Vault` and to retrieve the secret from the `Vault` in `get_secret` function. Therefore, this group is invalid, because the expected behavior is anyone to call the `set_secret` function.
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.