The InheritanceManager contract allows any beneficiary to appoint a trustee through the appointTrustee() function after inheritance is triggered. This creates a vulnerability where the owner can add themselves as a beneficiary (twice if needed to bypass some checks), trigger inheritance, and appoint themselves as trustee. As trustee, they gain the ability to arbitrarily change NFT valuations, potentially manipulating estate values to their advantage.
The vulnerability involves several components:
The owner can add themselves as a beneficiary
After inheritance is triggered, any beneficiary (including the owner) can appoint a trustee - themselves
A trustee can change the value of any NFT estate
A trustee can also change which asset is used for payment
This allows a malicious owner to:
Add themselves as a beneficiary
Wait for inheritance to trigger
Appoint themselves as trustee
Adjust NFT values to favorable amounts
Change payment assets to ones they control or that have little value
\
This vulnerability undermines the entire inheritance system:
Estate Value Manipulation: A malicious owner can set arbitrarily high or low values for estate NFTs after inheritance is triggered.
Payment Asset Manipulation: They can change what token is used for payment to a worthless or manipulated token.
Beneficiary Trust Violation: The trustee role is meant to be independent, but this vulnerability allows continued owner control.
Circumvention of Inheritance Intent: The owner can effectively maintain control of asset valuation after their "death" (inactivity period).
Manual code review
Implement Trustee Consensus: Require multiple beneficiaries to approve trustee appointments
Add Trustee Restrictions: Prevent current or former owners from becoming trustees
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.