Closed sherlock-admin4 closed 7 months ago
Invalid, as noted in the submission, this creation of dispute game with the same UUID is not possible due to this check. So when proving a withdrawal, the oldgame and new game created will always be unique. This issue misses the root cause presented in #203
nuthan2x
high
Users cannot create a new game or proposal if the old game is blacklisted
Summary
Users cannot create a new game or proposal if the old game is blacklisted. The revert happens on this line as both old and new games have the same
UUID
Vulnerability Detail
If a game is blacklisted, the
UUID
will remain the same because_gameType, _rootClaim, _extraData
are still the same. So when creating a new proposal or game, the sameUUID
from the old game will be used.From DisputeGameFactory::create
From FaultDisputeGame::initialize
From the comments and revert lines shown below, we can understand that the protocol allows users to create a new game or proposal if the old game is blacklisted. So, if a user tries to call DisputeGameFactory::create to prove the withdrawal again, the revert line triggers because the
uuid
is the same and it points to the gameID of the previous game and it is!= bytes32(0)
.So the revert triggers, and users can never prove or resolve that withdrawal transaction. And a new withdrawal transaction with different nonce has to be created, and again, 7 days of challenging period awaits.
From OptimismPortal2::proveWithdrawalTransaction
From DisputeGameFactory::create
Impact
Users can never prove or resolve the game of a withdrawal transaction if the old game with the same
uuid
is blacklisted. And a new withdrawal transaction with different nonce has to be created, and again, 7 days of challenging period awaits. The invariant or feature is missing here. That is the issue.Code Snippet
https://github.com/sherlock-audit/2024-02-optimism-2024/blob/f216b0d3ad08c1a0ead557ea74691aaefd5fd489/optimism/packages/contracts-bedrock/src/dispute/DisputeGameFactory.sol#L84-L122
https://github.com/sherlock-audit/2024-02-optimism-2024/blob/f216b0d3ad08c1a0ead557ea74691aaefd5fd489/optimism/packages/contracts-bedrock/src/L1/OptimismPortal2.sol#L280-L291
Tool used
Manual Review
Recommendation
Before reverting here check if the game with the same
UUID
is blacklisted or not. Skip the revert if the game is blacklisted.