Hi Maurelian here, I’m a protocol security engineer at OP Labs. OP Labs is a software development company focused on the Optimism ecosystem and a core developer of the OP Stack. We provide some services to, but do not represent or speak on behalf of, the Optimism Foundation.
Executive Summary
The protocol upgrade is intended to increase the security and decentralization of the Superchain by meeting the following requirements:
-
Increasing the Security Council Safe’s signing threshold, from 4 to 10, out of 13 owners. This meets the 75% threshold requirement for a Stage 1 rollup outlined in L2Beat’s Stages framework.
-
Reassigning the role of Guardian from the Foundation to a new Guardian Safe with the Security Council Safe as its sole owner. This moves the Superchain closer to satisfying the 1 week exit window requirement for Stage 1.
Additionally the Foundation is appointed to the new DeputyGuardian role which is able to act as Guardian through the Guardian Safe. This appointment can be revoked by the Security Council Safe at any time.
Even though the appointment of the DeputyGuardian is closer to a change in configuration than version, it is a fundamental component of the Superchain’s security model and thus we are requesting governance approval (as would, we believe, any decision to use the Security Council Safe to modify the DeputyGuardian).
Note that the Guardian role is generally authorized to enforce ‘Safety over Liveness’ in the system, meaning that it can currently pause and unpause withdrawals, and following the Fault Proofs upgrade will be able to intervene in the event that a bug would allow an invalid L2 output to be finalized.
-
Reassigning the owner of the L2ProxyAdmin contract from the Foundation to the Security Council (currently in Phase 0, which is a joint 2/2 multisig between the Security Councils Safe and the Foundation Safe). This ensures the Security Council Safe has a blocking vote for L2 predeploy upgrades and is a requirement for Stage 1.
If this vote passes, we recommend the upgrade be deployed shortly after the end of the veto period.
Specifications
The full specifications for the Liveness Extension and Deputy Guardian system are available from the specs repo.
Technical Details
This upgrade does not affect the node or execution client software.
The following outlines the full set of changes to the existing system:
-
The
SecurityCouncilSafe
is modified to:-
Increase its threshold from 4 to 10. The current owner count is 13 and will remain unchanged with this upgrade.
-
Extend its functionality by enabling new
LivenessModule
andLivenessGuard
contracts.This module and guard comprise a liveness checking mechanism intended to ensure that any loss of access to a signer’s keys is identified and addressed within a predictable period of time.
The maximum time during which an owner will be considered live without having signed a transaction or else explicitly calling the guard to demonstrate liveness, will be
3 months14 weeks. Should an owner not be live during that time, the Module will enable that owner to be removed without requiring a threshold of owners to sign. The duration of 14 weeks is chosen to be slightly longer than 3 months, so that liveness can be demonstrated on a regular quarterly cadence.
In the unlikely event that enough owners are removed to reduce the total number of owners below 8, then the module will enable all owners to be removed and be replaced with the Foundation as the sole owner.
-
-
A new
GuardianSafe
is deployed, which has a threshold of 1, and the Security Council Safe as its only owner.A new
DeputyGuardianModule
is enabled on thisGuardianSafe
. This module enables theFoundationSafe
to call any of the Guardian authorized actions in theSuperchainConfig
andOptimismPortal
contracts.This architecture will allow the Foundation to maintain the fast incident response system it has established, while providing the Security Council Safe with the ultimate authority to:
- override and reverse any Guardian actions taken by the Foundation.
- revoke the capacity to act as the Guardian by disabling the
DeputyGuardianModule
.
-
The
SuperchainConfig
contract is upgraded with theGuardianSafe
in theGuardian
role (the code is unchanged). -
The
L2ProxyAdminOwner
is set to the aliased address of theL1ProxyAdminOwner
, which is the Phase 0 Security Council.The
L1ProxyAdminOwner
(i.e., the Phase 0 Security Council) can now send bridging messages from L1 to L2 to upgrade predeploy contracts on L2. This ensures the Security Council Safe has a blocking vote for L2 predeploy upgrades.The
L2ProxyAdminOwner
is changed by callingtransferOwnership()
onL2ProxyAdmin
with the aliased address of the L1ProxyAdmin.
These contracts are tagged in the optimism repo at commit 9047beb
(tagged as release candidate op-contracts/v1.5.0-rc.1
).
Security Considerations
Code Security
Consistent with the OP Labs Audit Framework, OP Labs had the code audited by a Cantina contest which ended on May 10th. A Lead Security Researcher from Spearbit was also engaged to audit the system in parallel.
This audit uncovered no High severity issues, however a number of improvements were identified which we elected to make in order to reduce the potential for issues resulting from human error. A draft of the report can be viewed here. It will be finalized after the completion of judging and escalation, however OP Labs has reviewed the findings with assistance from the Cantina/Spearbit team and are confident that no High severity issues were identified.
Those changes (all in the LivenessModule
) are:
- A constructor check was removed, which enforced that the Safe’s threshold was greater than 75% of the owner count at the time of the module’s deployment. This check reduces the likelihood of the module being enabled on a misconfigured Safe, but also made the deployment and upgrade process more difficult. The check will instead be done at upgrade time, thus ensuring no loss of safety (PR here).
- Error message handling was modified to be more consistent with other portions of the codebase (PR here).
- The module will be deactivated in the event that ownership of the Security Council Safe is transferred to the
FALLBACK_OWNER
(the Foundation Safe). This mitigates the risk of unexpected behavior when the Safe is operating below the expected minimum number of owners (PR here).
Operational Security
We will also establish monitoring systems for detecting events associated with the code. These systems will detect and alert on the following events:
-
In the
LivenessModule
- When a signer on the Security Council Safe is no longer live and can be removed.
- When a signer is added or removed.
- When the fallback owner is activated.
-
On the Security Council Safe:
- When either the
LivenessModule
orLivenessGuard
are removed or replaced. - When any other module or guard is added or removed.
- When either the
-
On the
DeputyGuardianModule
:When any of the Guardian actions are taken using the module, including:
- Calling
pause
/unpause
on theSuperchainConfig
contract. - Calling
blacklistDisputeGame
,setRespectedGameType
on anOptimismPortal
contract.
- Calling
Proxy Admin Owner Security
According to the Stages framework, one of the requirements for Stage 1 is that “Users’ withdrawals cannot be censored by the permissioned operators”. This means that any vector to halt or censor users’ withdrawals OR steal users’ funds must be controlled by the Security Council.
An attack vector exists whereby the L2ProxyAdminOwner
can potentially steal users’ funds by upgrading L2 predeploy contracts. The specific attack is:
- Upgrade the
L2toL1MessagePasser
contract, - Insert false entries to the
[sentMessages()
mapping](https://github.com/ethereum-optimism/optimism/blob/maur/guardian-module/packages/contracts-bedrock/src/L2/L2ToL1MessagePasser.sol#L24),- One falsified withdrawal per asset is required to access the full balance of each ERC20 (in the Bridge) or ETH (in the Portal)
- Withdraw ERC20s from the Bridge and ETH from the Portal
To ensure “no permissioned operators” can censor users’ withdrawals or steal users’ funds (and therefore satisfy Stage 1 requirements), the L2ProxyAdminOwner
is being transferred from the Foundation Safe to the L2 alias of the Phase 0 Security Council. The Security Council Safe will now have a blocking vote on all L2 predeploy upgrades.
Impact Summary
OP Labs does not anticipate any downtime due to this upgrade. Node operators are not affected. Existing contracts retain their current interfaces in order to remain backward compatible with any existing integrations.
These changes primarily affect the system of ownership and authorization, and serve to increase the decentralization of the Superchain.
Action Plan
If this proposal passes a Token House vote, the L1 contracts will be upgraded following the completion of the Citizens’ House Veto Period following Voting Cycle #23a. The upgrade will be completed atomically such that all affected L1 contracts will be upgraded within a single transaction.
No action is required by node operators, as this is change affects contracts only.
If a critical security issue is discovered before upgrading, OP Labs will collaborate with the community to extensively communicate that the upgrade will no longer occur.
Conclusion
This upgrade moves the Superchain forward in terms of decentralization, while preserving existing incident response capabilities and providing safety against potential liveness failures.