The chain type manager documentation states that the ChainTypeManager (CTM) admin has emergency powers to revert batches without waiting for governance approval. However, in the actual implementation on Executor.sol, revertBatchesSharedBridge only checks for validator permissions(using the onlyValidator modifier), preventing the CTM admin from performing emergency batch reversions.
When the CTM admin attempts to revert batches through ChainTypeManager.revertBatches():
The call fails because as shown above the revertBatchesSharedBridge function on Executor.solis protected by the onlyValidatormodifier.
Thus, completely breaking the invariant defined in the CTM's documentation:
"In case we are aware that some of the committed batches on an ST are dangerous to be executed, the CTM can call revertBatches on that ST. For faster reaction, the admin of the ChainTypeManager has the ability to do so without waiting for governance approval that may take a lot of time."
Also, notice that the devs created the modifier to allow the CTM to also call revertBatchesbut unfortunately, it is not in use.
The CTM admin cannot perform emergency reversions if malicious batches are committed.
Manual Review
Replace the onlyValidator modifier with onlyValidatorOrChainTypeManager on Executor.sol:
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.