The RegistryAdapter contract does not use ERC-7201 namespaced storage, possibly leading to storage collision when performing delegatecall.
According to the contest's README, Nexus accounts use ERC-7201 namespaced storage to avoid storage collision with modules:
Nexus uses ERC-7201 namespaced storage to avoid data collision and ensure isolated module operations.
However, storage in RegistryAdapter does not follow the ERC-7201 namespaced storage pattern:
As a result, the registry storage variable will be in slot 0 of the Nexus account.
Therefore, if Nexus.execute() or Nexus.executeFromExecutor() is called to perform a delegatecall into a module that uses regular storage, it will overwrite the registry address.
The registry address will potentially be overwritten to corrupted data. This could cause the withRegistry() modifier to incorrectly revert or pass when calling registry.trustAttesters().
Use ERC-7201 namespaced storage for RegistryAdapter as well.
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.