The withdrawAllFailedCredits function should enable users to securely withdraw their own accumulated ETH credits that resulted from failed transfer attempts during auction operations. Each user should only be able to access their own funds.
The function implements flawed access control by mixing parameter-based address lookup with sender-based fund transfer, allowing any attacker to specify a victim's address to drain their credits while sending the stolen funds to themselves. The victim's credit balance remains unchanged, enabling repeated theft.
Likelihood: High
The vulnerability is trivially exploitable with a single function call
Failed transfer credits accumulate naturally during normal contract operation
Impact: High
Complete loss of funds for users with accumulated failed transfer credits
This may cause users to not use the platform due to lack of security
Attackers can drain all ETH credits from any user's account in a single transaction
Trust in the marketplace would be destroyed
The attacker can stole anyone's funds with calling the function withdrawAllFailedCredits
Prevents unauthorized access by ensuring only the credit owner can withdraw their funds. Impact: Eliminates the ability for attackers to specify other users' addresses as the _receiver parameter.
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.
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.