The withdrawInheritedFunds function does not have a reentrancy guard, allowing malicious beneficiaries to exploit recursive calls when receiving ETH. This can result in fund depletion before legitimate beneficiaries receive their share.
In the withdrawInheritedFunds function there is no reentrancy guard:
The function sends ETH using call, which allows reentrancy if the recipient is a smart contract.
A malicious contract can repeatedly call withdrawInheritedFunds upon receiving ETH, draining the contract's balance before the loop completes.
A single malicious beneficiary can withdraw all ETH before others receive their share.
Manual Review
Implement nonReentrant modifier that was created previously but not used.
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.