Description:
The constructor of InheritanceManager does not call _setDeadline(), leaving deadline uninitialized (defaulting to 0). This allows anyone to pass the first check inside inherit(), effectively bypassing the 90-day timelock requirement.
Although it is not fully exploitable due to the necessity of having at least one beneficiary before claiming ownership, this breaks a core protocol invariant:
Invariant 2: Nobody should be able to take ownership of the contract before 90 days.
Impact:
Medium Severity
Likelihood: Moderate – While full exploitation is not possible due to missing beneficiaries, the timelock mechanism is effectively broken.
Breaks a Key Security Assumption: The contract should not allow premature execution of inherit().
Proof of Concept:
logs: InheritanceManager::inherit()
[Revert] InvalidBeneficiaries()
Meaning we pass the first check
Recommended Mitigation:
To ensure that the contract enforces the 90-day timelock, _setDeadline(); should be called inside the constructor.
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.