Validator owners of smart accounts are allowed to perform transactions with the wallet. The lack of access control allows anyone call transferOwnership
to become a owner.
The owner address of the smart account is used to validate userOp
as anyone can set themselves to the owner they can pass any transaction they want.
validateUserOp
retrieves the owners address from the smartAccountOwner
mapping to validate the signature. However the owner can be transferred by anyone to themselves
The transfer only ensured the new owner is not a zero address and not a contract. No access control allowing anyone to call transfer validator ownership.
Malicious owners can perform transactions and pass the `validateUserOp`
A compromised validator can steal funds or perform unauthorized actions with the smart account.
Manual Review
Include access control restricting the function to only be called by ModuleManger
- Transfer of ownerships/uninstallation/installation of modules is gated to the caller, wherein the new owner can only adjust the `smartAccountOwners` storing the current owner based on caller (`msg.sender`) that called the `transferOwnership()` function. This functionalities should - Known issue > A Nexus Smart Account could be locked forever if the owner installs a validator in the wrong way and does remove all other valid validators
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.