The InheritanceManager::inherit()
function allows is designed to allows the owner the possibility to reclaim the contract if there is only one beneficiary assigned.
However, because the inherit
function is "external" can be called by anyone after the timelock period,
the caller can become the owner of the contract and can add his own beneficiaries, making sure the attacker can maintain owner access to the contract.
Additionally, the transaction can be front-run by MEV miners.
Proof of concept:
When the number of beneficiaries is 1, an attacker can reclaim ownership of the contract, update the list of beneficiaries and withdraw the funds.
Manual Review
When reclaiming ownership in InheritanceManager::inherit()
function, check that the caller is the address of the owner backup wallet.
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.