Gas Grief is the act of spending the forwarded gas (63/64 max) in order to create DoS attack in the contract.
The withdrawInheritedFunds function in the InheritanceManager contract allows beneficiaries to withdraw inherited funds, including Ether (ETH) when _asset == address(0). ETH is dispersed to each beneficiary using a low-level .call within a loop:
When ETH is sent via .call, it triggers the recipient’s receive() or fallback() function (if implemented). A malicious beneficiary contract can implement a gas-intensive receive() or fallback() function that consumes a significant portion of the available gas (up to 63/64ths of the caller’s remaining gas per EIP-150) without reverting. This can cause the total gas cost of withdrawInheritedFunds to exceed the block gas limit, resulting in a transaction failure.
High. The beneficiaries will not be able to withdraw ETH from the contract, leaving the funds locked
Manual Review
Implement a pull-payment pattern to mitigate gas griefing by allowing beneficiaries to withdraw their ETH shares individually, rather than distributing funds in a single transaction. This isolates the impact of a malicious beneficiary to their withdrawal. Suggested fix:
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.