During initialization, modules are installed before the ERC-7484 Registry is configured, bypassing any validation checks on the installed modules.
The Bootstrap contract provides a set of utility functions to configure the smart account during initialization. These functions mainly install a set of modules and then configure the ERC-7484 Registry. As an example, this is the implementation of initNexusWithSingleValidator()
, other functions follow the same behavior.
The general pattern is first to install modules and then configure the registry. Module installation functions are decorated with the withRegistry
modifier, this is for example _installValidator()
:
The withRegistry
modifier enforces the registry validation checks on the module, to ensure the module is trusted.
However, since module installation precedes registry configuration, registry checks are bypassed during installation because the registry address is still unset at this point.
Module validation checks are bypassed during account bootstrapping.
None.
Invert the order of operations in the functions of the Bootstrap contract, ensuring _configureRegistry()
comes before any module installation call.
Valid high, since a security feature is compromised, I believe this warrants high severity.
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.