BidBeastsNFTMarketPlace::withdrawAllFailedCredits allows theft of all funds in marketUnder normal circumstances, users should only be allowed to withdraw their own failed credits
BidBeastsNFTMarketPlace::withdrawAllFailedCredits checks the failed transfer credits of the _receiver but updates the failed transfer credits of the msg.sender. This allows _receiver to always have failed credits if the msg.sender is different which then allows an attacker to repeatedly call BidBeastsNFTMarketPlace::withdrawAllFailedCredits until all funds are gone.
Likelihood:
High likelihood as there is direct financial incentive to steal all user funds and the attacker can force failed credits to happen by using a bad contract
Impact:
Direct loss of all user funds in current bids
Direct loss of all failed to transfer credits
Place the following into BidBeastsMarketPlaceTest.t.sol.
Verify that msg.sender has failed transfer credits, not _receiver
Send failed credits to _receiver, not msg.sender
withdrawAllFailedCredits allows any user to withdraw another account’s failed transfer credits due to improper use of msg.sender instead of _receiver for balance reset and 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.