NFTs can be lost forever if deposit_tokens is called with ownerL1 set as the zero address or 0xdEaD address, making the NFT unaccessible on L1 and the deposited L2 nft's unretrievable by normal methods.
The code above allows bridging of NFTs from Starknet to Ethereum, and the Bridged NFT owner on L1 is specified by the owner_l1 variable, but the contract fails to prevent setting the owner address to the 0 or dead address which would mean the NFT can be lost forever due to errors. Likelihood is low, but it should be prevented anyways.
Manual Review
Add the following line to the fn deposit_tokens
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.