Storage of Bridge
might be corrupted during an upgrade.
Below's the inheritance of the Bridge
contract.
The Bridge
contract is meant to be upgradeable. However, it inherits UUPSOwnableProxied
, a contract that is not upgradeable-safe.
There is no gap storage implemented on the UUPSOwnableProxied
contract. Hence, adding new storage variable to this contract can potentially overwrite the beginning of the storage layout of the Bridge
contract. Leading to critical misbehavior of the protocol.
Storage of the Bridge
contract might be corrupted during upgrading, thus causing the bridge to broken and tokens to be stuck.
Manual review.
Consider defining an appropriate storage gap in the UUPSOwnableProxied
contract at the end of the storage variable definition. Here's an example:
Known issue: Lightchaser
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.