General additional checks
There are a few additional checks that we recommend adding in the contract:
The
msg.senderfor the functionsinitForSmartAccount,transferOwnership,addOwner, andremoveOwneris a smart account and therefore a smart contract. Currently, anyone (EOA or smart contract) can call these functions, but as the expected caller is a smart contract, the function should check if the value of_isSmartContract(msg.sender)is true. Currently, this missing check does not cause any security issues.
The length of
eoaOwners.lengthshould be checked and reverted if it is zero. Otherwise, the functioninitForSmartAccountcould be called again.
These issues have been acknowledged by Biconomy, and a fix for issue 2 was implemented in commit