The InheritanceManager::withdrawInheritedFunds()
function distributes tokens to all beneficiaries in a single transaction. If any beneficiary's address is blacklisted by centralized tokens like USDC or USDT, the entire distribution operation will fail, permanently locking those tokens in the contract.
Centralized stablecoins like USDC and USDT implement blacklisting functionality where transfers to certain addresses are blocked. When safeTransfer attempts to send tokens to a blacklisted address, the entire transaction reverts.
The issue is particularly severe because:
Once the inheritance mode is activated (isInherited = true), there's no way to modify the list of beneficiaries
There's no alternative distribution mechanism available
The function loops through all beneficiaries in a single transaction
If any beneficiary address becomes blacklisted by USDC/USDT, those tokens will be permanently locked in the contract with no recovery mechanism. Even non-blacklisted beneficiaries cannot receive their share of the blacklisted tokens.
Implement a pull-based withdrawal pattern instead of the current push-based approach
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.