MondrianWallet::_validateSignature function is expected to verify that the signer of the signature is the owner of the contract but it has not implemented a check to verify that the signer of the txn is the owner which leads to _validateSignature always returning SIG_VALIDATION_SUCCESS and any transaction can be executed on behalf of the MondrianWallet and charges the fee from it which will thus drain the wallet.
The vulnerability is present in the _validateSignature function where it doesn't verify that the signer of the txn being executed via the MondrianWallet is actually its owner.
It is actually a necessary check to ensure only transactions that are signed by the owner are to be executed other, but due to the missing check anyone can perform txn via the MondrianWallet and ultimately drain all the balance by passing their own arbitrary data which may include the instruction to transfer ETH or any token to their address in the userOps to be executed by execute function on MondrianWallet.
All the balance of MondrianWallet will get drained.
Manual Review
Add a check to only return SIG_VALIDATION_SUCCESS if the signer is the owner otherwise return SIG_VALIDATION_FAILED.
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.