If a pauseable NFT is bridged to Starknet, going back to Ethereum would be impossible if transfers are paused.
Since all NFT collections are in scope, there are collections that can pause their transfers like AxieInfinity -https://etherscan.io/address/0xf5b0a3efb8e8e4c201e2a935f110eaaf3ffecb8d
When these NFTs are bridged to Startnet via Bridge::depositTokens()
, the NFTs will be locked inside the Mainnet escrow and a new collection will be deployed on L2 representing AxieInfinity.
But when the user decides to transfer back his NFT from L2 to L1 and waits for his NFT to be unlocked and transferred back to him, this will not be possible as _withdrawFromEscrow will fail and thus his L2 NFT will be removed, but he you won't get it on L1, leaving it locked in the escrow contract forever.
User will lose their NFT if the original implementation of NFT pauses transfers.
Manual Review
Inspired by this - https://code4rena.com/reports/2024-01-renft#m-12-paused-erc721erc1155-could-cause-stoprent-to-revert-potentially-causing-issues-for-the-lender
It's hard to mitigate this, but either don't allow this type of collections, or on L2 provide pause as well on the collections that have it originally.
Please, do not suppose impacts, think about the real impact of the bug and check the CodeHawks documentation to confirm: https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity A PoC always helps to understand the real impact possible.
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.