Multiple functions in the InheritanceManager contract don't reset the timer by calling _setDeadline()
. This inconsistency could lead to premature inheritance if the owner only uses these functions and doesn't interact with other functions that do reset the timer.
Several onlyOwner functions in the contract don't call _setDeadline()
to reset the inheritance timer:
The contract's security model relies on the owner regularly resetting the inheritance timer through activity. Other owner functions like sendERC20()
, sendETH()
, and addBeneficiery()
properly call _setDeadline()
, creating an inconsistent pattern.
This vulnerability could lead to:
Premature inheritance if the owner only uses the affected functions
Unexpected loss of control over the contract and its assets
Confusion for users about which actions reset the timer
Potential exploitation by beneficiaries who notice this inconsistency
The severity is medium because while it could lead to premature inheritance, it requires specific usage patterns and doesn't directly expose funds to immediate theft.
Manual code review
Ensure consistent timer reset across all owner-only functions by adding _setDeadline()
at the end of each function:
Note that this approach only captures successful transactions. If a transaction reverts for any reason, the timer won't be reset, even though the attempt might indicate owner activity. This is a limitation in the current contract design that should be considered when implementing security-critical 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.