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.