payForTransaction does not have any access control and, consequently, can be called by anyone any number of times.
payForTransaction is a method intended for paying the Bootloader for transactions. As such, it should be called only by the Bootloader, but this restriction is not implemented. Consequently, anyone can call this function with arbitrary transactions, as demonstrated by the following test:
A malicious user can keep calling payForTransaction until the wallet transfers all of its ether to the Bootloader.
Manual review, Foundry.
Restrict access to the function so that only the Bootloader can call it:
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.