The MoneyShelf::depositUSDC function sends the USDC to an arbitrary address and since there are no access controls placed in Laundrette::depositTheCrimeMoneyInATM function it allows anyone to call the deposit function using the address of the accounts which approved the USDC to the MoneyShelf and steal the CrimeMoney .
If a user approves USDC to the MoneyShelf then any one can call MoneyShelf::depositUSDC using the Laundrette::depositTheCrimeMoneyInATM function and steal the CrimeMoney.
Prerequisites: For the following test to work add a new address address caponeBege = makeAddr("Capone Bege"); in the Base.t.sol
To the Laundrette::depositTheCrimeMoneyInATM function add the modifier Laundrette:: isAuthorizedOrRevert which will prevent the arbitrary transfer
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.