Description: The documentation states that in every interaction of the owner with the contract, the deadline should be reset. However, multiple functions fail to update the deadline, leading to inconsistencies in the inheritance logic and potential fund loss.
The affected functions are:
removeBeneficiary()
createEstateNFT()
contractInteractions()
This deviation from the expected behavior could allow the inheritance phase to be triggered prematurely before the contract is fully configured, potentially leading to incorrect distribution of funds and assets.
Impact: Failure to update the deadline in these functions can lead to:
Fund loss
→ If the inheritance phase is triggered before the owner has finalized the contract setup, funds may be incorrectly distributed or permanently lost.
Premature inheritance activation
→ Since the deadline is not extended, the inactivity period continues from the last valid update, allowing beneficiaries to claim the inheritance earlier than expected.
Unintended contract behavior
→ A beneficiary can trigger inheritance before the owner has completed critical adjustments, affecting the distribution of assets.
Owner confusion
→ The owner may assume they have an additional 90 days after calling these functions, which is not the case.
Proof of Concept: This test demonstrates that calling InheritanceManager::inherit
does not require fast-forwarding time again after executing removeBeneficiary()
. Since the function does not reset the deadline, the contract remains in a state where the inheritance phase can be prematurely triggered, allowing fund distribution before it should be.
Manual review
Foundry for testing
Recommended Mitigation: To maintain contract consistency and ensure the inheritance logic functions as expected, _setDeadline();
should be added to all affected functions.
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.