Normal behavior: users who have pending faled ETH transfers in failedTransferCredits should be able to withdraw their funds using withdrawFailedCredits().
Specific issue: the function mistakenly zeros failedTransferCreadits[msg.sender] instead of failedTransferCreadits[_receiver]. this prevents the correct balance from being cleared.
Likelihood:
every time a user calls withdrawAllFailedCredits() for another address, the intended _receiver's balance remains in the mapping
any failed transfers that rely on this mapping will be inconsistently recorded, potentially allowing repeated withdraws.
Impact:
users may lose funds or have credits remain uncleared.
could be exploited to mislead users about available balances or lock ETH in the contract.
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.