The Starknet side of the bridge allows deposits with the option "use_withdraw_auto". If this argument is true, the user will never be able to withdraw on mainnet due to a revert after checking the request header.
According to code commentary, automatic withdrawal on the mainnet side was disabled after an issue was found in the last audit.
However, this option is still available on the Starknet deposit side. If a user inadvertently passes use_withdraw_auto == true, his request header will always contain that unsupported option and will revert on Starklane::withdrawTokens at Bridge.sol:153.
Below is the problematic piece of code. The request header is checked and if it detects the auto withdrawal option, the withdrawal simply reverts while keeping the user's NFT, which can neither be withdrawn on L1 or unlocked back on Starknet.
The POC is exactly what they included in the tests:
Starknet native tokens will be LOCKED forever as they can't be withdrawn on mainnet.
Foundry.
On the Starknet side, revert the deposit if the user attempts to pass 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.
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.