Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

[EP 6.33] [Executable] Enable Root and Registrar Security Controllers

By nick.eth
StatusActive
Discussion ThreadForum
VotesAgora, Tally

Abstract

This proposal enables two break-glass security controllers:

  • RootSecurityController, which can disable a TLD by taking ownership and clearing its resolver.
  • RegistrarSecurityController, which can disable a .eth registrar controller.

Motivation

At present, remediating a compromise or security vulnerability in critical parts of the ENS contracts requires a DAO vote, which takes a minimum of 9 days. This provides a significant window during which an attacker could take advantage of a vulnerability with no way to stop it. This proposal introduces two security controllers, which permit the security council to disable ENS functionality in an emergency, without granting them broad powers over the ENS system.

Enabling the RootSecurityController allows rapid deactivation of a compromised TLD by transferring its ownership to the controller and clearing its resolver. Enabling the RegistrarSecurityController allows the security council to disable problematic registrar controllers, while still retaining DAO control over the base registrar.

These 'negative' powers are in line with the security council's existing remit to veto DAO votes, but constitute an expansion of their powers; unlike the veto power, this one is not time-limited and would require a DAO vote to remove. However, we believe these powers are proportional and necessary. As they are subject to DAO review, the DAO can easily countermand any changes made by the council and/or remove the council's ability to make further changes.

Specification

Description

Batch transaction for ENS DAO execution to enable and configure the security controllers.

Transactions Summary

This proposal contains 4 transactions to be executed by the ENS DAO Timelock.

#ContractFunctionDescription
1RootsetControllerEnable RootSecurityController as a root controller
2Base RegistrartransferOwnershipTransfer registrar ownership to RegistrarSecurityController
3Root Security ControllertransferOwnershipTransfer ownership of RootSecurityController to Security Council Multisig
4Registrar Security ControllersetControllerAdd Security Council Multisig as a controller of RegistrarSecurityController

Detailed Transaction Information

Transaction 1: Enable RootSecurityController on Root

Target: Root

Address: 0xaB528d626EC275E3faD363fF1393A41F581c5897

Function: setController

Parameters:
  • address controller: 0x95123B1ec97df0d3c52c728aB38FBbb7A3ca6da6
  • bool enabled: true

Encoded Calldata: <TBD>


Transaction 2: Transfer Base Registrar ownership to RegistrarSecurityController

Target: Base Registrar Implementation

Address: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85

Function: transferOwnership

Parameters:
  • address newOwner: 0x7dd4d97653A67C2FD7fbA0a84825eC09524D4E1b

Encoded Calldata: <TBD>


Transaction 3: Transfer ownership of RootSecurityController to Security Council Multisig

Target: RootSecurityController

Address: 0x95123B1ec97df0d3c52c728aB38FBbb7A3ca6da6

Function: transferOwnership

Parameters:
  • address newOwner: 0xaA5cD05f6B62C3af58AE9c4F3F7A2aCC2Cdc2Cc7

Encoded Calldata: <TBD>


Transaction 4: Add Security Council Multisig as a controller of RegistrarSecurityController

Target: RegistrarSecurityController

Address: 0x7dd4d97653A67C2FD7fbA0a84825eC09524D4E1b

Function: setController

Parameters:
  • address controller: 0xaA5cD05f6B62C3af58AE9c4F3F7A2aCC2Cdc2Cc7
  • bool enabled: true

Encoded Calldata: <TBD>


Notes / Assumptions

  • RootSecurityController and RegistrarSecurityController are already deployed.
  • Controller ownership is already held by the DAO prior to execution.