The InheritanceManager
contract allows any single beneficiary to appoint a trustee after inheritance is triggered, with no consensus mechanism or restrictions. The trustee then gains significant privileges that can be abused to manipulate NFT values and payment methods, potentially allowing beneficiaries to acquire valuable assets at negligible costs.
The vulnerability exists in the interaction between these functions:
This vulnerability has critical security implications:
Asset Value Manipulation: Any single beneficiary can appoint a trustee who can then arbitrarily devalue estate NFTs.
Payment Asset Substitution: The trustee can set any token (including worthless ones they control) as the payment asset.
Theft of Valuable Assets: After manipulating values and payment methods, beneficiaries can buy out valuable assets for negligible amounts.
Undermined Inheritance System: The entire inheritance distribution system is compromised as consensus among beneficiaries is bypassed.
After inheritance is triggered, a malicious beneficiary calls appointTrustee()
to set a trustee they control
The trustee calls setNftValue()
to reduce the value of NFTs to near zero
The trustee calls setAssetToPay()
to set a worthless token as payment method
The beneficiary calls buyOutEstateNFT()
to acquire valuable assets for almost nothing, depriving other beneficiaries of their fair share
Implement one or more of the following security measures:
Multi-signature requirement: Require a majority or unanimous agreement from all beneficiaries to appoint a trustee:
Time-lock mechanism: Add a delay between trustee appointment and their ability to change values:
Manual Code Review
Control Flow Analysis
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.