Starknet users bridging his NFTs with the use_withdraw_auto set to true will block his NFTs forever
When a user wants to bridge an NFT from Starknet to Ethereum, he has to call the following function:
In this function we can notice that there is a particular parameter use_withdraw_auto that is set by the user and inside the function has no specific check nor constrain. Thus, it can be set either true or false by the user. The problem arises when the message gets delivered to Ethereum and the user wants to withdraw the NFT.
As we can see, when the user will pass the request que made, it will extract this parameter from the header and the code will enter the first if branch which essentially will make the transaction to revert because the functionality has been disabled.
The final result will be the user losing his NFT in Starknet because he will not be able to withdraw it from Ethereum.
Medium, the severity is high, the user will lose his NFTs. However, it is a user mistake so a medium severity would be good.
Manual review
While the auto withdraw functionality remains blocked, add a check in the Starknet bridge to ensure this parameter is false:
Impact: High, token will be stuck in L2 bridge. Likelyhood: Very low, option is available in L2 but has been disabled since March on L1, would be almost a user error.
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.