The createEstateNFT
function in InheritanceManager
fails to properly handle NFT minting due to mismatched ERC721 implementation patterns.
Minting Mechanism Mismatch
The NFTFactory
contract uses _mint
instead of _safeMint
from OpenZeppelin's ERC721 implementation:
However, the InheritanceManager
contract attempts to act as an NFT custodian without proper ownership tracking.
Ownership Tracking Failure
The InheritanceManager
never explicitly tracks which NFTs it owns, creating potential mismatches between the nftValue
mapping and actual on-chain ownership.
Call Flow Vulnerability
Sequence diagram showing the flawed interaction:
mermaid
Copy
Missing validation that InheritanceManager
actually received the NFT.
Failed NFT Minting: All calls to createEstateNFT()
will revert with error:
ERC721: transfer to non ERC721Receiver implementer
Broken Core Functionality: Real-world asset tokenization (the contract's primary purpose) becomes unusable
Permanent State Corruption: Subsequent functions relying on NFT ownership will behave unpredictably
Silent Failures: Transactions may succeed without actual NFT ownership
Data Corruption: nftValue
mapping entries could reference non-existent NFTs
Asset Loss: Contracts may appear to create NFTs that never materialize
Manual Review
Add to InheritanceManager
:
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.