The withdrawTokensToL1
function uses a signature for authorization, but it does not prevent replay attacks because it does not track whether a signature has already been used.
This vulnerability exists in the L1BossBridge.sol::withdrawTokensToL1
function starting on line 91.
The withdrawTokensToL1
function uses ECDSA signatures for withdrawals but does not track nonces to ensure a signature is used only once.
An attacker could replay a signature to authorize multiple withdrawals, potentially draining funds.
Test case example:
Forge
Implement a nonce system where each withdrawal must include a unique nonce that is tracked and invalidated after use.
Simplified example:
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.