_isContract(...)
check may be bypassed to install modules on malicious accounts.
The code in question is K1Validator::_isContract(...)
:
The code checks if account
is a contract. It examines the code size of its address. However, if a call is made to this function from within a contract's constructor
, _isContract(account)
returns false
despite account
being a contract.
If all the installation logic is crafted inside a constructor,_isContract(...)
check may be bypassed:
Therefore, a smart contract may own a smart account, undermining K1Validator
trust.
Manual review.
Invalid [known issue [Medium-3]](https://github.com/Cyfrin/2024-07-biconomy/issues/1)
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.