Description: The functions contractInteractions, createEstateNFT, and removeBeneficiary in the InheritanceManager contract does not call _setDeadline to update the deadline when executed by the owner. As a result, the 90 days timer after which the contract can be inherited, is not updated to reflect the owner's last activity. This allows for premature inheritance, which compromises the intended behaviour of the protocol (every transaction the owner does with this contract must reset the 90 days timer).
Impact: The beneficiaries can claim their inheritance earlier than the expected 90 day inactivity period of the owner, potentially leading to unintended transfer of assets.
Proof of Concept
Owner adds a beneficiary.
_setDeadline is triggered to update the dealine to current block.timestamp plus 90 days.
Owner removes a beneficiary or creates an estate NFT or interacts with an external contract.
_setDeadline is not triggered to update the deadline.
Beneficiary calls getDeadline, which returns the deadline as the time of the initial add beneficiary transaction plus 90 days.
Tools Used
Manual Review
Recommended Mitigation: To prevent this, we should have the functions contractInteractions, createEstateNFT, and removeBeneficiary in the InheritanceManager contract, update the deadline by calling _setDeadline.
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.