The payForTransaction
can be called externally by anybody, an attacker can use this function to transfer all eth from the wallet to the system bootloader denying the user form his funds.
An attacker can send a transaction with values in _transaction.maxFeePerGas
and _transaction.gasLimit
that will cause the wallet to transfer all eth to the system.
payForTransaction
will call _transaction.payToTheBootloader();
which in turn does not have any checks and just transfer amount
.
Deny the user from using his funds in the wallet by transferring it to the system.
Manual review
https://code.zksync.io/tutorials/native-aa-multisig#paying-fees-for-the-transaction
Add requireFromBootLoader
modifier.
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.