Open howlbot-integration[bot] opened 1 month ago
alex-ppg changed the severity to QA (Quality Assurance)
alex-ppg marked the issue as grade-c
This previously downgraded issue has been upgraded by alex-ppg
alex-ppg changed the severity to QA (Quality Assurance)
alex-ppg marked the issue as grade-b
Hey @ZanyBonzy, thank you for your PJQA feedback! As the Sponsor has outlined, there is no indication that the contract needs to be fully compliant with the EIP-721 specification. Claiming that a particular contract should implement a particular EIP when there is no explicit indication it should do so would open a can of worms for all C4 contests and would permit a lot of speculative findings to be submitted as valid which is something I do not condone.
Lines of code
https://github.com/code-423n4/2024-08-superposition/blob/4528c9d2dbe1550d2660dac903a8246076044905/pkg/sol/OwnershipNFTs.sol#L13
Vulnerability details
Impact
NFTs cannot be identified as a valid ERC721 token during interactions with external integrations (e.g marketplace). It also doesn't comply with with EIP-721 standard, breaking composibility.
Proof of Concept
The
supportsInterface
function in ERC721 tokens serves as the standard interface detection mechanism in Ethereum smart contracts. It allows other contracts or external entities to confirm that the ERC721 token contract is actually an NFT. This makes it easier for external contracts or integrations to interact with them in a standardized way.OwnershipNFTs contract is missing the
supportsInterface
function. It is also missing in its inheritances and overall, in the entire codebase as evident from the search functionality.The first effect is that EIP-721 standard is broken, as evident from the "MUST" keyword which, per RFC-2119 terminology, indicates a required trait in all NFT contracts.
As a result of this, any external integration that depends on identifying ERC721 tokens as actual NFTs will fail since the function is absent in OwnershipNFTs.sol
Tools Used
Manual code review
Recommended Mitigation Steps
Recommend introducing the function, for example
Assessed type
ERC721