A large amount of beneficiaries
can cause a DoS attack where the iteration of the array may be very costly or computationally infeasible.
This can be seen in:
Modifier InheritanceManager::onlyBeneficiaryWithIsInherited
buyOutEstateNFT InheritanceManager::onlyBeneficiaryWithIsInherited
withdrawInheritedFunds InheritanceManager::onlyBeneficiaryWithIsInherited
Likelihood: Medium. Requires the owner to add many beneficiaries (e.g., 100+), which isn’t a default scenario but is plausible with poor management or malicious intent.
Adding 100 beneficiaries in the Proof of Concept Results in the following gas usage:
Usage of 6,103,263 rendering the contract unusable for beneficiaries due to high cost.
Gas limit exceeding 6M (per PoC) is a real DoS risk, but it’s not an active attack—it’s a design flaw exploitable passi
High. Blocks key functions (e.g., InheritanceManager::buyOutEstateNFT
, InheritanceManager::withdrawInheritedFunds
), locking assets and preventing beneficiaries from accessing funds.
Manual Review
Keep the beneficiaries in another structure as well such as a mapping. For functions, move to a model where each beneficiary has to withdraw his own share. This will prevent high gas cost for the caller and will prevent DoS attacks
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.