A user can call deposit_tokens on the starknet side of the bridge, specifiying use_withdraw_auto=true and the deposit will not revert. However, on the ethereum side any attempt to consume the message will revert because of the WITHDRAW_AUTO flag. Since canceling messages only works for messages sent from L1, there will be no way to release the tokens deposited on Starknet and they will be lost permanently.
The WITHDRAW_AUTO option has been disabled on the Ethereum side of the bridge in the following code from Starklane::withdrawTokens:
However, on the starknet side of the bridge, the option can still be specified when depositing tokens, and the flag is set in the bridging message without reverting:
note that other than the comment on the Ethereum bridge code there is no mentioning that this option is disabled neither in the starknet bridge code nor in any dev documentation. Therefore users who access the starknet side of the bridge directly (either projects integrating the bridge or power users who access the bridge through code) can reasonably assume this options is available.
A user calls deposit_tokens on the starknet side and specifies use_withdraw_auto = true.
The deposit succeeds and the user's NFT tokens are locked in the Starknet-side bridge.
Once the message becomes available on the Ethereum Starknet Core contract, the user tries to consume the message by calling WithdrawTokens.
However any attempt to call WithdrawTokens will revert, because of the code above that is meant to disable the use of WITHDRAW_AUTO.
The user has no way to release the tokens from the starknet contract, since CancelRequest is only available for messages from L1 to L2.
Reverting on Auto Withdraw messages only on the Ethereum side of the bridge.
Permanent loss/lock of NFT tokens
Manual Review, Foundry, SNFoundry
Disable use_withdraw_auto on the Starknet side of the bridge by reverting deposit_tokens if called with use_withdraw_auto=true.
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.